ディレクトリトラバース攻撃とは?仕組み・実例・最新対策を徹底解説

ディレクトリトラバース攻撃の仕組みや攻撃手法、近年の脆弱性事例、実効性の高い防御策をわかりやすく解説。入力値の検証だけに頼らない、正規化・最小権限・WAF・安全なファイル処理まで網羅します。

目次

はじめに

ディレクトリトラバース攻撃(Path Traversal)は、Webアプリケーションなどが扱うファイルパスを攻撃者が操作し、本来アクセスできないファイルやディレクトリへ到達する攻撃です。「ディレクトリトラバーサル」「パストラバーサル」「Directory Traversal」とも呼ばれ、CWE-22として分類されています。MITREの2025年版CWE Top 25でも、Path Traversalは主要なソフトウェアの弱点の一つとして扱われています。

典型的なのが、ファイル名を指定してダウンロードする機能です。アプリケーションがユーザー入力をそのままファイルパスとして利用すると、攻撃者によって想定したディレクトリの外側へ移動される可能性があります。

重要なのは、これは単に「Webページを盗み見る」攻撃ではないことです。設定ファイルやソースコード、認証情報などが漏洩すれば、別の攻撃への足掛かりになる可能性があります。

ディレクトリトラバース攻撃の仕組み

ディレクトリトラバースの基本は、ファイルパスに含まれる「親ディレクトリへ移動する」という特殊な要素を悪用することです。

たとえばアプリケーションが、

/var/www/app/files/

以下のファイルだけを公開する設計だったとしても、入力値に相対パスが含まれていると、その制限を超えて別の場所を参照できる場合があります。

攻撃では../だけでなく、URLエンコードされた表現やWindows環境で利用される区切り文字など、複数の表現が利用されます。さらに、二重エンコードなどによって、途中のセキュリティチェックと最終的なファイル処理で異なる解釈をさせる手法もあります。

そのため、「入力文字列に../が含まれていたら拒否する」という単純なブラックリスト方式だけでは十分とはいえません。

どのような被害につながるのか

代表的な被害は、サーバー上のファイルの不正な読み取りです。

対象となり得るのは、アプリケーションの設定ファイル、ログ、ソースコード、秘密情報を含む環境設定などです。アプリケーションが対象ファイルへアクセスできる権限を持っていれば、攻撃者が本来許可されていないデータを取得できる可能性があります。

さらに危険なのが「書き込み」を伴うケースです。ファイルアップロードやアーカイブ展開などの処理に脆弱性が存在すると、意図したディレクトリの外側へファイルを書き込まれ、設定改変やサービス停止、条件によってはコード実行につながることがあります。

つまり、Path Traversalのリスクは「ファイルが読まれる」ことだけではありません。そのファイル処理が読み取りなのか書き込みなのか、またアプリケーションにどの程度の権限があるのかによって被害が大きく変わります。

近年も続く脆弱性

ディレクトリトラバースは古典的な攻撃手法ですが、現在も新しい製品・ソフトウェアで発見されています。

たとえば2025年には、OpenSlidesにおいてファイルやフォルダ名を利用したZIP生成処理にPath Traversalの問題が確認されました。細工されたパスによって、展開時に想定外の場所へファイルを書き込む可能性があり、CVE-2025-30343として登録されています。

また、Conda-buildではtarアーカイブのエントリパス処理に問題があり、意図したディレクトリの外側へファイルを書き込める「Tarslip」型の脆弱性が2025年に報告されました。修正版では対策が行われています。

さらに、2025年にはネットワーク経由で任意ファイルを読み取れるPath Traversalや、バックアップ・リストア機能を介して任意コード実行につながり得る事例なども報告されています。

これらの事例から分かるのは、Path Traversalが「WebのURLに../を入れる古い攻撃」に限定されないことです。ファイルアップロード、ZIP・tarなどのアーカイブ、バックアップ、テンプレート、ダウンロード機能など、ファイルを扱うさまざまな処理が攻撃対象になります。

最新のディレクトリトラバース対策

1. ユーザー入力をファイルパスに直接使わない

最も有効なのは、そもそもユーザーに物理的なファイルパスを指定させない設計です。

たとえばユーザーから「ファイル名」を受け取るのではなく、アプリケーション内部で管理するファイルIDを受け取り、そのIDからサーバー側で対象ファイルを決定します。

OWASPも、可能な場合はユーザー入力をファイルシステム操作に直接利用せず、インデックスや識別子を利用する設計を推奨しています。

2. 正規化してから許可範囲を検証する

ファイルパスをどうしても受け取る必要がある場合は、入力を正規化し、最終的に解決されたパスが許可した基準ディレクトリの配下にあることを確認します。

ここで重要なのは、単純に../を削除することではありません。URLエンコード、二重エンコード、OSごとのパス区切りなどを考慮し、アプリケーションが実際にファイルシステムへ渡す最終的なパスを検証する必要があります。OWASPも「既知の正常な値だけを許可する」ホワイトリスト型の検証と、ファイル操作前の正規化を推奨しています。

3. ファイル名ではなく許可リストを利用する

ダウンロード対象が限定されているなら、ユーザーから任意のファイル名を受け取るのではなく、サーバー側で定義した許可リストから選択させる方法が有効です。

「ユーザーが指定した文字列を安全に加工する」よりも、「ユーザーが指定できる値そのものを限定する」方が、設計上のリスクを小さくできます。

4. 最小権限を徹底する

アプリケーションが実行されるOSユーザーには、必要最小限のファイル権限だけを与えます。

仮にPath Traversalが発生しても、アプリケーション自体に重要ファイルを読み取る権限がなければ、被害を抑えられます。OWASPも、公開対象以外のファイルを適切なOS権限で保護することを推奨しています。

5. ZIP・tarなどの展開処理にも注意する

近年特に重要なのが、アーカイブファイルを扱う処理です。

ZIPやtarの中に含まれるファイル名をそのまま展開すると、展開先ディレクトリの外側へファイルを書き込まれる「Zip Slip」「Tarslip」と呼ばれる問題につながることがあります。

そのため、アーカイブ内の各エントリについても、展開前に正規化し、最終的な展開先が許可されたディレクトリ配下に収まることを確認する必要があります。OpenSlidesやConda-buildの2025年の脆弱性は、この問題が現在も実務上重要であることを示しています。

6. WAFとログ監視を「補助線」として活用する

WAFは、Path Traversalを疑わせるリクエストを検知・遮断する防御層として有効です。また、アクセスログから異常なパス指定や大量のエラー、通常とは異なるファイルアクセスを検知することで、攻撃の早期発見につなげられます。

ただし、WAFだけに依存するのは危険です。アプリケーション側の安全なファイル処理と、OSレベルのアクセス制御を組み合わせる多層防御が重要です。

ディレクトリトラバース対策チェックリスト

  • ユーザー入力を物理ファイルパスとして直接利用していないか
  • ファイルIDなどの間接参照を利用できないか
  • 入力値を正規化してから検証しているか
  • ブラックリストだけに依存していないか
  • 許可リストによる入力制御を実施しているか
  • 最終的なパスが基準ディレクトリ配下にあることを確認しているか
  • URLエンコードや二重エンコードを考慮しているか
  • LinuxとWindowsのパス表現の違いを考慮しているか
  • ZIP・tarなどのアーカイブ展開処理を検証しているか
  • アプリケーションのファイル権限を最小化しているか
  • WAF・ログ監視を導入しているか
  • 脆弱性診断・ペネトレーションテストを定期的に実施しているか

まとめ

ディレクトリトラバース攻撃は、古くから知られている一方、現在もさまざまなソフトウェアで発見され続けている脆弱性です。特に2025年の事例を見ると、単純なWebページだけでなく、ファイルダウンロード、バックアップ、ZIP・tar展開など、「ファイルを扱う機能そのもの」が攻撃対象になっています。

対策の基本は、ユーザー入力を直接パスとして扱わないことです。そのうえで、正規化、許可リスト、基準ディレクトリ配下であることの検証、最小権限、WAF、ログ監視を組み合わせます。

「../を拒否する」だけの対策から一歩進み、安全なファイルアクセスを設計段階から組み込むことが、2026年のWebアプリケーションセキュリティでは重要です。

CTA
  • URLをコピーしました!
  • URLをコピーしました!
この記事を書いた人
目次