パスワードを忘れた? アカウント作成
108275 story
セキュリティ

JavaScriptを使わずにWebブラウザの閲覧履歴を盗む 68

ストーリー by hylom
仕様です 部門より

本家/.曰く、

Ergasiophobia曰く、JavaScriptを使わずに、過去に訪れたWebサイトのリストを生成するというデモが公開されている。このデモでは、NoScriptを使っていてもリストの生成を防ぐことはできない。

デモページの解説によると、このWeb閲覧履歴を「盗む」テクニックはCSSを利用するもので、あらかじめページ内にそのユーザーが訪問しているかをチェックしたいURLを仕込んでおき、CSSを使ってそのURLを過去に訪れているかを調べるというもの。本家のコメントによると、このテクニックは数年前から確認されていたようだ。

この議論は賞味期限が切れたので、アーカイブ化されています。 新たにコメントを付けることはできません。
  • 気の早い宣伝 (スコア:5, 参考になる)

    by fcp (32783) on 2009年06月15日 14時06分 (#1586629) ホームページ 日記

    bugzilla.mozilla.org では JavaScript を使う exploit も使わない exploit も Bug 147777 [mozilla.org] として扱っています。この bug のコメント中、 JavaScript を使わない例は、はっきりしたものとしては 2006 年 12 月の Comment 71 [mozilla.org] が初出でしょうか。 2005 年 6 月の Comment 48 [mozilla.org] もそれっぽいですが。

    まだ正式版どころか RC も出ていないので一般の人にはお勧めしませんが、人柱の人は Firefox 3.5 Preview を使って about:config から layout.css.visited_links_enabled を false にすると、リンクが visited かどうかによってスタイルを変えるのを一切やめるようになるので、この攻撃を防げます。

    それだとリンクが visited であるかどうかがまったくわからないから不便というかたは、拙作の拡張機能 Link Status [mozilla.org] を併せてお使いください (宣伝)。リンクにマウスカーソルを合わせると、 vistied の場合はステータスバーに星のアイコンが表示されてわかるようになります。

    ただし、 3.5 Preview を使った後同じプロファイルで 3.5 Beta 4 に戻ると、 Places データベースが壊れてブックマークや履歴が読めなくなる [hatena.ne.jp]ので、くれぐれもご注意を。 3.5 Preview から 3.0.x に戻すのも大丈夫かどうか僕は知りません。普通の人は Firefox 3.5 の正式版が出るまで待つのが吉だと思います。

  • 2006年どころか (スコア:4, 参考になる)

    by Anonymous Coward on 2009年06月15日 13時02分 (#1586592)

    このテクニックは数年前から確認されていたようだ。

    本家のコメントでは2006年のBlog記事を参照していますが、2002年には [mozilla.org]すでに知られていますね。一度非公開にされていたのですが、2003年にデモが公開された [browserspy.dk]ことから、バグも再公開されました。このデモはJavaScriptを使っていますが、バグのほうではスクリプトを使わないで検出できる可能性に最初から触れられています。

  • 真っ先の頭をよぎったのは、高木浩光さんの楽天ad4Uに関する記事。

    http://takagi-hiromitsu.jp/diary/20081211.html [takagi-hiromitsu.jp]

    これと同じでは?
    • by Anonymous Coward on 2009年06月15日 13時52分 (#1586621)

      発表資料 "次世代行動ターゲティング広告「楽天 ad4U」 ※パワーポイント形式ファイルに直リンク※ [infoseek.co.jp]" によると。

      この機能は、Webブラウザの基本機能であり、埋め込まれたURLと履歴との照合処理は、訪問者のWebブラウザ自身が行うものである

      したがって「楽天及びドリコムはデータの取得及び保存は行っていません」だそうです

      Q:ターゲティングの元となるサイトはどの様なサイトなのか
       該当カテゴリに関連するサイトをad4U技術独自のアルゴリズムで自動収集しております。
      そのルールは変更される場合もございますので、現状では具体的なサイト名の公表は控えさせて頂きます。

      Q:行動履歴の参照方法はどのようにしているのか?
       ブラウザの基本機能を利用し行動履歴を照会しております。
      判別方法はブラウザ上で完結するので、データの取得、蓄積等は行いません。

      Q:ブラウザ基本機能とは具体的にどういったものか?
       ブラウザには過去に訪れたことのあるページを早く表示したり、過去に訪れたページへのリンクの色を変えたりと言ったようなユーザの使い勝手を向上させる色々な機能が備わっており、当技術ではそれを利用しております。
      それ以上の判別技術に関わる事項は特許事項となっておりますので公表は差し控えさせて頂いております。

      親コメント
    • by Anonymous Coward on 2009年06月15日 14時14分 (#1586635)
      以前、それがここ(/.J)で話題になった時にも、
      同じ事はFlashやJS抜きでも可能、と言うコメントがあったような...

      http://srad.jp/security/comments.pl?sid=423251&cid=1440682
      http://srad.jp/security/comments.pl?sid=423251&cid=1440692
      親コメント
  • うわ (スコア:2, おもしろおかしい)

    by Anonymous Coward on 2009年06月15日 12時28分 (#1586567)
    Ergasiophobiaをクリックしたらメールソフトが立ち上がった!
    • by flutist (16098) on 2009年06月15日 13時59分 (#1586625)

      ステータスバーを見るクセを付けるべきだと思います。

      親コメント
      • Re:うわ (スコア:1, 参考になる)

        by Anonymous Coward on 2009年06月15日 14時11分 (#1586633)

        ステータスバーの表示なんかスクリプトを使わずとも簡単に偽装できるので何の役にも立ちません。
        ChromeやSafari 4に至ってはデフォルトで役立たずのステータスバーは非表示にしてますね。

        親コメント
  • JavaScript (スコア:2, すばらしい洞察)

    by Anonymous Coward on 2009年06月15日 13時06分 (#1586594)

    を切ってるのは少数派だと思う。

  • by Anonymous Coward on 2009年06月15日 14時04分 (#1586628)
    で検出されなくなります
    • by Anonymous Coward

      具体的にはどのブラウザでどうやって設定すればいいのですか? 少なくともFirefoxには3.5まで:visited擬似クラスを無効にする機能はありませんでしたし、IEのインターネットオプションにも見当たりません。あとプラスモデしてる人は実際にそんな設定項目がブラウザに存在するのかどうか確認したのですか?
      ただしプライベートブラウズ中は通常モードの訪問履歴を反映しないので、この攻撃を防げるようです。

    • by Anonymous Coward
      色分けされるからどうこうの話では…。
  • by Anonymous Coward on 2009年06月15日 14時57分 (#1586653)

    http://takagi-hiromitsu.jp/diary/20081019.html [takagi-hiromitsu.jp] によると、2001年から、というか2000年から指摘があった問題なのですね。

  • 隣の席のあの娘の閲覧履歴は盗み放題。

    。。。大丈夫、そんなことしてませんよ。

  • たぶん早い者勝ち (スコア:1, おもしろおかしい)

    by Anonymous Coward on 2009年06月15日 12時31分 (#1586569)

    w3m 最強:-)

    • by Anonymous Coward

      Mosaicのほうが使いやすいと思う。
      だからMosaic最強!
      w3mは2番目だ。

    • by Anonymous Coward
      script どうこうとか以前に,ある程度まとまった文章のような内容を読むときは わざわざ GUI ブラウザから URL を w3m にコピペして読んでます.

      変にデザインだのなんだので,
      • フォントの大きさが小さすぎたり,
      • 横スクロールしないと読めなかったり,
      • 背景色・文字色が変だったり,
      • 横に変なのがチラついてたり

      本当に読みにくいのが多いです… (flashは w3m 経由みたいなこと出来ないから余計にキライ)

      • by Anonymous Coward on 2009年06月15日 15時54分 (#1586672)
        そんなことしなくても、普通にブラウザでCSSをオフにすればよいのでは?

        Firefoxなら、「表示」→「スタイルシート」→「スタイルシートを使用しない」
        親コメント
        • by Anonymous Coward

          でもさぁ、CSSを無効にするとしょぼすぎるとこ多いんだよね。
          コンソール上ならさほど気にならないんだけど。

          • by Anonymous Coward
            w3m はしょぼくないの?
            • by Anonymous Coward
              ページャなりの表示がされるよ
              ブラウザのCSSを切ったのとはまた違う
          • by Anonymous Coward

            たぶんテーブルレイアウト全盛の10年前から同じことを言い続けてるのだと思いますが、最近はBlogのおかげでCSSオフでもとりあえず読めるページがかなり多くなってきました。

  • by Anonymous Coward on 2009年06月15日 13時50分 (#1586620)
    • iframeをリンク化
    • metaタグによる再読み込みを無効化

    何の脅威も感じなかった

  • by masahikoi (1183) on 2009年06月15日 19時59分 (#1586763)

    このやり方はまともな目的でも結果的に同じようなことになっている場合がありえますね。 リンク集でa:linkとa:visitedのbackground-imageにサイトのバナー画像を使っているとか。

    結局履歴を知られたくないサイトにアクセスするときはInPrivateブラウズ(IE8)やシークレットモード(Chrome)をつかって履歴自体を残さないようにするしかないんですかね。

  • http://vird2002.s8.xrea.com/test/test_css/get_visited.html [xrea.com] にテストコードを置きました。

    <style type='text/css'>
        a:visited[href="http://www.google.co.jp/"]:after {
    ...(中略)...
    </style>

    が該当コードです。
    Proxomitron フィルター作成スレッド Part11 [2ch.net] で

    Gecko系だったら-moz-bindingで外部ファイルを読み込むことだってするし、 CSS3のwebfontsも外部ファイルを読み込む。

    と言われているので、抜け道はまだあるんだろうと思います。

    ところで、Firefoxで a:visited を無効化する about:config はないんでしょうか?
    いろいろ探してみましたが、どうにも見つかりません…。

  • by Anonymous Coward on 2009年06月15日 12時41分 (#1586574)
    Opera10で行ったらものすごく重くて、しかもなんだか分からなかった。
  • by Anonymous Coward on 2009年06月15日 12時44分 (#1586576)

    :visitedセレクタあたりを使って訪れているサイトを判定する。
    あとはそれを...どうやって取得するんだろうw

    • by Anonymous Coward on 2009年06月15日 12時50分 (#1586582)

      visited の時だけ参照するリソースを仕込む
      → んでそのリソースのログを取る

      と予想したらそのままでしたよ

      親コメント
      • by mmgames (37884) on 2009年06月15日 14時56分 (#1586652)

        PHPのプログラムまでは読みようがありませんが、
        http://www.making-the-web.com/misc/sites-you-visit/nojs/base.php [making-the-web.com]
        にアクセスすればほぼ仕組みはわかりますね。

        ここのサイトへのリンクを貼り、それに個別のスタイルシートを適用して 、
        visited 時に特定のPHPに引数付きでアクセスするようにすることでPHP側で訪問済みサイトがわかるわけです。
        ただし欠点として、大量のリンクをブラウザ側で解析するので結構重いことがあげられそうです。

        HTML形式の迷惑メールにCGIアクセスする画像を貼り付ける手法と手口は同じです。

        これを防ぐには訪問済みサイトのスタイル変更を無効にするか、あるいはこまめにリセットするしかなさそうです。
        あるいはユーザースタイルシートなどを使い visited 時 のスタイルを強制的に固定するか。

        ちなみにかなりの数のリストがありましたが海外サイトなのに楽天があったのがおかしい。

        親コメント
      • この方法って、直接「vistedなURLを取得できる」のではなく、
        「あるURLがvistedかどうか判定できる」ことを利用して虱潰しに検索してるわけですが、
        この方法だと、いかに大量の「判定用URLリスト」を持てるかどうかがキモだと思いますね。

        判定用のページには大量(2000ぐらい?)のURLが埋め込まれてますが、さらにそのページをRefreshで随時更新していくことで、
        どんどん判定URLを送り込んでいるようです。20回リロードしてたので、約40000URLぐらいかな。
        ここ /.-J のストーリーもいくつかマッチしてました…

        全ストーリーが入っているわけではなく、かなり歯抜けなのですが、
        Refererで集めたのか、それとも適当にクローリングしたんですかねぇ。

        親コメント
      • 見て戻ってきたら遅かったorz
        みんな解析早すぎですよ

        30分待ちなのでIDで

        親コメント
    • a:visited でやっています。

      どうやって取得するかどうかですが…、私も気になって思わずソースコード読んでみました。

      読めば分かるレベルなので、あえて書きませんが、意外と単純な手だったのでビックリです。
      親コメント
    • by Anonymous Coward
      対策として、次のようなユーザースタイルシートを使えばいいかもしれない。
      a:visited {
              background: none !important;
      }
      IEだと制限つきサイトに登録しても動かなくなりますね。
      • by Anonymous Coward

        a:visited {
            cursor: ;
        }
        とかも出来るんじゃないかな。
        ブラウザの独自プロパティ(-moz-*とか)とかまで考えるとかなり難しいかも

  • by Anonymous Coward on 2009年06月15日 12時45分 (#1586578)
    ほんとだ
    NoScript状態でもURLバレバレだ!
    • Re:おー (スコア:1, おもしろおかしい)

      by Anonymous Coward on 2009年06月15日 14時25分 (#1586640)
      「ヤツはとんでもない物を盗んでいきました。あなたの閲覧履歴です。
      「んだとあの野郎!
      親コメント
  • by Anonymous Coward on 2009年06月15日 14時45分 (#1586645)

    編集者の言う通り(部門名)、仕様ですよね。
    ただ、何年も前からこの仕様は脆弱性として利用出来ると指摘されてて、
    いよいよ大々的にユーザの情報を盗むのに使われ始めたので、
    仕様不良として潰さざるを得なくなっていると言う事。

    「大々的にユーザの情報を盗むのに使われ始めた」時に騒がれて、
    /.Jでも取り上げていた [srad.jp]のは記憶に新しいわけですが、
    最初の指摘から現在まで、あるいは、前回掲載から現在までの間に、
    何か新たな手法や、関連する別の問題が見付かったと言うワケでもなく、
    また、実証コードが書かれてなかった・公表されてなかったわけでもないのに、
    何故今更話題にするんだろう? と言う疑問があります。

    Firefoxの次のバージョンか何かの宣伝ですか?>編集者様

    # 他意が無いならいいんですけど、
    # 言いたい事を隠してる様な誘導的な話題って、
    # 生理的に気持ち悪いんで、

    # この件で、script切ってる環境ならダイジョウブ、
    # と言う誤解を広めてた人が居るなら、それは糾弾されるべき。

typodupeerror

私は悩みをリストアップし始めたが、そのあまりの長さにいやけがさし、何も考えないことにした。-- Robert C. Pike

読み込み中...