レガシーPHPのセキュリティ対策,大丈夫ですか?

第7回 未修正の脆弱性(4)

この記事を読むのに必要な時間:およそ 2 分

今回も引き続き未修正の脆弱性とパッチを適用しない場合の対処を順次紹介していきます。繰り返しになりますが,脆弱性の危険度の順ではなくパッチファイル名の順番に紹介します。紹介する脆弱性情報はSRA OSS Inc日本支社にてPHP4セキュリティ保守サービスとして提供しているものです。パッチ類は筆者の会社であるエレクトロニック・サービス・イニシアチブが,現状サポートされているPHPからレガシーPHPにバックポートしています。パッチの説明文を引用して脆弱性を解説します。パッチそのものの紹介は含みませんのでご了承ください。

PHP 4.3.9の評価は,PHPプロジェクトが配布しているソースコードではなくRedHat Enterprise Linux 4で提供されているPHPのSRPM(ソースRPM)のソースコードがベースになっています。PHP 5.1.6についてはPHPプロジェクトが配布しているソースコードがベースとなっています。このため,RedHat Enterprise Linux 5で修正されている問題も含まれていることがあります。

CVE/NVDについては第2回目のCVEの読み方で紹介しました。CVE/NVDの解説が必要な方はそちらをご覧ください。

escapeshellcmd関数の問題

適用
必須
対象
PHPコア
バージョン:5.1.6/4.4.9/4.3.11/4.3.9
CVE情報
CVE-2008-2051
Impact
CVSS Severity (version 2.0):
CVSS v2 Base Score:10.0 (HIGH) (AV:N/AC:L/Au:N/C:C/I:C/A:C) (legend)
Impact Subscore: 10.0
Exploitability Subscore: 10.0
CVSS Version 2 Metrics:
Access Vector: Network exploitable
Access Complexity: Low
**NOTE: Access Complexity scored Low due to insufficient information
Authentication: Not required to exploit
Impact Type:Provides administrator access, Allows complete confidentiality, integrity, and availability violation; Allows unauthorized disclosure of information; Allows disruption of service
種別
セキュリティ
解説

escapeshellcmd()/escapeshellarg()は文字エンコーディングを考慮したエスケープ処理を行っていません。このパッチはシステムが標準的に提供しているmblen()関数を利用して文字エンコーディングを考慮したエスケープ処理を行うようにします。

システムにmblen()関数が無い場合,文字エンコーディングを考慮したエスケープ処理は行われないので注意してください。

またmblen()の挙動は環境変数によって制御されます。UNIX系システムの場合,LC_CTYPEが正しく設定されている必要があります。

互換性
互換性問題はありません。
攻撃手法
escapeshellcmg()/escpaeshellargs()に渡すパラメータに不正な文字エンコーディングや攻撃用の文字列を設定し,システム上で任意のコマンドを実行します。
攻撃が成功した場合影響
任意コマンドが実行できるため,Webサーバ権限によりコマンドの実行,ファイルの読み取り,書き込みが可能になります。

CVEではescapeshellcmd関数のみ記載されていますが,実際にはescapeshellargs関数にも影響があります。

回避策

入力バリデーションで不正な文字エンコーディングを拒否します。

リスク

攻撃が成功するかどうかはシステムやシステム設定によって異なりますが,日本のサーバーでのリスクは高いと考えられます。

EXIFモジュールのバッファオーバーフロー

適用
オプション
対象
exif
バージョン:5.1.6/4.4.9/4.3.11/4.3.9
CVE情報
CVE-2009-3292
Impact
CVSS Severity (version 2.0):
CVSS v2 Base Score:7.5 (HIGH) (AV:N/AC:L/Au:N/C:P/I:P/A:P) (legend)
Impact Subscore: 6.4
Exploitability Subscore: 10.0
CVSS Version 2 Metrics:
Access Vector: Network exploitable
Access Complexity: Low
**NOTE: Access Complexity scored Low due to insufficient information
Authentication: Not required to exploit
Impact Type:Allows unauthorized disclosure of information; Allows unauthorized modification; Allows disruption of service
種別
セキュリティ
解説
exif_read_file関数で不正なJPEGファイルを読み込んだ場合,パラメータが正しく初期化されずメモリ内容を不正に参照される可能性がありあす。
互換性
互換性問題はありません。
攻撃が成功した場合の影響
メモリ内の機密情報を盗まれたり,任意コード実行を許す可能性があります。
変更履歴
2008/8/31 バリデーションコードを追加(CVE-2009-3292)

ExifとはJPEGファイルなどに含まれているメタデータです。画像のアップロードを許可しているアプリケーションなどではよく利用されている機能です。

回避策

PHPスクリプトでイメージファイルのヘッダを読み込み不正なデータが含まれていないか解析することもできないことはないですが,あまり現実的とは言えません。問題を回避するにはExifモジュールを利用しないようにします。

リスク

メモリ内容の漏洩とバッファーオーバーフローが発生するため,攻撃されるリスクは高いと考えられます。

explode関数の不正メモリ参照

適用
必須
対象
PHPコア
バージョン:5.1.6/4.4.9/4.3.11/4.3.9
CVE情報
CVE-2008-3659
Impact
CVSS Severity (version 2.0):
CVSS v2 Base Score:6.4 (MEDIUM) (AV:N/AC:L/Au:N/C:N/I:P/A:P) (legend)
Impact Subscore: 4.9
Exploitability Subscore: 10.0
CVSS Version 2 Metrics:
Access Vector: Network exploitable
Access Complexity: Low
Authentication: Not required to exploit
Impact Type:Allows unauthorized modification; Allows disruption of service
種別
セキュリティ
解説
explode関数が,文字列が空の場合に指定された負のlimit値をチェックしていないため,本来アクセスできないはずのメモリ領域の内容を参照可能になっていた不具合を修正します。
互換性
互換性問題はありません。
攻撃手法
空の文字列と負のlimit値を設定して,メモリレイアウトやメモリ内のカナリア値を取得します。この脆弱性単体で任意コードの実行はできませんが,任意コード実行に必要な情報の取得に利用される可能性があります。攻撃専用のスクリプトが必要です。
攻撃が成功した場合影響
システム上で任意コードを実行されます。

このexplode関数の不具合を利用した具体的な攻撃コードが存在します。複数のユーザがシステムを共有する環境での影響は大きいです。

回避策

リモートからの攻撃では有効な攻撃は難しいと考えられます。

リスク

共有環境でユーザが実行できる機能を制限していても,その機能を回避されます。WebサーバがSSL対応の場合,メモリ上に保存された秘密鍵を盗まれる可能性があります。

まとめ

レガシーPHPには確実にリスクが潜んでいます。アップグレードが最良ですが,さまざまな理由でできない場合もあるでしょう。少なくとも既知の脆弱性の影響を受けないようこの情報を活用してください。

著者プロフィール

大垣靖男(おおがきやすお)

University of Denver卒。同校にてコンピュータサイエンスとビジネスを学ぶ。株式会社シーエーシーを経て,エレクトロニック・サービス・イニシアチブ有限会社を設立。
オープンソース製品は比較的古くから利用し,Linuxは0.9xのころから利用している。オープンソースシステム開発への参加はエレクトロニック・サービス・イニシアチブ設立後から。PHPプロジェクトでは,PostgreSQLモジュールのメンテナンスを担当している。

URLhttp://blog.ohgaki.net/

著書

コメント

コメントの記入