パスワードを忘れた? アカウント作成
12651038 story
プライバシ

ChromeとNVIDIAのドライバで不具合、閲覧していたサイトがゲームのロード画面に表示されてしまうバグ 33

ストーリー by hylom
興味深い 部門より
あるAnonymous Coward 曰く、

トロント大学の学生Evan Andersen氏によると、Google Chromeのシークレットモードでアダルトサイトを見ていても、NVIDIAのドライバのバグが原因でバレてしまうことがあるそうだ。同氏によると、アダルトサイトを見た後にPC向けの人気ゲーム「Diablo III」を起動したところ、ロード画面に直前に見ていたサイトのスナップショットが表示されたそうだ。原因はNVIDIAのドライバとChromeの両方にあるという(SOFTPEDIAcharliehorse55NETWORKWORLDSlashdot)。

GPUは開いてるアプリケーションにメモリを割り当てる。アプリケーションを終了すると空いたメモリはGPUの共有メモリプールに再追加され、別のアプリケーションで使用できるようになる。このときChromeはメモリバッファを削除しておらず、NVIDIAのGPUドライバも割り当てられたメモリをクリアしていなかった。このため前述の現象が起きたという。

Evan Andersen氏は2年前にもNVIDIAとGoogleにこの問題を指摘していたが、修正はできなかったとしている。

  • by hogehogehogehoge (27968) on 2016年01月15日 9時25分 (#2949559)

    iOSのSafariでも以前見たサイトが一瞬ですが表示されることがありますね。
    個人情報が漏れる可能性がありセキュリティ上問題とされていますが、iOS7のころから報告は上がっているのに、いまだ改善されませんね。

    ここに返信
  • by Anonymous Coward on 2016年01月15日 10時44分 (#2949612)

    GPUのVRAMの情報リークは割と有名な問題でして、例えば、VirtualBoxの中の仮想環境から、ホスト環境の情報を盗みとるために使われています。

    The Palinopsia Bug
    https://hsmr.cc/palinopsia/ [hsmr.cc]

    Macだけでなく、LinuxやWindowsでも、この脆弱性を使うことができます。

    INFORMATION DISCLOSURE VULNERABILITY IN VRAM
    http://www.websecuritywatch.com/information-disclosure-vulnerability-i... [websecuritywatch.com]
    >During testing, the following 4 cards proved to be susceptible to this
    method:
    >1. Linux using the open source radeon driver for AMD/ATI cards
    >2. Linux usig the open source nouveau-driver for nVidia-cards
    >3. Linux using the closed source nVidia-driver
    >4. Windows using the closed source AMD/ATI catalyst driver

    簡単に再現できる実証コードもあります。
    > The Code available here:
    > https://hsmr.cc/palinopsia/main.cpp [hsmr.cc]
    > uses the SDL2 library.

    こちらの環境でも、再現できました。

    ここに返信
  • Chrome (スコア:0, フレームのもと)

    by Anonymous Coward on 2016年01月15日 8時32分 (#2949534)

    ユーザーの情報を収集、共有するウェブサイト
    ユーザーがアクセスしたページをトラッキングするインターネット サービス プロバイダや雇用主
    無料ダウンロードなどと一緒にインストールされ、キーストロークを記録する不正ソフトウェア
    スパイ、諜報活動
    背後にいる人
    NVIDIA

    これで解決

    ここに返信
    • by Anonymous Coward

      何言ってんだコイツ……?
      というか、記事の題読んでるか?
      脳内で、どう諜報活動と結び付いたんだ?

      • by love-m4 (10412) on 2016年01月15日 9時16分 (#2949553) 日記

        「シークレットモード chrome 注意書き」などで画像検索してください。

        • by Anonymous Coward

          NVIDIAだけではなく、後から開いた任意のアプリが未初期化の領域を参照することによってシークレットモードの画面を読み出せてまいますよね。
          それを記事から読みとれていないから的外れなジョークになってて、なにいってんだコイツ…となるわけです。

      • by Anonymous Coward

        chrome使ってるならわかるジョークじゃないのか?
        シークレットモード開くと出てくる注意だろ・・・・

    • by Anonymous Coward

      ???

  • by Anonymous Coward on 2016年01月15日 8時50分 (#2949544)

    としか思えないが、修正するのがそんなに難しいのだろうか?

    ここに返信
    • by Anonymous Coward on 2016年01月15日 9時19分 (#2949556)

      「うちはちゃんと初期化してる。Appleが悪い。Windowsでは発生しないし」とNvidia

      http://venturebeat.com/2016/01/13/nvidia-blames-apple-for-bug-that-exp... [venturebeat.com]

      記事中の追記によると、RedditにはAMDのグラフィックカードでも発生するって報告もあるのだそう

      • by Anonymous Coward

        なんだよ、Macだけかよ
        つーか、なんでタレこみにはMacと書いてないんだよ

    • by Anonymous Coward

      まぁ、Appleですし。

      というのは冗談として、デスクトップ描画の辺りにバグが有って修正したら遅くなるか、動かなくなるプログラムとかいっぱいあるので検証に時間が掛かっています。

      といった辺りですか。

  • by Anonymous Coward on 2016年01月15日 9時07分 (#2949551)

    USB接続のスイッチもあるのね

    ここに返信
  • by Anonymous Coward on 2016年01月15日 9時17分 (#2949555)

    これ、一番問題なのはDiablo IIIなのでは?
    確保したメモリをクリアせずに使っているってことですよね?

    ドライバ(か、あるいはDirect3D?)は解放されたメモリをクリアしておくべきだし、
    Chromeみたいなセンシティブな情報を扱うアプリはメモリ解放前にクリアしたほうがいいのは確か。
    でも、Diablo IIIが使用前にメモリをクリアしないのはバグだよね。

    ここに返信
    • by Anonymous Coward on 2016年01月15日 9時58分 (#2949584)

      Chromeがシークレットモードといいつつメモリクリアしてなくてメモリ上に情報を残しているのが問題で、
      これがDiabloじゃなくて例えばメモリ上に残っている画像を記録するスパイウェアだったらどうするんだってことですよ。

    • by Anonymous Coward

      みんながみんな何べんも同じことをするってのも非効率極まりない
      OSだろうがドライバだろうがライブラリだろうが、外部のソフトウェアの挙動なんて、ほぼ信頼のみで
      成り立ってる部分だから疑いだしたらキリがないし、そんな高コストな考え方が正解だとも思えない

    • by Anonymous Coward

      いちばん問題なのは情報を漏らしてるChromeのほうなのでは?
      シークレットモードとかいっててそれじゃ話にならない。
      なんでそこでDiabloが責められるのか意味不明。

      • by ciina (26410) on 2016年01月15日 10時22分 (#2949605) 日記

        だよね。
        原因がOSかドライバかゲームにあったにせよ、セキュリティだとか進行不能でないちょっとした表示の乱れ程度の優先度低そうなバグの話で、
        絶対的に優先度高いのは情報漏えい側だよね。

        今やコピー機だって使用後はメモリ消去するというのに

    • by Anonymous Coward

      もしかすると、ドライバに返却しないでOS(Windowsで言うDWMとか)が色々な所で使いまわしている可能性もあるかと。
      その場合、アプリ側やドライバ側では対処しようがない。

    • by Anonymous Coward

      メモリクリアは高コストなのでGPUドライバが一々消さないのは当然。

      Chromeはシークレットモード時にはちゃんと消すべきだとは思うが、
      不正終了とかも考えると保証できないのであてにすべきではない。

      ディアブロがフレームバッファをクリアしないのがタコなのには同意。
      だが、Chromeのシークレットモードの都合までは知ったこっちゃないよね。

      結局ユーザーがシークレットモードを過信せず自衛するしかないのでは。

      • by Anonymous Coward

        Chromeの終了の時点でカーネル(OSとドライバ)が使用メモリをゼロクリアするべきですよ。
        一般的なメモリでは、当然そうなってます。VRAMがどうなってるかまでは知りません。

        • by Anonymous Coward

          一般的なメモリでは、当然そうなってます。

          あなたの書くプログラムでは確保したメモリや変数領域はOSが初期化してくれるのを前提としてるわけですね?
          どこの世界の「一般的」なのか後学の為に教えて下さい。

          • by apt (28270) on 2016年01月15日 10時30分 (#2949609) 日記
            一般的なメモリというより、近年の一般的なOSではそうなっています。
            例えば、Windowsでの物理メモリ管理の説明が、PDC10: Mysteries of Windows Memory Management Revealed: Part Two [msdn.com]にあります。
            開放されたページはFree Page Listに繋がれて、暇な時やページが必要な時にZero Page ThreadがゼロクリアしてZero Page Listに繋ぎ、再度必要になるとZero Page Listから取ってプロセスに渡されます。
          • by Anonymous Coward on 2016年01月15日 10時07分 (#2949596)

            「Chromeの終了の時点で」は「Diablo IIIがメモリ確保する時点で」の間違いでした。初期化されるというソースは以下に。

            http://www.atmarkit.co.jp/flinux/rensai/watch2009/watch11b.html [atmarkit.co.jp]
            >mmap()やbrk()などのメモリ確保システムコールには、manページに書かれていない重要なお約束があります。
            >それは「確保されたページはゼロ初期化してからユーザー空間に返さないといけない」ということです。
            >カーネルは、自分が使わないページにどんなゴミが入っていても気にしないし、ユーザー空間アプリもmalloc()の戻りアドレスがゼロ初期化されていることなんて期待していません。
            >にもかかわらずなぜこれが必要かというと、メモリを確保できるってことは、そのメモリを解放したプロセスが存在していたということを意味するからです。
            >解放されたメモリには、クレジットカードの番号やパスワード、「いちゃいちゃうふふ」な内容の恥ずかしいメールやらが入っているかもしれません。
            >悪意のあるプロセスがmmap/munmapを繰り返すだけで個人情報が収集できてしまうのは問題ですね。

            • by Anonymous Coward

              「OSがちゃんとクリアしておくのが当然で、そうしておけば情報流出は防げた」
              「(確保したメモリが初期化されているという)仕様外の動作を前提にプログラムを書くのか?」

              これ、かみ合ってるようで全然かみ合ってない話だよねー。

          • by Anonymous Coward

            malloc(3) と勘違いしてない?

            brk(2), sbrk(2) でメモリを増やす方に確保したら、その領域は 0 で埋まっていることが保証されている。これ [opengroup.org] の 92ページ目(p.64) の Description をみたら良い。
            malloc には mmap(2) を使う実装もあるが、これに渡す file descriptor は、普通 /dev/zero をopen したものを渡す、つまり、最初に使うメモリは 0 で埋められている。

            ただし、malloc は一度 OS から確保したメモリを(free(3) されたら)再利用する場合もあるから、その場合は 0 で埋められているとは限らない。

        • by Anonymous Coward

          そのVRAMの問題なのに…。
          セキュアなデータを解放前に消去するのは常識でしょ。

    • by Anonymous Coward

      こういう奴が出力専用引数に渡すメモリをmemsetするアホなコード書いてんだろうな

    • by Anonymous Coward

      下で言われてますが、
      ・ゲームやブラウザでなくNVidiaのドライバの問題であるらしい。
      ・しかしNVidia曰く、「Windowsでは起きてねえよAppleに言え」

    • by Anonymous Coward
      Direct3D は関係なさそうね。Apple 限定っぽいので。
      ドライバ側でクリアするための処理を書いても、MacOS では高速化のためか、その処理をサボッてるのが原因らしい。

      まぁ MacOSを 使える程度の用途であれば、その程度の問題は許容範囲だろう。
  • by Anonymous Coward on 2016年01月15日 9時53分 (#2949579)

    MacMini Mid2010 (GeForce320M) + OSX 10.10.5 で同じ現象が発生してる。

    ただ、うちの場合は最近になって起きるようになった。
    具体的にはシステム環境設定の「アクセシビリティ」→「ディスプレイ」の「透明度を下げる」をOnにしてから。

    この設定変更で少し動きが軽くなったけど、VRAMのクリアも端折っているんだろうか?

    ここに返信
  • by Anonymous Coward on 2016年01月15日 10時05分 (#2949592)

    >ChromeとNVIDIAのドライバ
    S3のChrome 9 HCかなんかだとふと思ってしまったよ
    今更何という話だし、もはやchromeといえばGoogleなんだけどね

    >NVIDIAのドライバとChrome
    本文後半のこの書き方なら間違えることもないが、ひととき懐かしさに浸らせてもらいました。

    ここに返信
  • by Anonymous Coward on 2016年01月15日 10時27分 (#2949608)

    HW支援とOMTC有効の状態では
    タブ切り替えで前のタブの描画が残ったりとか

    GPU活用についてはどこもまだまだ手探り感が否めないんでしょうね

    ここに返信
typodupeerror

日々是ハック也 -- あるハードコアバイナリアン

読み込み中...