ディレクトリトラバーサル攻撃とは何か?その特徴と対処法を解説

ディレクトリトラバーサル攻撃の概要

ディレクトリトラバーサル攻撃とは、コンピューターへの攻撃手段の一つで、Webサイトからファイル名を入力して表示させるようなWebアプリケーションに対して、ファイルパスを書き換えることで通常では参照できないファイルに不正にアクセスする攻撃のことです。
ディレクトリ(directory)は「住所録」という意味で、IT関連ではファイルを階層構造で管理するための概念です。
トラバーサル(traversal)は「横断」という意味で、系統や構造を辿る動作や、通過するこができない場所をすり抜ける意味で使われています。
これらを組み合わせて通常では参照できないファイル階層への攻撃としてディレクトリトラバーサルと呼ばれています。

ディレクトリトラバーサルの特徴

ディレクトリトラバーサルは公開しているファイルへの参照に対して、相対パスによって非公開の機密情報にアクセスすることを可能とします。
例えば、以下のような構造で管理しているWebサイトがあったとします。

  • ./home/work/Koukai.txt (公開しているファイルアクセス)
  • ./home/pass/Pass.txt (非公開のファイルアクセス)

上記のWebサイトが「https://www../?file=Koukai.txt」とファイル名を指定して参照するWebアプリケーションだったとします。
この「/?file=Koukai.txt」の部分を「/?file=../pass/Pass.txt」という相対パスに書き換え、「https://www../?file=../pass/Pass.txt」として実行することで、非公開としているファイルへの接続が行えてしまうことがあります。
相対パスとは、指定されたファイルを基準にして表現したファイルやフォルダの場所を示しています。今回の例では、現在の場所が「/work」となるため、このフォルダを基準として一つ上の階層から「/pass/Pass.txt」にアクセスすることを可能とします(「../」で一つ上の階層に戻るという意味となります)。

このように、ファイルを管理している構造(ディレクトリ)に注目し、ファイルのパスを書き換えながら管理者が秘匿しているファイルにアクセスしようとするのがディレクトリトラバーサル攻撃の特徴です。

ディレクトリトラバーサルへの対策

ディレクトリトラバーサルは、Webアプリケーションへ入力されるデータの処理に対する脆弱性を狙った攻撃となるため、ユーザーからの入力に対して不正でないかどうかの判定や、参照するファイルへの工夫を行うことで対策ができます。
対策例は以下の通りです。

  • ディレクトリへのアクセス権を設定する
  • 外部からのパラメータでWebアプリケーション内のファイル名を直接指定しない
  • 「/」などを含むパス名を禁止する

ディレクトリトラバーサルにより不正に参照されることで情報が漏洩したり、非公開となっているファイルの改ざん、削除といった被害が発生したりする恐れがあります。脆弱性を狙われないように適切な対策を行うようにしましょう。

参考