Laravel(ignition)の脆弱性「CVE-2021-3129」再現と分析と注意喚起

laravelの脆弱性がAPTで使用されているようであり、ハニーポットでも攻撃を観測しているとのことでした。

どのような脆弱性なのかを検証してみようと思います。

※この記事で知り得たことを悪用することは禁止とします。

Laravelとは?

PHPのフレームワークです。 

http://laravel.jp/

今回の脆弱性はLaravelで使用されている「ignition」との組み合わせ脆弱性となります。

ignitionとは?

laravelで使用されている、エラーページ用のOSSです。

https://github.com/facade/ignition

脆弱なバージョン

laravel8.4.2以下かつignition 2.5.1以下

脆弱性について

laravel8.4.2以下かつignition 2.5.1以下の場合に、リモートから認証なしでOSコマンド実行が可能です。

https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2021-3129

対策

  • laravelのバージョンアップ(8.4.3以上)
  • ignitionのバージョンアップ(2.5.2以上)

緩和策

  • デバッグモードを無効にする。
  • ログファイルを規定の場所に置かない、規定のファイル名から変える。
    (ログファイルにコマンド実行するための文字を書き込むため、ファイル名がわからないとどうしようもない)

再現

修正前

1.環境確認
脆弱性があるignition2.5.1を使用します。

2.起動確認
起動はしました。

3.脆弱性使用
詳細は伏せていますが、攻撃コードを使用することでOSコマンドの実行ができています。

修正後(ignition)

1.環境確認
修正されたignition2.5.2を使用します。

2.脆弱性使用
脆弱性をしようとしても、ただ応答するだけでコマンド実行ができませんでした。
ログファイルをどうこうしてコマンド実行するのですが、ログファイルにも書き込みはありませんでした。

修正後(laravel 8.4.3以上)

詳細を伏せざるを得ないので、説明が全くできませんが、成功時は「200」応答だったリクエストが「500」応答になっていました。

デバッグモード無効時

デバッグモードを無効にすると、404となり悪用できなくなります。

この脆弱性から得られること

ignitionの修正点

2.5.1と2.5.2の差異
src/Solutions/MakeViewVariableOptionalSolution.php 

https://github.com/facade/ignition/compare/2.5.1…2.5.2

本来は「.blade.php」と最後についたファイルを修正するのが正しい目的です。

デバッグモードでのみ有効なため、簡単な修正を自動的に実施してくれるツールです。

そのため、修正する対象は「.blade.php」が最後につくファイルのみです。

また、ファイルが対象となるため、「php://」や「phar://」といったスキーマも受け付けなくなりました。

laravelの修正点

8.4.2と8.4.3の差異
config/broadcasting.php
config/cache.php 

https://github.com/laravel/laravel/compare/v8.4.2…v8.4.3

全くわかりませんでした。
わかる方いらっしゃったら教えてください。

攻撃側として

  • デバッグモードになっている際はその時だけ使える機能を気にする
  • OSSの場合はソースコードを確認する
  • OSSの場合はローカルで検証する

防御側として

  • デバッグモードのまま公開しない
  • 取り扱う対象が明確な場合は厳密なチェックを行う

参考

発表記事 

https://www.ambionics.io/blog/laravel-debug-rce

おわりに

以下記事を見つけて検証してみようと思いました。 

https://qiita.com/reopa_sharkun/items/f3819b2e8727728da82a

一般ユーザにも悪用事例が出ているので、速攻アップデート・緩和策実施を推奨します。

実際どんなpocを実行して、どんなリクエストが送信されたかなどは把握していますので、興味ありましたら私までご連絡ください。

【PR】コミュニティの紹介

サイバーセキュリティ情報共有コミュニティをやっています。

インシデント例や脆弱性情報などを取り扱っています。

毎週金曜日はボイスチャットにて雑談会を行っています。

ご興味ありましたらご参加いただけると嬉しいです!

参加はこちら!

スポンサーリンク
スポンサーリンク
ブログ村
PVアクセスランキング にほんブログ村
この記事を書いた人
脆弱性を見つける仕事をしています。 Twitter https://twitter.com/Nick_nick310
SNSでフォローする

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です