インクルードにまつわる問題
書籍を読んで
www.amazon.co.jp [:contents] こちらの書籍を読んでWebアプリケーションを作る際に重要な要点を自分用としてアウトプットします。
インクルードにまつわる問題
外部からスクリプト一部を読み込むインクルード機能にまつわる脆弱性について
ファイルインクルード攻撃
- PHPなどのスクリプト言語には、スクリプトのソースの一部を別ファイルから読み込む機能がある
- includeなどに指定するファイル名を外部から指定できる場合
- アプリケーションが意図しないファイルを指定することにより脆弱となる場合がある
- ファイルインクルード脆弱性と呼ぶ
脆弱性が生まれる原因
- インクルードファイル名を外部から指定することができる
- インクルードすべきファイル名かどうかの妥当性チェックをしていない
対策
- 外部からファイル名を指定する仕様を避ける
- ファイル名を英数字に限定する
保険的対策
- RFI設定を禁止する
- PHP5.2.0以降ではデフォルトで禁止されているはずだが、念のため確認する
- phpinfo関数の表示からallow_url_inlude項目がoffになっていることを確認する
まとめ
PHPではファイルを動的にインクルードする手法が定石的に使わているが、 ファイル名のチェックが不十分な場合は、ファイルインクルード攻撃を許す脆弱性が混入する。 影響の大きな脆弱性なので、十分な対策が推奨される。