2024 年 5 月、ある住宅メーカー企業で情報漏えい事件が発生しました。この事件では、Webサイト内に導線がなく、検索エンジンでも発見できない「フォトギャラリー」の Webページに脆弱性があったと報道されています。このような、発見が困難な Webページにおける脆弱性は、自動巡回型の脆弱性スキャナにとって非常に悩ましい問題です。
● Webサイト内に導線がない画面をどう把握するのか
自動巡回型の脆弱性スキャナは、Webサイト内のリンクをたどってアクセスすることで画面を把握する。URL を直接入力しないと辿り着けない画面の場合、自動巡回で発見できないため、自動巡回型の脆弱性スキャナでは診断対象にならない。
● 検索エンジンで発見できない画面をどう把握するのか
キーワードを工夫するなどして検索エンジンを利用することで、リンクされていない画面を発見する手法がある。ただ、検索エンジンでは発見できない仕組みの場合、人手でも見つけられず、手動による診断でも診断対象に追加できない。
Webサイトの開発のサイクルが速い昨今では、サイトの改修を推し進めることで、過去の特設サイトや廃止された機能など、古い Webページが放置されてしまう、というのはありがちに思えます。しかし、そこに脆弱性があったとしても、通常の脆弱性診断では見つけることができない。これは大きな問題です。
手動で発見する方法があれば、脆弱性スキャナに機能実装することで、画面を把握できる可能性があります。今回はこのような放置された Webページを手動で見つける方法をいくつか考えてみました。
● Google検索API
検索エンジンで発見できないというケースで利用されているのは、おそらく Webサイト版の Google検索だと思われます。Webサイト版ではなく、API版なら発見できないか試してみます。
細かいセットアップ手順は省略しますが、
https://www.googleapis.com/customsearch/v1?key={api-key}&cx={engine-id}&filter=1&safe=off&start={1,11,21,...,91}&num=10&q=site:*****
のような URL で API を利用することができます。※
記事執筆時点(2024 年 6 月 28 日)では 371 件がヒットしました。しかし、API の仕様上、100 件しか取得できません。100 件の中から、タイトルに「フォト」が含まれるもの、URL に「photo」が含まれるものを探してみましたが、残念ながら見当たりませんでした。Google検索API でも見つからないようです。
※*****にはドメインを入れています。以降の記述も同様です。
● Bing検索API
Google がダメなら Bing を試してみます。
https://api.bing.microsoft.com/v7.0/search?q=site:*****&offset={0,100,200,...}&count=100&mkt=ja-JP&responseFilter=Webpages
のような URL で API を利用することができます。
記事執筆時点では 558 件ヒットしました。Bing API では件数制限がないようなので、すべて見ることができます。タイトルに「フォト」が含まれるもの、URL に「photo」が含まれるものは以下の 3 つでした。
- https://*****/ownersclub2/photoContest.do?method=top&categoryId=my_family
- https://*****/ownersclub2/photoContest.do?method=top&categoryId=m_theme
- https://*****/ownersclub2/photoContest.do?method=top&categoryId=my_art
また、手元のメモによるとインシデントの発表直後には、
- https://*****/ownerscafe/photo/
- https://*****/ownerscafe/photo/portrait/index.html
- https://*****/ownerscafe/photo/home/index.html
- https://*****/ownerscafe/photo/about/
- https://*****/ownerscafe/photo/index.html
- https://*****/ownerscafe/photo/nature/index.html
などの URL もヒットしたようです。
これらの中に「フォトギャラリー」が含まれるかは不明ですが、少なくとも Google検索では見つけられなかったものを発見できました。
● Wayback Machine API
Internet Archive は Webサイトの過去データを保存する非営利法人です。Wayback Machine API を使うことで、このデータを検索できます。この API も試してみます。
http://web.archive.org/cdx/search/cdx?url=*****/*&output=json&collapse=urlkey&fl=original&limit=10000
のような URL で API を利用することができます。
2394 件ヒットしました。
URL に「photo」が含まれるものを探してみましたが、
- https://*****/common/img/bg_photogram.jpg
- https://*****/ownersclub2/css/ownerscafe_photo.css
が見つかるだけで、「フォトギャラリー」に関連しそうなものは見当たりませんでした。
● Common Crawl API
Common Crawl も Webサイトの過去データを保存する非営利法人です。この API も試してみます。
最初に https://index.commoncrawl.org/collinfo.json から各コレクションの APIURL(cdx-api)を取得します。
次に、各コレクションの APIURL にアクセスし、検索を行います。
https://index.commoncrawl.org/CC-MAIN-2024-22-index?url=*****/*&output=json&fl=url&limit=10000
https://index.commoncrawl.org/CC-MAIN-2024-18-index?url=*****/*&output=json&fl=url&limit=10000
…
https://index.commoncrawl.org/CC-MAIN-2008-2009-index?url=*****/*&output=json&fl=url&limit=10000
こうして取得した URL から「photo」が含まれるものを探してみましたが、見当たりませんでした。
● HTMLコメント
Webサイトの HTML にコメントアウトされたリンクが存在することがあります。画面上ではリンクをクリックできませんが、HTML を見ればそこから URL を取得することができます。これを試してみます。
現在は該当の Webサイトは閉鎖されているため、直接HTML を見ることはできません。代わりに、Bing検索のキャッシュを使います。
Web版の Bing検索で、「site: *****サイトマップ」を検索すると、トップにhttps://*****/sitemap/ が出てきますので、このキャッシュを見てみます。するとコメントアウトされたリンクが含まれていました。「photo」を含むものに限定すると、以下が見つかりました。
- /ownerscafe/photo/home/index.html
- /ownerscafe/photo/portrait/index.html
- /ownerscafe/photo/garden/index.html
- /ownerscafe/photo/nature/index.html
- /ownerscafe/photo/home/
- /ownerscafe/photo/portrait/
- /ownerscafe/photo/garden/
- /ownerscafe/photo/nature/
- /ownerscafe/photo/monthly/
- /ownerscafe/photo/myfamily/
- /ownerscafe/photo/myart/
- /ownerscafe/photo/child/index.html
脆弱性スキャナの場合、自動巡回時にこれらのコメントアウトされたリンクを発見し、それを巡回対象に加えるということもできそうです。
● まとめ
2024 年 5 月に発生した情報漏えい事件の事例をもとに、5 つの方法で、放置された Webページを発見できないか試してみました。今回の結果では、Bing検索API と HTMLコメントが特に有効そうに見えました。1 つの方法に頼るのではなく、複数の方法を試すことが重要です。
また、こうした問題に対応している脆弱性スキャナはないのか調べてみたところ、AppCheck など、URL収集のために、Webサイトの自動巡回と検索エンジンを併用する脆弱性スキャナも存在するようです。
>For each URL configured with the scan, AppCheck performs online reconnaissance to gather information
pertaining to the site that is publicly available in search engines and other online indexing services.
>https://appcheck-ng.com/our-approach/
近い将来、自動巡回以外の方法でも URL を探し出す機能が、脆弱性スキャナの標準機能になるのかもしれません。