TAチームが 「PHPスタック・バッファ・オーバーフローの脆弱性 」を解析して書いた脆弱性レポート
CVE-2023-3824 は、PHP におけるスタックバッファオーバーフローの脆弱性で、 PHAR (PHP Archive) ファイルを読み込む際に発生します。この脆弱性により、攻撃者は感染したシステム上でメモリ破壊を引き起こしたり、 リモートでコードを実行されたりする可能性があります。このリスクを軽減するためには、PHP を最新のバージョンに更新し、 PHAR ファイルを扱う際に適切な検証を行うことが重要です。
Tags: PHP, Stack buffer overflow, Remote Code Execution, CVE-2023-3824, phar archive
1. 概要
この脆弱性は、8.0.30 より前の PHP バージョン 8.0.*、8.1.22 より前の PHP バージョン 8.1.*、および 8.2.8 より前の PHP バージョン 8.2.* に存在します。この問題は、PHP が PHP Archive (PHAR) ファイルを処理する方法に関連しています。具体的には、PHAR ディレクトリのエントリを読み込む際の長さチェックが 不十分で、スタックバッファオーバーフローを引き起こす可能性があります。この脆弱性は、メモリ破壊やより重要なリモートコード実行 (RCE) を引き起こす可能性のある攻撃です。
2. 攻撃タイプ
この脆弱性は、PHP 内に悪意のある Phar ファイルを作成し、バッファオーバーフローの脆弱性を引き起こします。
1. 新しい PHP ファイルを作成し、そこにコードを追加します。
2. PHPスクリプトを実行し、悪意のあるPharファイルを生成する。
上記のスクリプトが実行されると、バッファ・オーバーフローとオーバーリードがトリガーされ、脆弱性につながる。
この脆弱性を悪用することは難しく、ターゲットとなるアプリケーションに大きく依存しますが、スタック情報のリークとバッファオーバーフローの組み合わせによって悪用される可能性があるため、注意が必要です。
EX)
このコードをValgrind(LinuxベースのオープンソースのDBIツール)で実行すると、問題が表示される。
strlen()関数がd_nameバッファを適切にNUL終端しないため、オーバーリードが始まる。
3. 対応
CVE-2023-3824 脆弱性に対する普遍的な対応は以下の通りです。
- PHP のバージョンを最新のセキュリティパッチで更新する。
- 脆弱性が発生する Phar ファイルに関連する機能を見直し、セキュアにする。
- サーバーレベルでのアクセス制御を強化し、WAF機能でデータをブロックする。
4. 結論
CVE-2023-3824 は PHP に存在する重大な脆弱性であり、深刻なセキュリティリスクをもたらす可能性があります。この脆弱性を悪用されると、 攻撃者はスタックバッファオーバーフローを利用してリモートでコードを実行したり、 メモリ破壊を引き起こしたりする可能性があります。これらのリスクを軽減するためには、PHP を最新のパッチ適用済みバージョンに更新し、 Phar ファイルを扱う際には厳格なセキュリティ対策を実施することが重要です。