>

>

ディレクトリトラバーサルとは?攻撃の仕組みや被害事例、対策方法などをわかりやすく解説

ディレクトリトラバーサルとは?攻撃の仕組みや被害事例、対策方法などをわかりやすく解説

ディレクトリトラバーサルとは?攻撃の仕組みや被害事例、対策方法などをわかりやすく解説

HC

Admina Team

2025/07/16

サイバー攻撃の中でも、古くからある手法でありながら、今なお被害が発生しているのが、ディレクトリトラバーサルです。この攻撃を受けると、本来公開していないはずの機密情報が盗み見られたり、最悪の場合、サーバーを乗っ取られたりする危険性があります。

本記事では、ディレクトリトラバーサルの基本的な仕組みから、具体的な攻撃例、そして開発者や運営者が今すぐ実施すべき効果的な対策まで詳しく解説します。

ディレクトリトラバーサルとは

ディレクトリトラバーサル(Directory Traversal)とは、Webサーバー上のファイルパスを不正に操作することで、本来アクセスが許可されていないディレクトリ(フォルダ)に侵入し、内部のファイルを閲覧したり、実行したりする攻撃手法です。「パス(Path)をトラバース(Traverse:横断、遡る)する」という名の通り、攻撃者はファイルパスを示す文字列に特殊な記号「../」などを挿入して、ディレクトリ階層を一つずつ遡っていきます。これにより、Webの公開領域から非公開領域へと不正に移動し、機密情報にアクセスします。

想定される被害事例

ディレクトリトラバーサルが成功すると、甚大な被害につながる可能性があります。例えば、サーバーOSのパスワードファイル(/etc/passwdなど)が漏洩すれば、他の攻撃の足がかりを与えてしまいます。また、データベースの接続情報が書かれた設定ファイルが盗まれれば、顧客の個人情報が丸ごと流出するかもしれません。さらに、ソースコードが窃取されたり、サーバー上で不正なプログラムを実行されたりすることで、Webサイトの改ざんやサーバー乗っ取りといった最悪の事態に発展するケースも考えられます。

パストラバーサルとの違い

ディレクトリトラバーサルと非常によく似た言葉に、パストラバーサルがあります。結論から言うと、これらは基本的に同じ攻撃手法を指す同義語として扱われることがほとんどです。どちらもファイルパスを不正に操作して非公開領域のファイルにアクセスする攻撃を指します。情報処理推進機構(IPA)などの公的機関ではディレクトリ・トラバーサルという表記が主に用いられていますが、文脈によってはパストラバーサルという言葉も使われます。呼び方の違いに戸惑う必要はなく、同じ脅威として認識しておきましょう。

ディレクトリトラバーサルの攻撃手法と具体例

理論だけでなく、実際にどのような形で攻撃が行われるのかを知ることで、より具体的な対策をイメージしやすくなります。ここでは、代表的な攻撃パターンと、混同されがちなディレクトリリスティングとの違いを解説します。

代表的な攻撃パターン(URL例)

ディレクトリトラバーサルの脆弱性を持つWebアプリケーションでは、URLのパラメータ部分が攻撃の起点となります。例えば、ユーザーの指定したファイルをダウンロードさせる機能で、以下のようなURLがあったとします。

https://example.com/download.php?file=user_manual.pdf

このfileパラメータに対して、攻撃者は次のような値を送り込みます。

https://example.com/download.php?file=../../../../etc/passwd

「../」はディレクトリ階層を遡るコマンドのため、繰り返すことで、Webサーバーのルートディレクトリを経て、システムにとって重要な/etc/passwdファイルへのアクセスを試みます。単純な文字列だけでなく、URLエンコードされた「%2e%2e%2f」などが用いられることも多く、単純なフィルタリングでは防ぎきれないケースもあります。

ディレクトリリスティングとの違い

ディレクトリトラバーサルとしばしば混同されるのが、ディレクトリリスティングです。これは攻撃手法ではなく、Webサーバーの設定不備によって引き起こされる「状態」を指します。具体的には、特定のディレクトリにアクセスした際に、本来表示されるべきWebページ(index.htmlなど)が存在しない場合、そのディレクトリ内に含まれるファイルやサブディレクトリの一覧が丸見えになってしまう状態です。意図せずファイル一覧を公開してしまう点でセキュリティ上の問題ですが、不正な操作で非公開ファイルにアクセスするディレクトリトラバーサルとは明確に区別されます。

ディレクトリトラバーサルへの効果的な対策

ディレクトリトラバーサルの脅威からWebサイトを守るためには、複数の防御策を組み合わせる多層防御の考え方が重要です。ここでは、開発者が実装すべき基本的な対策から、インフラ面での対策までを解説します。

外部からの入力値の無害化(サニタイズ)

最も基本的かつ重要な対策は、ユーザーからの入力値を信用せず、必ず無害化(サニタイズ)することです。ファイル名を指定するパラメータなど、ファイルパスとして扱われる可能性のある全ての入力値に対して、ディレクトリトラバーサルを引き起こす「../」や「..\」といった文字列をチェックし、発見した場合は除去するか、リクエストを拒否する処理を実装します。この処理は、アプリケーションの入り口で一元的に行うのが理想です。

ファイルパスの検証と正規化

入力値を無害化した上で、さらにファイルパスそのものを検証するプロセスも不可欠です。プログラム内部でファイルパスを扱う際は、まずOSの機能などを用いてパスを「正規化(Canonicalization)」します。正規化とは、「/./」や「/../」といった冗長な表現を解決し、最もシンプルで一意な絶対パスに変換することです。その上で、生成された絶対パスが、Webサイトが公開を許可している特定のディレクトリ配下に正しく含まれているかを検証します。このチェックにより、意図しない領域へのアクセスを根本的に防ぐことができます。

Webアプリケーションファイアウォール(WAF)の活用

個別のアプリケーションでの対策に加えて、Webアプリケーションファイアウォール(WAF)を導入することは非常に効果的です。WAFは、Webアプリケーションの前段に設置され、通信内容を監視し、ディレクトリトラバーサルをはじめとする既知の攻撃パターンに合致する不正なリクエストを検知してアプリケーションに到達する前にブロックしてくれます。自社での実装漏れを補完し、セキュリティレベルを底上げする強力な防御層となります。

言語・フレームワーク別の対策

使用するプログラミング言語やフレームワークの特性を理解し、提供されている機能を活用することも重要です。例えば、Javaの場合、java.io.FileクラスのgetCanonicalPath()メソッドを利用してファイルパスを正規化できます。ユーザーからの入力でファイルオブジェクトを生成した後、getCanonicalPath()で得られた正規パスと、事前に定義した安全なベースディレクトリを比較し、前方一致するかどうかをチェックすることで、ディレクトリトラバーサルを防ぐ実装が可能です。各言語のセキュリティガイドラインを参照し、安全なコーディングを心がけましょう。

最小権限の原則に基づくファイルアクセス制御

万が一、攻撃が成功してしまった場合に被害を最小限に食い止めるための対策も欠かせません。その基本となるのが「最小権限の原則」です。これは、Webサーバーやアプリケーションを実行するOSのユーザーアカウントに対して、その動作に必要最小限のファイルアクセス権限しか与えない、という考え方です。例えば、Webサーバーの実行ユーザーが、設定ファイルやOSのシステムファイルに対して読み取り権限を持っていなければ、たとえ攻撃が成功しても情報が漏洩することはありません。

ディレクトリトラバーサルの脆弱性を診断する方法

対策を講じた後は、その対策が有効に機能しているかを確認する必要があります。ここでは、自社サイトにディレクトリトラバーサルの脆弱性が存在しないかを確認するための、代表的な診断方法を紹介します。

脆弱性診断ツールの利用

手軽に脆弱性をチェックする方法として、脆弱性診断ツールの利用が挙げられます。OWASP ZAP(Zed Attack Proxy)に代表されるオープンソースのツールや、様々な商用ツールが存在します。これらのツールは、対象のWebサイトに対して疑似的な攻撃リクエストを自動的に送信し、ディレクトリトラバーサルを含む多くの既知の脆弱性を検出してくれます。定期的に診断を実施し、サイトの状態を把握する習慣をつけることが望ましいです。

専門家によるセキュリティ診断

より高い精度で、かつ網羅的に脆弱性を洗い出したい場合は、セキュリティの専門家による診断(ペネトレーションテスト)を依頼するのが最も確実です。ペネトレーションテストでは、専門家が実際の攻撃者と同じ思考で、ツールと手動を組み合わせてシステムの弱点を探し出します。ツールでは発見が難しい、アプリケーションのロジックに起因するような複雑な脆弱性も検出できる可能性が高く、特に個人情報や決済情報などを扱う重要なシステムでは、専門家による診断の実施を強く推奨します。

まとめ

本記事では、ディレクトリトラバーサルの仕組みから具体的な対策、診断方法までを包括的に解説しました。この攻撃は古典的でありながら、Webアプリケーションの設計や実装の不備を突いて、今なお深刻な被害をもたらす脅威です。

Webサイトのセキュリティは、一度対策すれば終わりというものではありません。新たな脆弱性が発見されることもあれば、サイトの改修によって意図せず脆弱性が生まれることもあります。本記事で得た知識を元に、ぜひ今一度ご自身のWebサイトのセキュリティ設定を見直し、安全なサイト運営を続けていきましょう。

Admina Magazine ニュースレターの

最新情報を受け取ります。

Admina Magazine ニュースレターの

最新情報を受け取ります。

本記事の内容に誤り等がございましたら、こちらからご連絡ください。

企業を成長させる情シスチーム推進のための3ステップ

企業を成長させる情シスチーム推進のための3ステップ

企業を成長させる情シスチーム推進のための3ステップ

業務に役立つ資料や記事を見る
Adminaでは様々な情シスのテーマに沿った資料ブログ記事を用意しています。情シスの今知りたい内容をわかりやすく解説し、次に活用できるステップをガイドで整理させていただいています。

動画で他社の事例を学ぶ
無料の情シスコミュニティ「うちの情シス」の動画を閲覧ください。事業会社で働く情シスの現場の実態や課題、解決策などネットでは公開されていないここだけの話を学ぶ事ができます。

記事をシェアする
記事が役に立つと思ったら、Twitter、FacebookまたはLinkedinで共有をお願いします。

マネーフォワード Adminaについて

サービスを知る

サービスを知る

サービス資料にて、まずは基本的な情報をご覧ください。

サービス資料にて、まずは基本的な情報をご覧ください。

サービス資料

個別相談

個別相談

個別相談

30分のオンライン相談会で、課題をヒアリングし、活用方法をご案内します。

オンライン相談会

まず試してみる

まず試してみる

クレジットカード不要で簡単にお試しいただけます。

新規登録

他の記事

他の記事