ディレクトリトラバーサルとは、ファイルやディレクトリを操作する際に、不正なパスを挿入されることによって意図しないディレクトリやファイルを参照、操作する手法である。別名「パストラバーサル」とも呼ばれている。
ディレクトリトラバーサルの仕組み
ディレクトリトラバーサルでは、攻撃者が公開されているファイルのディレクトリパスに、非公開のディレクトリやファイルを指定する文字列を追加することで、攻撃対象のサーバに非公開のディレクトリやファイルをアクセスする。
具体的には、以下の方法で攻撃が行われる。
相対パスの利用
相対パスとは、ディレクトリパスの基準となるディレクトリを省略したパスである。例えば、ディレクトリ「/var/www/html」内のファイル「index.html」の相対パスは「index.html」となる。
攻撃者は、公開されているファイルの相対パスに、非公開のディレクトリやファイルを指定する文字列を追加することで、攻撃対象のサーバに非公開のディレクトリやファイルをアクセスさせることができる。
例えば、以下の相対パスは、ディレクトリ「/var/www/html/private」内のファイル「secret.txt」にアクセスする。
/var/www/html/private/secret.txt
ドット(.)の利用
ドット(.)は、現在のディレクトリを表す記号である。攻撃者は、公開されているファイルのディレクトリパスに、複数のドット(.)を追加することで、攻撃対象のサーバのルートディレクトリにアクセスさせることができる。
例えば、以下のディレクトリパスは、Webサーバのルートディレクトリ内のファイル「secret.txt」にアクセスする。
/var/www/html/../secret.txt
ワイルドカードの利用
ワイルドカードとは、任意の文字列を表す記号である。攻撃者は、公開されているファイルのディレクトリパスに、ワイルドカードを追加することで、攻撃対象のサーバの任意のディレクトリやファイルをアクセスさせることができる。
例えば、以下のディレクトリパスは、ディレクトリ「/var/www/html」内のすべてのファイルをアクセスする。
/var/www/html/*
ディレクトリトラバーサルの被害
機密情報の漏洩
ディレクトリトラバーサル攻撃によって、攻撃者は、ウェブアプリケーションが保存している機密情報を不正に閲覧・ダウンロードすることができる。機密情報には、顧客情報や社内情報など、企業にとって重要な情報が含まれる。機密情報が漏洩すると、企業の信用やブランドイメージが失墜するだけでなく、金銭的な損害や訴訟リスクなどを引き起こす可能性がある。
システムの改ざん
ディレクトリトラバーサル攻撃によって、攻撃者は、ウェブアプリケーションのシステムに不正なコードを挿入することができる。不正なコードが実行されると、システムが改ざんされたり、停止したりする可能性がある。システムが改ざんされると、企業の業務に支障をきたすだけでなく、顧客情報の漏洩やシステムの乗っ取りなど、さらに深刻な被害につながる可能性がある。
システムの停止
ディレクトリトラバーサル攻撃によって、攻撃者は、ウェブアプリケーションのシステムに大量のアクセスを送信することで、システムを停止させることができる。システムが停止すると、企業の業務に大きな影響を与える可能性がある。
ディレクトリトラバーサルの事例
大手電機メーカーの不正アクセス事件
2020年1月、日本の大手電機メーカーがディレクトリトラバーサル攻撃を受け、機密情報の漏洩が疑われるセキュリティ事件が発生した。攻撃者は、同社のウェブアプリケーションの脆弱性を悪用して、社内ネットワークに侵入した。その後、社内ネットワーク上の機密情報を不正に閲覧・ダウンロードした疑いがある。
大手ショッピングモールのシステム改ざん事件
2022年3月、日本の大手ショッピングモールのシステムがディレクトリトラバーサル攻撃によって改ざんされる事件が発生した。攻撃者は、同社のウェブアプリケーションの脆弱性を悪用して、システムに不正なコードを挿入した。その後、不正なコードが実行されることで、システムが改ざんされた。
大手ゲーム会社のシステム停止事件
2023年7月、日本の大手ゲーム会社のシステムがディレクトリトラバーサル攻撃によって停止される事件が発生した。攻撃者は、同社のウェブアプリケーションの脆弱性を悪用して、システムに大量のアクセスを送信した。その後、大量のアクセスによってシステムが停止した。
ディレクトリトラバーサルの対策
ディレクトリトラバーサルに対しては、以下の対策を講じることで、被害を防ぐことができる。
外部からファイル名を指定できないようにする
最も効果的な対策は、外部からファイル名を指定できないようにすることである。具体的には、以下の方法がある。
- パラメータにファイル名を指定できないようにする
- ファイル参照時のパスを固定する
- ファイル参照時のパスを検証する
ファイルのアクセス権限を設定する
攻撃者がファイルにアクセスできないように、ファイルのアクセス権限を設定する。具体的には、以下の方法がある。
- ファイルのアクセス権限を「読み取り専用」にする
- ファイルのアクセス権限を「アクセス拒否」にする
入力内容をチェックする
入力パラメータの内容をチェックし、ディレクトリを指定できる文字列が含まれている場合には、該当の文字列を置換するなどの処理を行う。
ツールを導入する
以下のツールを導入することで、ディレクトリトラバーサル攻撃を検知・防御することができる。
- WAF(Web Application Firewall)
WAFは、Webアプリケーションを悪意のある攻撃から保護するためのソフトウェアである。WAFには、ディレクトリトラバーサル攻撃を検知・防御する機能が搭載されているものがある。
- IPS(Intrusion Prevention System)
IPSは、ネットワークを監視して、不正な通信を検知・防御するためのソフトウェアである。IPSには、ディレクトリトラバーサル攻撃を検知・防御する機能が搭載されているものがある。
- SIEM(Security Information and Event Management)
SIEMは、ネットワークやシステムから収集したログを分析して、セキュリティの脆弱性を診断するためのツールである。
まとめ
ディレクトリトラバーサルとは、Webアプリケーションにおいて、任意のディレクトリにアクセスする攻撃手法である。
ディレクトリトラバーサル攻撃を受けると、攻撃者は、Webアプリケーションの内部に存在するファイルやディレクトリにアクセスでき、企業や個人にとって重大な被害をもたらす可能性がある。そのため、ウェブアプリケーションの開発・運用を行う際には、ディレクトリトラバーサル攻撃の対策を十分に行う必要がある。
具体的な対策としては、入力値の検証やファイル名の無害化が挙げられる。また、ツールを活用して、Webアプリケーションの脆弱性を定期的にチェックや防御することも有効である。