ディレクトリトラバーサル【directory traversal】パストラバーサル/path traversal
概要

攻撃対象となるのは、利用者から受け取ったファイル名やパスを十分に検証せず、そのままファイル操作に利用するプログラムである。外部からファイル名などの指定をパラメータとして受け付ける場合に、その文字列の取り扱いに問題があると標的となりやすい。
多くのオペレーティングシステム(OS)では、現在のディレクトリを示す「.」や、一階層上の親ディレクトリを示す「..」、最上位ディレクトリを示す先頭の「/」(UNIX系OSの場合)や「\」(Windowsの場合)といった特殊な記号がパスの記法として定められている。攻撃者はこれを悪用し、ディレクトリ階層をさかのぼるパスをプログラムに与える。
具体的には、「../」や「..\」を繰り返した文字列をファイル名やURLのパラメータに混入させることで、開発者が想定していない場所のファイルへのアクセスを試みる。このような操作により、システムは公開する予定のない領域まで階層を遡って読み出してしまう場合がある。
攻撃が成功すると、パスワードや個人情報、認証情報、設定ファイル、ソースコードなどの情報が窃取される危険性がある。また、アプリケーションが書き込みや削除を行える権限で動作している場合には、システム設定が記録されたファイルの改竄や削除によってシステム環境そのものが破壊されることもある。取得した情報を足掛かりに、別の攻撃へと発展する事例も少なくない。
この攻撃が発生する原因としては、利用者が入力した文字列に特殊な記号が含まれていないかを検証する処理が不足していることや、ファイル指定の仕組み自体に不備があることが挙げられる。対策としては、資源の指定方法として任意のパスそのものを受け付けるのをやめ、指定可能な文字列やファイルを列挙するホワイトリスト方式を採用することが基本となる。
また、パスを正規化して意図したディレクトリの外を参照していないか確認することや、アプリケーションがアクセスできるディレクトリの範囲を権限設定によって限定すること、公開領域と機密領域を分離することも有効な手段である。近年ではフレームワークやライブラリが安全なファイル操作機能を提供している場合も多く、それらを活用することで脆弱性の発生を防ぎやすくなっている。
関連用語
他の辞典等による「ディレクトリトラバーサル」の解説 (外部サイト)
- ウィキペディア「ディレクトリトラバーサル」
- SOMPO CYBER SECURITY サイバーセキュリティ用語集「ディレクトリトラバーサル」
- ESETマルウェア情報局 キーワード事典「ディレクトリトラバーサル」
- 東京海上日動 Tokyo Cyber Port 用語集「ディレクトリトラバーサル」
- ITパスポート用語辞典「ディレクトリトラバーサル」
- JavaA2Z「ディレクトリトラバーサル」
- マンガで分かるプログラミング用語辞典「ディレクトリトラバーサル」
- サイバー攻撃大辞典「ディレクトリトラバーサル」
- WhatIs.com (英語)「directory traversal」
- Techopedia (英語)「Directory Traversal」