はじめに
空子/情報セキュリティマネジメント担当インターネットを使っていると、「サイバー攻撃」や「情報漏えい」といったニュースを目にすることが増えました。でも、具体的にどんな手口で攻撃が行われているのかは、なかなかイメージしにくいものです。
今回は、数あるサイバー攻撃の中でも古くから存在し、今でも被害が報告されている「ディレクトリトラバーサル攻撃」について、専門知識がなくてもわかるようにやさしく解説します。
まず「ディレクトリ」ってなに?





パソコンやスマートフォンを使っていると、写真や文書をフォルダに分けて整理しますよね。この「フォルダ」のことを、IT の世界では「ディレクトリ」と呼びます。
たとえば、あなたのパソコンの中にはこんな構造があるかもしれません。
パソコン
├── ドキュメント
│ ├── 仕事の資料.pdf
│ └── 家計簿.xlsx
├── 写真
│ └── 旅行の写真.jpg
└── システムファイル(普段は触らない重要ファイル)
Webサイトを動かしているサーバー(インターネット上のコンピュータ)にも、同じようにディレクトリ構造があります。公開してよいファイルと、絶対に外部から見られてはいけないファイルが、それぞれ別のディレクトリに保管されています。
「トラバーサル」ってなに?



「トラバーサル(traversal)」は英語で「横断する」「通り抜ける」という意味です。
つまりディレクトリトラバーサル攻撃とは、本来アクセスできるはずのないディレクトリに「通り抜けて」侵入し、見えてはいけないファイルを盗み見る攻撃のことです。別名で「パストラバーサル攻撃」とも呼ばれます。
どうやって攻撃するの? ── 身近なたとえで理解する





マンションにたとえて考えてみましょう。
あなたが住んでいるマンションには、各部屋の郵便受けがあります。管理人さんは「301号室の郵便を見せてください」と言われたら、301号室のものだけを渡すルールになっています。
ところが、悪意のある人がこう言ったらどうでしょう。
「301号室の隣の隣の、さらに奥にある管理人室の書類を見せてください」
もし管理人さんがこの指示をうっかりそのまま実行してしまったら、住民全員の個人情報が書かれた書類を渡してしまうかもしれません。
Webの世界でも同じことが起きます。通常、Webサイトは「公開フォルダの中にあるファイルだけ」を見せる仕組みになっています。しかし攻撃者は、URLやリクエストの中に ../(一つ上のディレクトリに移動する命令)を繰り返し入れることで、公開フォルダの外にある秘密のファイルにたどり着こうとします。
たとえば、正常なURLが
https://example.com/files?name=report.pdf
だとすると、攻撃者はこう書き換えます。
https://example.com/files?name=../../../etc/passwd
../ を何度も繰り返すことで、サーバーのディレクトリ構造を上へ上へとさかのぼり、本来は見ることができないシステムファイルにアクセスしようとするのです。
どんな被害が起きるの?





ディレクトリトラバーサル攻撃が成功すると、次のような深刻な被害につながる可能性があります。
個人情報の流出: サーバー上に保存されているユーザーの氏名、メールアドレス、パスワードなどが盗まれる恐れがあります。
システム設定ファイルの漏えい: データベースに接続するためのパスワードやAPIキーなど、サービスの根幹に関わる機密情報が漏れると、さらに大規模な攻撃の足がかりにされてしまいます。
Webサイトの改ざん: 攻撃者がファイルを書き換えることに成功すると、サイトの内容を勝手に変更されたり、訪問者にウイルスを配布する踏み台にされたりすることがあります。
サービスの停止: 重要なシステムファイルを削除・破壊されると、サービスそのものが動かなくなってしまいます。
実際に、過去には大手企業や官公庁のWebサイトがこの攻撃によって情報漏えいを起こした事例が報告されています。
なぜこの攻撃は防げないの?





実は、ディレクトリトラバーサル攻撃そのものは古くから知られている手口であり、正しく対策すれば防ぐことができます。それでも被害がなくならない理由はいくつかあります。
まず、開発者の知識不足やチェック漏れです。Webサイトを作るとき、ユーザーからの入力を十分に検証しないままファイルの読み込み処理に使ってしまうと、この脆弱性が生まれます。
次に、古いシステムの放置です。何年も前に作られたシステムが、セキュリティの更新をされないまま使い続けられているケースは少なくありません。
さらに、攻撃手法の巧妙化もあります。単純な ../ だけでなく、文字をエンコード(変換)したり、特殊な記号を組み合わせたりして、セキュリティチェックをすり抜けようとする手口も存在します。
一般ユーザーにできることはある?



「自分はWebサイトを運営していないから関係ない」と思うかもしれませんが、一般ユーザーにもできることがあります。
まず、利用するサービスを選ぶ目を持つことです。セキュリティに力を入れている企業のサービスを選び、怪しいサイトには個人情報を入力しないようにしましょう。
また、パスワードを使い回さないことも大切です。万が一どこかのサービスで情報が漏れても、他のサービスに被害が広がるのを防げます。
そして、ソフトウェアを常に最新の状態に保つことも重要です。ブラウザやOSのアップデートには、セキュリティの修正が含まれていることが多いため、面倒でも更新しておきましょう。
おわりに


ディレクトリトラバーサル攻撃は、決して新しい攻撃ではありません。しかし、そのシンプルさゆえに今でも被害が後を絶たない、根強い脅威です。
Webサイトを作る人は「ユーザーの入力を絶対に信用しない」という原則を忘れずに。そして一般ユーザーの方も、自分の情報を守るためにセキュリティ意識を少しだけ高めてみてください。



インターネットを安全に楽しむために、こうした知識を持っておくことは、きっとあなたの助けになるはずです。










コメント