はじめに:ウェブサイトのファイルと「パス」
ウェブサイトやウェブアプリケーションは、たくさんのファイル(画像、文章、プログラムなど)でできています。これらのファイルは、コンピューターの中で「フォルダ」や「ディレクトリ」と呼ばれる場所に整理されて保存されています。
これらのファイルがどこにあるかを示す住所のようなものが「パス」です。パスには、一番上の階層から順番に場所を示す「絶対パス」と、今いる場所から目的地までの道順を示す「相対パス」があります。
例えば、自分の家(今いる場所)から隣の家のポスト(目的地)に行く場合は「隣の家」と言えばわかりますが(相対パス)、初めて来た人に説明するなら「〇〇県〇〇市…の隣の家」と詳しく言う必要がありますよね(絶対パス)。パス・トラバーサルは、主にこの「相対パス」の仕組みを悪用する攻撃です。
パス・トラバーサル(ディレクトリ・トラバーサル)とは?
パス・トラバーサルは、ウェブサイトの弱点(脆弱性)を突いて、本来は見ることが許されていないファイルやフォルダに不正にアクセスしようとするサイバー攻撃の一種です。「ディレクトリ・トラバーサル」とも呼ばれますが、基本的に同じ意味です。
イメージとしては、建物の案内表示を操作して、関係者以外立ち入り禁止の部屋に侵入しようとするようなものです。ウェブサイトでは、URL(ウェブサイトのアドレス)の一部を操作して、サーバー(ウェブサイトのデータを保管しているコンピューター)内の通常アクセスできないファイルを探し当てようとします。
攻撃者は、URLに含まれるファイル名を指定する部分に、「../」のような特別な文字列を挿入します。これはコンピューターの世界で「一つ上のフォルダに戻る」という意味を持ちます。これを繰り返すことで、本来アクセスが許可されているフォルダから抜け出し、他のフォルダにあるファイルにアクセスしようと試みるのです。
どんな被害があるの? 😱
パス・トラバーサルの被害を受けると、以下のような深刻な問題が発生する可能性があります。
- 情報の漏洩:
- 個人情報(名前、住所、電話番号など)
- 企業の機密情報(顧客データ、開発中の情報など)
- 設定ファイル(他のシステムのパスワードなどが書かれていることも)
- ウェブサイトのプログラムコード
- データの改ざんや削除: ファイルの内容を書き換えられたり、削除されたりする可能性があります。ウェブサイトの内容が書き換えられたり、重要なデータが失われたりすることがあります。
- アカウントの乗っ取り: ユーザーのアカウント情報(IDやパスワードなど)が盗まれ、不正にログインされてしまう可能性があります。
- システムの停止: 重要なシステムファイルを操作され、ウェブサイトやサーバーが停止してしまう可能性もあります。
実際にあった事例:
近年、特定のサービスを狙った大きな被害事例は報告が減っていますが、広く使われているシステムでの脆弱性は発見されています。
- WordPressプラグイン「Duplicator」(2020年): 人気のWordPressプラグインにパス・トラバーサルの脆弱性が見つかりました(CVE-2020-11738)。認証されていない攻撃者が、細工したリクエストを送ることで、サーバー上の任意のファイルをダウンロードできる可能性がありました。
- Apache HTTP Server(2021年): 広く使われているウェブサーバーソフトウェアApacheのバージョン2.4.49に脆弱性が見つかりました(CVE-2021-41773)。この脆弱性を悪用されると、最悪の場合、遠隔からコードを実行される可能性がありました。
- Fortinet FortiOS(2018年): ファイアウォール製品FortiGateのOSであるFortiOSに脆弱性が見つかりました(CVE-2018-13379)。
これらは一例であり、ウェブアプリケーションの作り方によっては、どのようなサイトでもこの問題が発生する可能性があります。
開発者はどう対策すればいいの?🛡️
ウェブサイトを作る開発者や運用者は、パス・トラバーサル攻撃を防ぐために、以下のような対策を行うことが重要です(ここでは簡単に説明します)。
- ユーザーからの入力をそのまま使わない(入力値の検証): ウェブサイト利用者が入力した情報(ファイル名など)を使ってファイルを探す場合、入力された内容に「../」のような危険な文字列が含まれていないか厳しくチェックし、含まれていたら拒否する、または安全な形に処理(無害化)します。「大丈夫だろう」と油断せず、想定外の入力はすべて拒否する(許可リスト方式)のが基本です。
- ファイル名を直接指定させない工夫: 可能であれば、ユーザーからの入力で直接サーバー内のファイル名を指定するような仕組み自体を避けるのが最も安全です。どうしても必要な場合は、ファイル名だけを受け取り、プログラム内部で安全なフォルダパスと結合するようにします。
- アクセス権限を適切に設定する: ウェブサイトが動作する上で最低限必要なファイルやフォルダにしかアクセスできないように、サーバー側で権限設定をしっかり行います。これにより、万が一パス・トラバーサル攻撃を受けても、被害を最小限に抑えることができます。
- 常に最新の状態に保つ: ウェブサイトを動かしているソフトウェア(OS、ウェブサーバー、プログラミング言語、WordPressなどのCMS、プラグインなど)に脆弱性が見つかることがあります。常に最新バージョンにアップデートし、セキュリティ修正を適用することが大切です。
- セキュリティツール(WAFなど)の導入: WAF(Web Application Firewall)のようなセキュリティツールを導入することで、不正なリクエストを検知し、ブロックすることができます。
これらの対策を組み合わせることで、パス・トラバーサルのリスクを大幅に減らすことができます。
まとめ
パス・トラバーサルは、ウェブサイトの裏口を探って、本来見せてはいけない情報にアクセスしようとする攻撃です。情報の漏洩や改ざんなど、深刻な被害につながる可能性があります。
ウェブサイトの利用者としては、怪しいリンクをクリックしない、信頼できないサイトに情報を入力しないなどの基本的な注意が大切ですが、根本的な対策はウェブサイトを作る側(開発者)が行う必要があります。安全なウェブサイト運営のためには、常にセキュリティを意識した開発と運用が不可欠です。✨
コメント