WAFによるディレクトリトラバーサル攻撃の防御

 2020.01.21  2022.07.04

私たちは日頃からインターネットを通じて、Webアプリケーションやサービスを利用し、その恩恵を受けています。その一方でWebサイトの改ざんや情報漏えいといった事件・事故が後を絶たないという実情もあり、Webサイトの運営者はセキュリティに対する正しい知識が身に付ける必要があります。

本稿では、ディレクトリトラバーサルの基礎を解説し、セキュリティ対策として有効な「WAF(Web Application Firewall)」をご紹介します。Webサイトを保護し、ユーザーに被害を与えず、会社の信頼を守るためにもディレクトリトラバーサルについての仕組みや対策を理解しましょう。

ディレクトリトラバーサルとはどのような攻撃か?

ディレクトリトラバーサルは、ディレクトリパスをさかのぼってサーバー上のファイルに不正にアクセスする攻撃です。パストラバーサルと呼ばれることもあります。

パラメータでファイルを使用するWebアプリケーションにおいて、ファイル名を指定する実装に不備があった場合、相対パス表記を用いて任意のファイルにアクセスされてしまい、結果として本来公開を意図していないファイルへの参照・実行の恐れがあります。

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

トラバーサルは日本語で横断や横切りを意味し、ファイル名のパラメータに「../../../../etc/passwd」のような入力を与えられ、ディレクトリをさかのぼってファイルにアクセスされます。絶対パスが利用されるケースもあります。

ディレクトリトラバーサル攻撃は、有名なCMSであるWordPressの設定ファイルを不正に読み取る攻撃でも多く見られます。WordPressなどのCMSでは、機能拡張を行うためのプラグインなどが豊富であり、CMSの大きな魅力となっていますが、この拡張機能にディレクトリトラバーサルの脆弱性が多く、攻撃に悪用されています。

以下にWordPressインストールディレクトリのファイル・ディレクトリ構成を示します。

.htaccess
index.php
wp-activate.php
wp-admin(ディレクトリ)
wp-blog-header.php
wp-comments-post.php
wp-config.php
wp-content(ディレクトリ)
wp-cron.php
wp-includes(ディレクトリ)
wp-links-opml.php
wp-load.php
wp-login.php
wp-mail.php
wp-settings.php
wp-signup.php
wp-trackback.php
xmlrpc.php

そして、これが不正にwp-config.phpの読み取りを試みる攻撃リクエストの例です。

/wp-content/themes/テーマ名/download.php?file=../../../wp-config.php
/wp-content/plugins/プラグイン名/download.php?download_file=../../../wp-config.php

/wp-content/themes、/wp-content/pluginsにインストールされるテーマやプラグインのディレクトリトラバーサルの脆弱性を悪用し、設定ファイル(wp-config.php)を不正に読み取ろうとしていることが分かります。wp-config.phpには、データベースのホスト名やユーザー名、パスワードなどの重要な情報が記録されているため、不正に参照されたり外部に漏れるようなことがあってはいけません。

外部からの入力によりアクセスするファイル名を指定するアプリケーションについて、ディレクトリトラバーサルの対策が重要であることが分かりました。では、ディレクトリトラバーサルの攻撃を受けた場合、どのような被害が生じるか、また、どのようにして対策を行えばよいか見ていきましょう。

WAFとは

WAFとは

Webアプリケーションファイアウォール(WAF:Web Application Firewall)は、ウェブサイトに対するアプリケーションレイヤの攻撃対策に特化したセキュリティ対策です。

詳細はこちら

ディレクトリトラバーサルによる被害

これまで、ディレクトリトラバーサルの脆弱性は、著名なアンチウィルス製品、WordPress等のCMS製品やゲームソフトなど、様々なソフトウェアで発見されてきました。ディレクトリトラバーサルの脆弱性を含むソフトウェアを利用している場合、この脆弱性を悪用した攻撃を受けるリスクが考えられ、実際に不正アクセスの被害を受けることになった企業もあります。

被害事例① 企業データや個人情報の漏洩

ディレクトリトラバーサルの脆弱性を悪用した攻撃は、サーバーに格納された個人情報や機密情報を、攻撃者含む第三者に不正に閲覧される可能性があり、また、情報漏洩につながる恐れがあります。

2020年1月、日本の大手電機メーカーM社は、第三者による不正アクセスにより個人情報や機密情報が漏洩した可能性があったことを公開しました。同社がウイルス対策として導入していたソフトウェアに存在した、ディレクトリトラバーサルの脆弱性を悪用された攻撃とみられ、大きな話題となりました。

被害事例② アカウントのなりすましや乗っ取り

ディレクトリトラバーサルの脆弱性を抱えたソフトウェアを使い続けることは、情報漏洩が引き起こされるリスクがあり、サービスやシステムのユーザ情報を含むファイルを不正に閲覧された場合、IDやパスワード、メールアドレスを悪用したアカウントのなりすましが行われる可能性や漏洩したアカウント情報を利用し、リスト型攻撃などの別の攻撃手法につながる恐れもあります。実際に多くの利用者がいるSNSなどでは、アカウントの乗っ取りによる被害が多発しており、ディレクトリトラバーサルの攻撃により漏洩した情報が不正利用されている可能性も否定できません。

被害事例③ サイトの改ざん

サイトがディレクトリトラバーサルの攻撃を受けた場合、コンテンツファイルの改ざんやファイルの削除といった被害を受ける可能性があります。コーポレートサイトのコンテンツが改ざんされ、企業が意図しない情報を発信することになれば、企業イメージによくない影響を与えることとなるでしょう。また、サイトのデータが削除された場合、サービスが提供できなくなるといった被害も考えられます。

2020年6月には、多くの利用者が存在するECサイト構築パッケージ「EC-CUBE」にディレクトリトラバーサルの脆弱性が存在することが明らかになりました。ディレクトリトラバーサルの脆弱性により、任意のパスのファイルやディレクトリを削除される可能性があるというものでした。このように、様々なソフトウェアに存在する脆弱性について、未対策のまま、使い続けることは、前述した被害につながる恐れがあります。

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

ディレクトリトラバーサルは、パラメータにファイルを指定する場合の実装の不備によって起こります。ファイル名にディレクトリが含まれたり、「../../」のような相対パス表記による参照を防ぐようにする必要があります。

IPAの安全なウェブサイトの作り方では、根本的対策として

  • 外部からのパラメータでウェブサーバ内のファイル名を直接指定する実装を避ける。
  • ファイルを開く際は、固定のディレクトリを指定し、かつファイル名にディレクトリ名が含まれないようにする。

の2つが紹介されています。パスからディレクトリを取り除いてファイル名だけを取り出すbasename()関数を利用するなどの対策を行いましょう。それだけでなく、そもそも外部からの入力値でファイル名を指定する必要が本当にあるのか?慎重な設計も必要です。

そのほか、外部からの入力を検査し、意図しないファイル参照を禁止することも一つの手段となります。

WAFによる対策

WAFは、Webアプリケーションの脆弱性を悪用する攻撃からWebサイトを保護するためのセキュリティ製品です。前述の根本的な対策が理想ですが、繰り返されるWebアプリケーションの改良の中で対策漏れが生じてしまうこともあるかもしれません。Webアプリケーションの安全性を維持するには高いセキュリティ意識と知識、技術が必要となります。

また、自社で開発したプログラムではなく、利用しているフレームワークやCMSのプラグインなどに脆弱性が見つかった場合は、自ら対処することは非常に困難であり、開発元からのバージョンアップ版やパッチの提供を待ち、速やかに適用する必要があります。このようなときにWAFが導入されていると、攻撃を受けた際の影響を低減することができ、セーフティネットとして大きな役割を果たします。

WAFは、Webサーバーにインストールしたり、ゲートウェイ型としてネットワークに設置することでユーザーからのリクエストを検査します。以下のページでSQLインジェクション、ディレクトリトラバーサル、OSコマンドインジェクションによる攻撃とWAFによる防御の解説をしていますので、ぜひ参考にしてください。

WAFとは攻撃デモ~WAFによる防御

いかがでしょうか?WAFを導入することで、ディレクトリトラバーサル攻撃を効率的に検出・防御することができます。Webサイトのセキュリティ強化を検討されている場合は、ぜひWAFを活用してください。

ディレクトリトラバーサルについてよくある質問

質問① ディレクトリトラバーサルとは、どのような攻撃ですか?

トラバーサルとは、日本語で横断や横切りを意味する言葉ですが、ディレクトリトラバーサルは、その名のとおりディレクトリを横断し、本来公開を意図していないディレクトリやファイルへアクセスする攻撃手法となります。

質問② ディレクトリトラバーサルとパストラバーサルは違う攻撃ですか?

パストラバーサルは、ディレクトリトラバーサルの別名として知られ、どちらも同じ攻撃手法を示す名称となります。

質問③ 自社開発のアプリケーションについて、運用中のサイトでディレクトリトラバーサルの脆弱性が発見されました。アプリケーションの改修に時間がかかるため、他の対策を検討したいのですが、どのような対策がありますか?

脆弱性の影響を受けないように、対象アプリケーションを改修することが、根本的な対策として望ましいですが、アプリケーションの改修が難しい場合、セーフティネットとしてWAF(Web Application Firewall)の導入が効果的です。

WAFとは~WAF選定・導入のポイントとSiteGuardが選ばれる理由~

WAFとは~WAF選定・導入のポイントとSiteGuardが選ばれる理由~

EG セキュアソリューションズが提供するソリューションである WAF(Web Application Firewall) の概要、WAFの選定・導⼊のポイントについて解説しています。
シリーズ累計100万サイト超を保護する「SiteGuardシリーズ」が選ばれる理由についても紹介しています。

資料ダウンロード

RECENT POST「WAF」の最新記事


WAF

WAF導入のポイント!WAFのチューニングに必要なものとは

WAF

証明書はどうするの?WAFによるSSL通信の検査

WAF

ModSecurityのCore Rule SetからみるWAFのルールとは

WAF

ModSecurityとは?オープンソースWAFのメリット・デメリットを解説

WAFによるディレクトリトラバーサル攻撃の防御
WAFとは~WAF選定・導入のポイントとSiteGuardが選ばれる理由~
導入事例
RECENT POST 最新記事
ブログ無料購読
RANKING人気記事ランキング