PHP の multipart_buffer_headers 関数における実装上の問題により遠隔からサービス運用妨害 (DoS) が可能な脆弱性(Scan Tech Report) | ScanNetSecurity
2024.04.19(金)

PHP の multipart_buffer_headers 関数における実装上の問題により遠隔からサービス運用妨害 (DoS) が可能な脆弱性(Scan Tech Report)

PHP において multipart/form-data ヘッダをパースする main/rfc1867.c のmultipart_buffer_headers 関数には、細工された multipart/form-data リクエストを処理する際に CPU リソースを過度に消費してしまう脆弱性が存在します。

脆弱性と脅威 エクスプロイト
◆概要
PHP において multipart/form-data ヘッダをパースする main/rfc1867.c の
multipart_buffer_headers 関数には、細工された multipart/form-data リ
クエストを処理する際に CPU リソースを過度に消費してしまう脆弱性が存在
します。
攻撃者は本脆弱性を利用することで、遠隔から対象システムの CPU リソース
を過度に消費し、サービス運用妨害 (DoS) を行なうことが可能です。

◆分析者コメント
本脆弱性は PHP の処理系に発見された脆弱性で、問題となった箇所のソース
コードおよび修正パッチの内容を確認したところ、実行する処理が効率的な
実装になっていなかったために生じた問題でした。
緩和策は公開されておらず、該当ソフトウェアのアップデートが対策として
公開されています。
脆弱性の影響を受ける PHP が動作している場合、公開している PHP スクリ
プトの内容に関わらず攻撃の影響を受けるため、ソフトウェアアップデート
の速やかな実施を推奨します。

◆深刻度(CVSS v2)
5.0
https://web.nvd.nist.gov/view/vuln/detail?vulnId=CVE-2015-4024

◆影響を受けるソフトウェア
PHP 5.4.41 未満
PHP 5.5.25 未満の 5.5.x
PHP 5.6.9 未満の 5.6.x

◆解説
PHP の multipart_buffer_headers 関数における multipart/form-data の
パース処理では、行頭が空欄でなくかつ : が存在しない行に対する処理と
して、新たに確保したメモリ領域にひとつ前の行の値と該当する行を結合
させた文字列を作成します。
この処理の対象となる行が多数存在すると、処理が進むごとに確保するメ
モリ領域のサイズおよびコピーする文字列の長さが増加するため、過度に
CPU リソースを消費してしまい、サービス拒否状態を起こしてしまいます。

◆対策
脆弱性が解消されているバージョンへの PHP アップデートの実施、
または手動でのパッチ適用により当該脆弱性を解消することが可能です。

◆関連情報
[1] The PHP Group
https://bugs.php.net/bug.php?id=69364
[2] CVE Mitre
https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2015-4024
[3] Apple 社
http://lists.apple.com/archives/security-announce/2015/Aug/msg00001.html
[4] Oracle 社
http://www.oracle.com/technetwork/topics/security/bulletinjul2015-2511963.html
[5] Turbolinux
http://www.turbolinux.co.jp/security/2015/TLSA-2015-15j.html

《株式会社ラック デジタルペンテスト部》

関連記事

Scan PREMIUM 会員限定記事

もっと見る

Scan PREMIUM 会員限定記事特集をもっと見る

カテゴリ別新着記事

「経理」「営業」「企画」「プログラミング」「デザイン」と並ぶ、事業で成功するためのビジネスセンスが「セキュリティ」
「経理」「営業」「企画」「プログラミング」「デザイン」と並ぶ、事業で成功するためのビジネスセンスが「セキュリティ」

ページ右上「ユーザー登録」から会員登録すれば会員限定記事を閲覧できます。毎週月曜の朝、先週一週間のセキュリティ動向を総括しふりかえるメルマガをお届け。(写真:ScanNetSecurity 名誉編集長 りく)

×