ディレクトリトラバーサル攻撃
2021-12-21 (火) 13:12:16
ディレクトリトラバーサル攻撃 とは †
名称 †
- パストラバーサル攻撃
- Path Traversal
概要 †
- Webページのフォームに相対パスの上位ディレクトリを意味する文字列を含めた不正な入力データを与えることで、サーバ上のファイルに不正なアクセスをする攻撃。
- パス付のファイル名の入力を想定していないプログラムの不備を突き、パス付のファイル名を指定させることで、本来はアクセスされる想定のないファイルにアクセスする攻撃。
- Webページへの入力データをファイル名として使用してサーバ上のファイルをアクセスしている場合に、ディレクトリトラバーサルの脆弱性があると悪用される。
対策 †
- 入力値をファイル名として使用してサーバ上のファイルにアクセスする実装をしない。
- 入力値をファイル名として使用してサーバ上のファイルにアクセスする実装をする場合
- 入力値からディレクトリ名等のパスの部分を除去する(ファイル名のみの状態にする)
- basename関数を使う等
- 入力可能な文字を制限する
- 制限外の文字列が入力された場合はエラーとする
- 相対パスの上位ディレクトリを意味する文字列「/」「../」「..\」「\」
- URLエンコードや二重エンコード「"%25"~」されている上記の文字列
- 入力値からディレクトリ名等のパスの部分を除去する(ファイル名のみの状態にする)
- ディレクトリのアクセス権を適切に設定する。
ディレクトリ参照によりディレクトリ構造の情報が漏れることの防止 †
- デフォルトページ(index.htmlなど)を漏れなく配置する。
実装例 †
- PHP
- basename関数を使う
関連サイト †
- CWE-22: Improper Limitation of a Pathname to a Restricted Directory ('Path Traversal')
https://cwe.mitre.org/data/definitions/22.html
- CWE-22 パス・トラバーサル - JVN
https://jvndb.jvn.jp/ja/cwe/CWE-22.html
- 安全なウェブサイトの作り方 - 1.3 パス名パラメータの未チェック/ディレクトリ・トラバーサル - IPA
https://www.ipa.go.jp/security/vuln/websecurity-HTML-1_3.html