3年前にMonth of PHP Buug
MOPBのレポートもこのサイトで公開されています。PoCは当初は公開されていましたが、
Stefan Esser氏に許可を得たので、
Month of PHP Securityとは
MOPBは個人プロジェクトとして行われましたが、
公開されたバグ
全部で61のセキュリティ関連のバグが公開され、
緊急性の低いバグとはいえ、
公開されたバグには攻撃用のPHPスクリプトを利用すれば、
公開されたバグの一覧
- hash_
update_ file関数の解放済リソースへのアクセス - Campsite
(PHPアプリ) のTinyMCEモジュールの添付モジュールSQLインジェクション - PHPのdechunkフィルタの符号付き整数比較
- ClanSphere
(PHPアプリ) のCaptchaのブラインドSQLインジェクション - ClanSphere
(PHPアプリ) のMySQLドライバの一般ブラインドSQLインジェクション - PHPのaddslashes関数への割り込み脆弱性
- ClanTiger
(PHPアプリ) のshutboxモジュールのs_ email SQLインジェクション - PHPのchunk_
slipt関数への割り込み脆弱性 - PHPのshm_
put_ var関数の解放済リソースへのアクセス - PHPのhtmlentities関数の割り込みメモリ情報リーク
- DeluxBB
(PHPアプリ) のSQLインジェクション脆弱性 - PHPのsqlite_
single_ query関数の未初期化メモリへのアクセス - PHPのsqlite_
array_ query関数の未初期化メモリへのアクセス - ZEND_
BW_ XORオペコードへの割り込みによるアドレス情報リーク - ZEND_
SLオペコードへの割り込みによるアドレス情報リーク - ZEND_
SRオペコードへの割り込みによるアドレス情報リーク - PHPのpreg_
quote関数への割り込みによるアドレス情報リーク - EFront
(PHPアプリ) のask_ chat, chatroom_ IDへのSQLインジェクション - Serendipity
(PHPアプリ) WYSIWYGエディタプラグイン設定インジェクション - Xhina
(PHPアプリ) WYSIWYGエディタプラグイン設定インジェクション - PHP fnmatch関数スタック枯渇
- リクエスト終了処理後のPHPストリームコンテクストの解放
- Cacti
(PHPアプリ) のグラフビューアーSQLインジェクション - PHPのphar_
stream_ flushフォーマット文字列脆弱性 - PHPのphar_
wrapper_ open_ dirフォーマット文字列脆弱性 - PHPのphar_
wrapper_ unlinkフォーマット文字列脆弱性 - PHPのphar_
parse_ urlフォーマット文字列脆弱性 - PHPのphar_
wrapper_ openurlフォーマット文字列脆弱性 - CMSQlite
(PHPアプリ) のcパラメータSQLインジェクション - CMSQlite
(PHPアプリ) のmodパラメータローカルファイルインクルード - e107のlongnameユーザ設定のSQLインジェクション
- PHPのiconv_
mime_ decode関数への割り込みによるメモリ情報リーク - PHPのiconv_
substr関数への割り込みによるメモリ情報リーク - PHPのiconv_
mime_ decode関数への割り込みによるメモリ情報リーク(その2) - e107のBBCodeリモートコード実行
- PHPのhtmlentities関数とhtmlspecialchars関数への割り込みによるメモリ情報リーク
- PHPのstr_
getcsv関数への割り込みによるメモリ情報リーク - PHPのhttp_
build_ query関数への割り込みによるメモリ情報リーク - PHPのstrpbrk関数への割り込みによるメモリ情報リーク
- PHPのstrtr関数への割り込みによるメモリ情報リーク
- PHPのstrip_
tags関数への割り込みによるメモリ情報リーク - PHPのsetcookie関数への割り込みによるメモリ情報リーク
- PHPのstrtok関数への割り込みによるメモリ情報リーク
- PHPのwordwrap関数への割り込みによるメモリ情報リーク
- PHPのstr_
word_ count関数への割り込みによるメモリ情報リーク - PHPのstr_
pad関数への割り込みによるメモリ情報リーク - PHPのtrim/
rtrim/ ltrim関数への割り込みによるメモリ情報リーク - PHPのsubstr_
replace関数への割り込みによるメモリ情報リーク - PHPのparse_
str関数への割り込みによるメモリ破壊 - PHPのpreg_
match関数への割り込みによるメモリ情報リーク - PHPのunpack関数への割り込みによるメモリ情報リーク
- PHPのpack関数への割り込みによるメモリ情報リーク
- ZEND_
FETCH_ RWへの割り込みによるメモリ情報リーク - ZEND_
CONCAT/ ZEND_ ASSIGN_ CONCATへの割り込みによるメモリ情報リークと破壊 - ArrayObject::usortメソッドへの割り込みによるメモリ破壊
- php_
mysqlnd_ ok_ read関数への割り込みによるメモリ情報リーク - php_
mysqlnd_ rset_ header_ read関数のバッファオーバーフロー - php_
mysqlnd_ read_ error_ from_ line関数のバッファオーバーフロー - php_
mysqlnd_ auth_ write関数のスタックオーバーフロー - PHPのセッションシリアライザの問題によるセッションデータインジェクション
- PHPのSplOjbectStorageデシリアライゼイションのメモリ解放後のメモリアクセス
ここで報告された脆弱性の多くは最新版のPHP 5.
この一覧を見ると割り込みによるメモリ情報リークのバグが多くレポートされていることが分かります。次回にこの脆弱性がどのような脆弱性か解説します。3年前のMOPBで指摘された脆弱性で現在でも修正されていない
このほかにも新しく追加されたmysqlndドライバにスタックオーバーフローやヒープオーバーフローなど、
公開された論文
10のPHPセキュリティ関連の論文が公開され、
論文の一覧
- 新しいオープンソースのツール:OWASP ESAPI for PHP
- コンテクストを検知するHTMLエスケープ
- sqlite_
single_ query(), sqlite_ array_ query()の未初期化メモリの利用 - 予測不可能なセッションIDとハッシュの生成
- Minerva PHP Fuzzer
- PHPにおける変数の初期化
- 我々の動的PHP - 明白および明白でないPHPコードの挿入の実行
- shuhosinモジュール用の設定暗号化パッチ
- PHPソースコードの脆弱性を分析する静的ソースコードアナライザ
- PHPアプリケーションにおけるユーザのパスワードと管理手法
これらの論文のうち2、
まとめ
MOPBはPHP本体のセキュリティを向上させるために非常に役立ったプロジェクトでした。しかしならが、
MOPBがPHPのセキュア化に大きく貢献したように、