このブログではウェブサイトやその上で動作しているウェブアプリケーションの脆弱性について紹介すると共に注意喚起をする目的でまとめられています。
今回は、古くから現在まで発生し続けている「ディレクトリインデックシング」に起因する情報漏洩について解説をしています。
※なお、内容に関しましてはHASHコンサルティング株式会社の徳丸 浩様に監修いただいています。
+++++++++++++++++++++++++++++++++++++++++++++++
意図しないファイル公開とディレクトリインデックシング(CWE-425、CWE-548)
■概要
ディレクトリインデックシング(ディレクトリリスティング)はWebサーバーの標準的な機能の一つであり、URLのパスとしてディレクトリを指定した場合に、そのディレクトリに含まれるファイル名を表示する機能です。例えば、ソフトウェアのダウンロードを目的とするサイトでは、ファイル一覧をHTMLとして作成しなくても、ディレクトリインデックシングを使用すると、自動的にファイル名の一覧が表示され、ダウンロードもできるため便利です。
しかし、うっかりWebサーバーの公開領域に秘密情報を含むファイルが置かれている場合、ディレクトリインデックシングにより、そのファイル名が外部から判明することにより、秘密情報が漏洩する原因になります。
■攻撃のイメージと影響
http://example.jp/bbs.php というURLで掲示板ソフトを提供しているサイトがあり、このサイトにはディレクトリインデックシングが有効であるとします。この場合、http://example.jp/ を閲覧すると、以下のような表示となります。
Index of /
- bbs.db
- bbs.php
- data/
- dbconnect.php
【後略】
ここで、bbs.dbというファイルが表示されていますが、これは掲示板のデータベースファイル(SQLite形式)です。bbs.dbのリンクをクリックするだけでデータベースファイルをダウンロードでき、データベース内の個人情報など秘密情報が簡単に外部に漏洩してしまいます。
■脆弱性による影響
ディレクトリインデックシング自体は脆弱性ではなく、公開を意図していないファイルを公開領域に配置してしまったことが脆弱性といえます。ディレクトリインデックシングの設定がない場合でも、秘密情報が公開領域にある場合、ファイル名が辞書攻撃などによりわかってしまう場合があります。
また、とある国家資格のウェブサイトにおいて、解答のPDFファイルを試験前にダウンロードされてしまった事件も過去に起こっています。原因は、解答のPDFファイルをあらかじめWebサーバー上に配置しておき、公開のタイミングでファイルへのリンクを表示する運用をしていたところ、毎年同じルールでファイル名をつけていたために、そのファイル名の規則性を見破られてしまったことが原因でした。そもそも非公開とすべきファイルをWebサイト上に配置してしまったことが根本原因と言えます。
上記脆弱性の影響には以下があります。
- 重要情報の漏洩
■脆弱性の有無の確認方法
脆弱性の確認には以下を実施する必要があります。
- ウェブ公開領域に秘密情報のファイルがないこと
- ディレクトリインデックシングが無効になっていること(意図的な場合を除く)
また、外部からディレクトリインデックシングの有無を診断する方法が、「安全なウェブサイトの作り方」別冊の「ウェブ健康診断仕様」に記載されています。
■対策
対策としては以下を実施します。
- ウェブ公開領域に秘密情報のファイルが配置しないこと
- ディレクトリインデックシングを無効にする
Apacheでディレクトリインデックシングを無効にするには、httpd.conf等に以下(-Indexes)を設定します。
<Directory "/var/www/html"> Options -Indexes </Directory> |
■参考文献
ウェブ健康診断仕様(安全なウェブサイトの作り方別冊)