編集部からのお知らせ
解説集:台頭するロボット市場のいま
解説集:データ活用で考えるデータの選び方

サイト脆弱性をチェックしよう!--第7回:「ディレクトリトラバーサル」と「強制ブラウジング」 - (page 3)

池田雅一(テクマトリックス)

2007-12-14 21:01

対策

 ディレクトリトラバーサル対策でもっとも確実な方法には、以下のようなものが考えられる。

1. Webアプリケーションがアクセス可能なディレクトリ(たとえば、/var/data/)と、その配下にあるファイルのファイル名(これが入力データとなる。たとえば、../../../etc/passwd)を組み合わせたパス(この例であれば、/var/data/../../../etc/passwd)を開発言語などが用意している方法で正規化する。

2. 正規化されたパス(先の例であれば、/etc/passwd)がアクセス可能なディレクトリ(先の例であれば、/var/data)の配下にあるかどうかを確認する。これには、正規化されたパスがアクセス可能なディレクトリに前方一致しているかどうかを確認する。

3. 前方一致している場合のみ、ファイルの読み書きを行う。

 パスの正規化を開発言語などでサポートしていない場合、開発者がパスの正規化を自作する必要がある。しかし、そのようなコードを作成する代わりに、ディレクトリを区切る文字を含まない場合のみファイルの読み書きを行うことなどで対策が可能だ。

 この方法の場合、文字コードの違いによる影響についても考慮する必要があるため、除外する文字があることを検出する方法(いわゆるブラックリスト方式)は推奨できない。

 使用するファイルが制限されているのであれば、ファイル名を直接指定するのではなく、使用するファイル名を配列などで管理しておき、Hiddenフィールドなどの入力データとして、配列の添え字を指定することで、容易にこの脆弱性が存在しないアプリケーションを作成することができる。

強制ブラウジングとは

 強制ブラウジングは、ユーザーが本来アクセス権限のないファイルまたはページにアクセスできる脆弱性だ。

 この脆弱性が原因となった事件として、もっとも有名なものは2002年に発生したTBCからの個人情報漏えい事件だ。この事件は、使用していたウェブアプリケーションで、本来利用者にアクセスされてはいけない個人情報を含むファイルをウェブサーバのドキュメントルート上に保存していたため、ウェブサーバ経由で誰でも取得可能になっていたというものだ。

 また、1年前まで、会員制サイトにユーザーがアップロードした画像が、会員でないユーザーにもアクセス可能だった。これは、セッション管理が適切に行われておらず、適切なアクセス制御がなされていなかったためだ。

 このように、この脆弱性は、データの保存場所の問題だけでなく、セッション管理の問題も原因となる。

ZDNet Japan 記事を毎朝メールでまとめ読み(登録無料)

Special PR

特集

CIO

セキュリティ

スペシャル

NEWSLETTERS

エンタープライズ・コンピューティングの最前線を配信

ZDNet Japanは、CIOとITマネージャーを対象に、ビジネス課題の解決とITを活用した新たな価値創造を支援します。
ITビジネス全般については、CNET Japanをご覧ください。

このサイトでは、利用状況の把握や広告配信などのために、Cookieなどを使用してアクセスデータを取得・利用しています。 これ以降ページを遷移した場合、Cookieなどの設定や使用に同意したことになります。
Cookieなどの設定や使用の詳細、オプトアウトについては詳細をご覧ください。
[ 閉じる ]