|
2012-07-10 送信 |
|
|
|
============== |
|
脆弱性に関して |
|
============== |
|
|
|
■ 概要 |
|
bing検索のキャッシュ表示ドメイン上で閲覧履歴の漏洩が発生する問題があります。 |
|
ターゲットを罠ページに誘いこむことで、特定個人のWebサイト閲覧傾向が漏洩したり、あるいは、Webサイト閲覧傾向から個人の特定に使われる可能性があります。 |
|
|
|
■ 公開の有無 |
|
非公開、ただし、同等の問題についての報告を、自社サービス、及びGoogleに送っています。 |
|
|
|
■ 再現を確認した環境 |
|
JavaScriptとCookieを有効にしたブラウザでbingのキャッシュを表示することで、cc.bingj.com上にcookieが保存されるのを確認 |
|
|
|
■ 脆弱性に関する技術的な説明 |
|
■ 再現の詳細な手順 |
|
■ 脆弱性を悪用するシナリオ |
|
|
|
1. cookieを読み取るコードを含むURLをbingにキャッシュさせる |
|
2. ターゲットにキャッシュされたURLを訪問させる |
|
3. cc.bingj.com に保存されているcookieの傾向から、ターゲットの閲覧サイトの傾向がわかる |
|
|
|
cookieを読み取って外部に送信する機能を備えたwebページを作って、bingにキャッシュさせることで、cc.bingj.com |
|
上に保存されたcookieは悪意のある第三者から読み取り可能になります。 |
|
特定の名前を持つcookieの有無を調べたり、cookieに保存されている値を読み取ることで訪問者の閲覧しているサイトの傾向を読み取ることが可能です。 |
|
通常、外部コンテンツをJavaScriptの実行込みで表示する場合は、認証情報の漏洩などが起きないように、別のドメインを用意されることが多くなっていますが、 |
|
多くのユーザーから広く参照されているサンドボックスドメインは、ユーザーの履歴情報の取得に悪用される可能性があります。 |
|
サービスの認証情報や、ユーザーの個人情報が漏洩することが無くとも、訪問者がどのようなサイトを訪問する傾向があるのか、ということが読み取り可能な状態になっていると言えます。 |
|
|
|
影響範囲: |
|
アクセス解析用サービスの中には、サイトオーナー毎にユニークな名前を持つcookieを閲覧中のドメイン上に保存するものがあります。これらのcookieの名前から訪問サイトを識別することができます。 |
|
name,valueに特徴的な傾向を持つcookieをセットするサイトのbingでのキャッシュを閲覧したという履歴情報が、悪意のある第三者から取得可能な状態になっています。 |
|
また、cookieの値として訪問したURLやリファラを記録しているものがあれば検索キーワードも漏洩することになります。 |
|
|
|
これはJavaScript実行可能なドメインを多くのユーザーで共有している場合にも同様の問題がありますが、 |
|
検索エンジンのキャッシュの場合、そのドメインを複数ユーザーで共有していなくても「自分が管理しているドメイン内に特徴的なcookieを設定する」という単体では何の問題も無いコードが、 |
|
本来想定していないキャッシュの表示ドメイン上で実行されることで履歴漏洩のリスクが増加することになります。 |
|
|
|
これは複合的な問題ですが、少なくとも「単体では履歴の漏洩の問題が起きないサイト」が、キャッシュ用のドメイン上で表示されることによってユーザーのプライバシーリスクが増加しているという点については、検索エンジン側の問題であり、また修正することが可能です。 |
|
また、大量のCookieが保存されると、リクエストヘッダが肥大化するという問題もあります(一定以上に大きくなるとサーバー設定によって400エラーを返します) |
|
|
|
■ 回避策 |
|
1. サーバー側で送らてきたcookieを削除するためのSet-Cookieヘッダを発行する |
|
Googleのキャッシュページ(webcache.googleusercontent.com)では送られてきたcookieを削除するSet-Cookieヘッダを出力しています。 |
|
JavaScriptで設定されたCookieの消去が不完全であるというバグがあったため、Googleに報告してあります(近いうちに対策されると思います) |
|
あるいはページ先頭にcookieを削除するためのJavaScriptコードを含めるのも良いでしょう。 |
|
|
|
2. キャッシュページにJavaScriptによるcookieの新規設定を抑制する処理を入れる |
|
一部のcookieはpath指定された状態で保存されます。通常、このcookieは送信されることがないので無駄になります。 |
|
また、特定のpathに対して特徴的なcookieを保存する、ということが既知であれば、やはり訪問先サイトの検知に使われる可能性があります。 |
|
サーバーからのSet-Cookieヘッダでは、path指定されたcookieを消去するのは困難です。 |
|
なのでWebページ側から、そもそもcookieの新規セットが出来ないようなコードを挿入することでこの問題を解決することができます。 |
|
(ただし古いブラウザでは動作しないため、影響を軽減するための対策になります) |
|
参考: http://subtech.g.hatena.ne.jp/mala/20120709/1341819651 |
|
|
|
懸念事項 |
|
今後localStorageに特徴的な値を保存するサイト、といったものが増えてきた場合に、localStorageの内容を読み取ることで同様の履歴情報の漏洩が起こる可能性があります。 |
|
|
|
■ 参考情報その他 |
|
|
|
|
tiny typo in
00.md
; lacking51