コネクト株式会社 技術情報コンテンツ | ||
概要PHPの定義済のグローバル変数である「$GLOBALS」を「スクリプト外部から上書きできる」 というセキュリティ情報が公開されました。 この変数 $GLOBALS は、 PHP スーパーグローバル をすべて含んでいます。 現在、PHPを利用したアプリケーションではこれらの「スーパーグローバル変数」は、 ほとんどが利用していると思います。 また、$GLOBALS は、 $GLOBALS['xxx'] = 'yyy'; のようにして「スクリプトのすべてのスコープで有効」な変数をユーザが作成することも可能ですので、 使い方によっては非常に便利です。 しかし、この変数を、外部から上書きできることが今回の問題です。 注意するスクリプト(設定)の記述例*1
などの場合に、注意が必要と考えられます。 要は、 PHPの外部からくる変数 をスクリプト内部で登録する部分の記述が重要になります。 パラメータの値をサニタイズを行うときに、パラメータ名も確認するべきです。 『「スクリプト内で受け取らない(使用しない)パラメータ」は変数として登録 (上書き)しない。』 というスクリプト記述をしていれば、この脆弱性に影響される事は無いという事になります。 参考サイトURL
|