ディレクトリトラバーサルとは?でぃれくとりとらばーさる
ディレクトリトラバーサルとは、利用者が指定したファイル名をもとにサーバ上のファイルを読み書きするWebアプリに対し、「../」などの相対パスを混ぜ込んで、公開してよい範囲の外にあるファイルへアクセスする攻撃。パストラバーサルとも呼ばれる。
最終更新:2026-10-09
この語が出る過去問を解く →背景
ファイル名をパラメータで受け取り、そのままつなげてパスを組み立てる実装は書きやすく、素朴に作れば自然とこの形になる。ところがパスの表記には親ディレクトリへさかのぼる書き方があり、入力の中身を確かめずに連結すると、開発者が想定していない場所まで指せてしまう。どこでも指せるという汎用性が、そのまま穴になっている。
具体例
資料をファイル名で指定して取り出すダウンロード画面に、上位のディレクトリへさかのぼる文字列を含む名前を送り、本来は外部に出さない設定ファイルやアカウント情報のファイルを取得してしまう、という形が典型。表示するテンプレート名をパラメータで受け取る画面も同じ理由で狙われる。
試験での引っ掛け
「../ を取り除く」だけの対策は、URLエンコード(URLに使えない文字を「%2E」のような%付きの表記に置き換えること)を二重にかけた表記などで迂回されうるため不十分。ファイル名を英数字だけに制限する、識別子とファイルの対応表を用意して利用者にパスを組み立てさせない、といった対策のほうが確実。攻撃の対象がデータベースであるSQLインジェクションとの取り違えにも注意する。
関連用語
出た過去問
問題文で直接問われたものと、解説の中で触れられたものが含まれます。
出典:平成29年度 春期 基本情報技術者試験 午前 問37(IPA)
ディレクトリトラバーサル攻撃に該当するものはどれか。
正解:攻撃者が,パス名を使ってファイルを指定し,管理者の意図していないファイルを不正に閲覧する。
要点:ディレクトリトラバーサルはパス指定を細工した不正閲覧
ディレクトリトラバーサルは、ファイル名を受け取るWebアプリケーションに対して「../」などを含むパスを与え、本来公開する意図のない上位ディレクトリのファイルを読み出させる攻撃です。パスの検証不足が原因なので、入力値の正規化や、指定できる範囲を限定する対策が有効です。
出典:令和4年度 公開問題 基本情報技術者試験 科目A 問36(IPA)解説で登場
SQLインジェクション攻撃による被害を防ぐ方法はどれか。
正解:入力された文字が、データベースへの問合せや操作において、特別な意味をもつ文字として解釈されないようにする。
要点:SQL文の制御記号として解釈させないのが根本対策
SQLインジェクションは、入力値に含まれる引用符などの記号がSQL文の一部として解釈されてしまうことで起こる。対策は、入力された文字をSQLにとって特別な意味をもつ記号として扱わせないことであり、プレースホルダを使った問合せや適切なエスケープ処理がこれに当たる。HTMLタグの無害化はクロスサイトスクリプティング、上位ディレクトリ指定の拒否はディレクトリトラバーサルへの対策である。
出典:令和6年度 公開問題 基本情報技術者試験 科目A 問10(IPA)解説で登場
SQLインジェクションの対策として、有効なものはどれか。
正解:プレースホルダを使って命令文を組み立てる。
要点:SQLインジェクション対策の基本はプレースホルダ利用
SQLインジェクションは、入力値がSQL文の一部として解釈されることで生じる。プレースホルダ(バインド機構(値を後から別に渡す仕組み))を使えば、値はあくまでパラメタとして渡され、SQL文の構造を変えられないため攻撃が成立しない。他の選択肢はオープンリダイレクトやディレクトリトラバーサルなど、別の脆弱性への対策である。
出典・参考
公式シラバスの3 技術要素 > 1. 情報セキュリティ > (7) 攻撃手法に掲載されている用語です。
解説は資格暗記が独自に作成しています。過去問の出典は各問題に記載のとおりです。