私たちは日頃からインターネットを通じて、Webアプリケーションやサービスを利用し、その恩恵を受けています。その一方でWebサイトの改ざんや情報漏えいといった事件・事故が後を絶たないという実情もあり、Webサイトの運営者はセキュリティに対する正しい知識を身に付ける必要があります。
本稿では、外部からのアクセスを想定していないサーバー内の任意のファイルを読み出すディレクトリトラバーサルについて解説します。安心・安全なWebサイトを運営するために様々な攻撃手法についての知識を身に付けるようにしましょう。
ディレクトリとは
ディレクトリ(directory)の意味は「住所録」ですが、パソコンやIT用語のようなコンピュータ関連の話では、簡単に表現するとファイルの入れ物です。
LinuxなどのUNIX系のOSを普段から操作している方にとっては、サーバー内のファイルがディレクトリによって整理され、ディレクトリの中にまた別のディレクトリが存在しているなど、階層構造で管理されるディレクトリという言葉に馴染み深いと思います。
WindowsやMacなどのパソコンを業務で使用している方も日常的に「共有フォルダの下にある営業部フォルダに見積書のファイルをコピーしました。」のような会話をしているのではないでしょうか。このようにデータを保管し、整理整頓して一覧にするものが「ディレクトリ(フォルダ)」です。
ディレクトリとフォルダは同じような役割を持っていますが、利用シーンによってその呼び名が変わります。日常のパソコンの使用など、GUI(Graphical User Interface)を利用した操作では「フォルダ」、サーバーの運用管理など、文字列によるコマンドで操作するCLI(Command Line Interface)では「ディレクトリ」と呼びます。
Windowsパソコンにおいてもコマンドプロンプトを起動し、「dir」というコマンドを入力することでディレクトリとファイルの一覧を表示することができます。
Windowsの普及によってGUIによる操作が当たり前になっているため、普段のパソコン利用ではフォルダの方が馴染み深いかもしれませんが、上の画面のようにディレクトリと表示されていることが分かります。
ディレクトリを移動するときは「cd」というコマンドを使用して、下位のディレクトリ(サブディレクトリ)に移動したり、親ディレクトリを示す表記(../など)により上位のディレクトリへ移動することができます。(「cd Users」、「cd ../../content」)
ディレクトリトラバーサルとは
ディレクトリトラバーサルは、相対パスでディレクトリパスをさかのぼってサーバー上のファイルに不正にアクセスする攻撃です。
先ほど、ディレクトリの中に別のディレクトリが存在し、階層構造によってファイルが管理されるという話をしました。私たちは日頃から検索サービスやオンラインショッピングなどのWebアプリケーションを利用しています。このWebアプリケーションにおいて、パラメータとしてファイル名を扱う場合の実装に問題があると、意図していないファイルにアクセスされ、攻撃者に重要な情報が漏えいする恐れがあります。
パラメータに相対パスで「../」のような親ディレクトリを示す表記を混入させて、サーバー内の任意のファイルにアクセスする攻撃をディレクトリトラバーサルと呼びます。
- Webサーバーのファイルを参照されたり、改ざん、削除される
安心・安全なWebサイトを運営するためにも、Webサイトの運営者やアプリケーション開発者は、ディレクトリトラバーサルの脆弱性のないプログラミングを徹底する必要があります。
いかがでしょうか?ディレクトリトラバーサルがどのようなものかを解説しました。以下の記事ではディレクトリトラバーサルについて、開発面での対策のほか、セキュリティ製品を活用した対策を紹介しています。ディレクトリトラバーサルについてより詳しく知りたい方は、ぜひ参考にしてください。
- カテゴリ:
- 用語
この記事に関する製品のご紹介
ホスト型WAF「SiteGuard Server Edition」
SiteGuard Server Editionは、ウェブサーバーのモジュールとして動作するホスト型WAF製品です。Webサーバー自体にインストールするため、専用ハードウェアが必要ありません。ネットワーク構成を変更せず、できるだけシンプルに導入したいお客様に最適な製品です。
詳細はこちら