第8章 入力検査
受信ファイルの検査
受信ファイルがもたらすセキュリティ侵害
ネットワーク通信を介してファイルを受信する場合、そのファイルの中に攻撃が仕込まれていることを想定する必要がある。
受信ファイルがもたらす被害には、次のものが考えられる。
- ニセモノの指令やデータを受け取る
- ウイルスやトロイの木馬が含まれたファイルを受け取る
- ファイルの格納先パラメータが細工されていて、システムの重要なファイルが上書きされる
- 巨大なファイルが多数送りつけられて来て、システムがサービス不能状態に陥る
- 受信ファイルのデータの中に、バッファオーバーフロー攻撃、フォーマット文字列攻撃、整数オーバーフロー攻撃等が仕込まれていて、このファイルを解釈・再生するロジック──例えば、マルチメディアファイル再生ライブラリ──が攻撃を受ける
- 受信ファイルの中に埋め込み型Webアプリケーションプログラミング言語──PHP等──のスクリプトが含まれており、それを別のスクリプトからinclude命令等で呼び出すよう仕向けられる
- 不正な内容を含むファイルをWebサイトへの掲載等を通じて、多数のユーザに配布してしまう

受信ファイル対策
受信ファイルがもたらす被害に対しては、次のような対策が必要である。
(1) ニセモノの指令やデータが送られてくる問題
次のふたつを行う。
- 相手の正しさの確認──適切に構築された本人認証手順を踏む
- 受信内容の正しさの確認──次のいずれかの対策を講じる。
・暗号化された通信経路を用いる
・ファイルを暗号化する
・ファイルに電子署名を付ける 等
(2) ウイルスやトロイの木馬の問題
ウイルス等を検査するための呼び出しを行う
(3) ファイル格納先の問題
格納先パス名パラメータへの検査を厳密に行い、特定ディレクトリ下以外には格納しないようにする
(4) 巨大ファイルの多数受信の問題
ファイルのサイズ、個数を認識し、数量的制限を設ける
(5) バッファオーバーフロー攻撃パターン等が仕込まれたファイルの問題
- ファイルの解釈・実行に他者提供ライブラリを利用している場合、次を行う
- 最新バージョンの使用とセキュリティパッチの適用
- ファイルを解釈・実行するのが自社開発プログラムである場合、次を行う。
- ファイル内のデータ個数やデータ長の記述を評価する際、整数オーバーフローが起こらないように演算と転記を行う
- データを転記する際、領域あふれを起こさないようにする
- フォーマット編集関数──printf()、syslog()等──の書式引数にファイルから得た文字列を与えないようにする
(6) ファイルに埋め込まれたWebスクリプトの問題
Webスクリプトで他ファイルをinclude命令等で呼び出す際、特定ディレクトリ下以外のファイルを呼び出さないよう制限を設ける
(7) 問題のあるファイルの配布の問題
十分な検査をパスしたファイルのみを開示するように制限を設ける
マルチメディア系の再生ライブラリに注意
画像、音声、動画等のマルチメディアコンテンツファイルを再生するライブラリソフトウェアにはしばしば脆弱性が見つかっている。その背景には、マルチメディアコンテンツのファイルフォーマットは多くの構成部分から成り、要素の個数やデータの長さ等を記述するフィールドが複雑に配置されていることが挙げられる。
また、これらのライブラリソフトウェアの脆弱性対策が必ずしも円滑に進まない事情もある。権利者からライセンスを受けて利用する形態のライブラリの場合、脆弱性対策を施す必要があっても、それを利用してソフトウェアを構築する側による検査と改造が困難である。
ファイル関連ライブラリの脆弱性についてのいくつかの例を、次に挙げる。ただし、これらはごく一部であり、ほかにも多数の脆弱性情報がある。(出典: http://cve.mitre.org/)
CVE-2007-4033 php_gd2.dll(グラフィク)
CVE-2007-3641 libarchive(圧縮アーカイブ、FreeBSD)
CVE-2007-3121 Zapping VBI Library(テレビ画像)
CVE-2007-3106 libvorbis(オーディオ)
CVE-2007-2981,CVE-2007-2787 LEADTOOLS(画像処理)
CVE-2007-2919 FlipViewerX.dll(電子ブック)
CVE-2007-2645 libexif(デジタルカメラデータ)
CVE-2007-2498,CVE-2007-1921 Winamp(音声)
CVE-2007-2222 Xlisten.dllとXvoice.dll(Microsoft Internet Explorerの音声処理)
CVE-2007-1997 Clam AntiVirus(ウイルス対策)
CVE-2007-1910 wwlib.dll(ワードプロセッサファイル、Microsoft Word)
CVE-2007-1614 ZZIPlib(圧縮アーカイブ)
まとめ
プログラムがネットワーク等を通じて受信するファイルには、攻撃パターンが潜んでいるおそれがある。複数種類の侵害ケースがあり得、それぞれ備える必要がある。
既存ライブラリを利用してマルチメディア系のコンテンツを再生する場合は、それらのライブラリに潜む脆弱性への対処も欠かせない。