ChromeとNVIDIAのドライバで不具合、閲覧していたサイトがゲームのロード画面に表示されてしまうバグ 33
ストーリー by hylom
興味深い 部門より
興味深い 部門より
あるAnonymous Coward 曰く、
トロント大学の学生Evan Andersen氏によると、Google Chromeのシークレットモードでアダルトサイトを見ていても、NVIDIAのドライバのバグが原因でバレてしまうことがあるそうだ。同氏によると、アダルトサイトを見た後にPC向けの人気ゲーム「Diablo III」を起動したところ、ロード画面に直前に見ていたサイトのスナップショットが表示されたそうだ。原因はNVIDIAのドライバとChromeの両方にあるという(SOFTPEDIA、charliehorse55、NETWORKWORLD、Slashdot)。
GPUは開いてるアプリケーションにメモリを割り当てる。アプリケーションを終了すると空いたメモリはGPUの共有メモリプールに再追加され、別のアプリケーションで使用できるようになる。このときChromeはメモリバッファを削除しておらず、NVIDIAのGPUドライバも割り当てられたメモリをクリアしていなかった。このため前述の現象が起きたという。
Evan Andersen氏は2年前にもNVIDIAとGoogleにこの問題を指摘していたが、修正はできなかったとしている。
iOSのSafariでも (スコア:2)
iOSのSafariでも以前見たサイトが一瞬ですが表示されることがありますね。
個人情報が漏れる可能性がありセキュリティ上問題とされていますが、iOS7のころから報告は上がっているのに、いまだ改善されませんね。
仮想環境からホストの情報を盗むのにも使える (スコア:1)
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, フレームのもと)
ユーザーの情報を収集、共有するウェブサイト
ユーザーがアクセスしたページをトラッキングするインターネット サービス プロバイダや雇用主
無料ダウンロードなどと一緒にインストールされ、キーストロークを記録する不正ソフトウェア
スパイ、諜報活動
背後にいる人
NVIDIA
これで解決
Re: (スコア:0)
何言ってんだコイツ……?
というか、記事の題読んでるか?
脳内で、どう諜報活動と結び付いたんだ?
Re:Chrome (スコア:1)
「シークレットモード chrome 注意書き」などで画像検索してください。
Re: (スコア:0)
NVIDIAだけではなく、後から開いた任意のアプリが未初期化の領域を参照することによってシークレットモードの画面を読み出せてまいますよね。
それを記事から読みとれていないから的外れなジョークになってて、なにいってんだコイツ…となるわけです。
Re: (スコア:0)
chrome使ってるならわかるジョークじゃないのか?
シークレットモード開くと出てくる注意だろ・・・・
Re: (スコア:0)
???
ただの初期化バグ (スコア:0)
としか思えないが、修正するのがそんなに難しいのだろうか?
Re:ただの初期化バグ (スコア:2, 参考になる)
「うちはちゃんと初期化してる。Appleが悪い。Windowsでは発生しないし」とNvidia
http://venturebeat.com/2016/01/13/nvidia-blames-apple-for-bug-that-exp... [venturebeat.com]
記事中の追記によると、RedditにはAMDのグラフィックカードでも発生するって報告もあるのだそう
Re: (スコア:0)
なんだよ、Macだけかよ
つーか、なんでタレこみにはMacと書いてないんだよ
Re: (スコア:0)
まぁ、Appleですし。
というのは冗談として、デスクトップ描画の辺りにバグが有って修正したら遅くなるか、動かなくなるプログラムとかいっぱいあるので検証に時間が掛かっています。
といった辺りですか。
ボスが来た (スコア:0)
USB接続のスイッチもあるのね
Diablo IIIは? (スコア:0)
これ、一番問題なのはDiablo IIIなのでは?
確保したメモリをクリアせずに使っているってことですよね?
ドライバ(か、あるいはDirect3D?)は解放されたメモリをクリアしておくべきだし、
Chromeみたいなセンシティブな情報を扱うアプリはメモリ解放前にクリアしたほうがいいのは確か。
でも、Diablo IIIが使用前にメモリをクリアしないのはバグだよね。
Re:Diablo IIIは? (スコア:1)
Chromeがシークレットモードといいつつメモリクリアしてなくてメモリ上に情報を残しているのが問題で、
これがDiabloじゃなくて例えばメモリ上に残っている画像を記録するスパイウェアだったらどうするんだってことですよ。
Re: (スコア:0)
みんながみんな何べんも同じことをするってのも非効率極まりない
OSだろうがドライバだろうがライブラリだろうが、外部のソフトウェアの挙動なんて、ほぼ信頼のみで
成り立ってる部分だから疑いだしたらキリがないし、そんな高コストな考え方が正解だとも思えない
Re: (スコア:0)
いちばん問題なのは情報を漏らしてるChromeのほうなのでは?
シークレットモードとかいっててそれじゃ話にならない。
なんでそこでDiabloが責められるのか意味不明。
Re:Diablo IIIは? (スコア:1)
だよね。
原因がOSかドライバかゲームにあったにせよ、セキュリティだとか進行不能でないちょっとした表示の乱れ程度の優先度低そうなバグの話で、
絶対的に優先度高いのは情報漏えい側だよね。
今やコピー機だって使用後はメモリ消去するというのに
Re: (スコア:0)
もしかすると、ドライバに返却しないでOS(Windowsで言うDWMとか)が色々な所で使いまわしている可能性もあるかと。
その場合、アプリ側やドライバ側では対処しようがない。
Re: (スコア:0)
メモリクリアは高コストなのでGPUドライバが一々消さないのは当然。
Chromeはシークレットモード時にはちゃんと消すべきだとは思うが、
不正終了とかも考えると保証できないのであてにすべきではない。
ディアブロがフレームバッファをクリアしないのがタコなのには同意。
だが、Chromeのシークレットモードの都合までは知ったこっちゃないよね。
結局ユーザーがシークレットモードを過信せず自衛するしかないのでは。
Re: (スコア:0)
Chromeの終了の時点でカーネル(OSとドライバ)が使用メモリをゼロクリアするべきですよ。
一般的なメモリでは、当然そうなってます。VRAMがどうなってるかまでは知りません。
Re: (スコア:0)
一般的なメモリでは、当然そうなってます。
あなたの書くプログラムでは確保したメモリや変数領域はOSが初期化してくれるのを前提としてるわけですね?
どこの世界の「一般的」なのか後学の為に教えて下さい。
Re:Diablo IIIは? (スコア:2)
例えば、Windowsでの物理メモリ管理の説明が、PDC10: Mysteries of Windows Memory Management Revealed: Part Two [msdn.com]にあります。
開放されたページはFree Page Listに繋がれて、暇な時やページが必要な時にZero Page ThreadがゼロクリアしてZero Page Listに繋ぎ、再度必要になるとZero Page Listから取ってプロセスに渡されます。
Re:Diablo IIIは? (スコア:1)
「Chromeの終了の時点で」は「Diablo IIIがメモリ確保する時点で」の間違いでした。初期化されるというソースは以下に。
http://www.atmarkit.co.jp/flinux/rensai/watch2009/watch11b.html [atmarkit.co.jp]
>mmap()やbrk()などのメモリ確保システムコールには、manページに書かれていない重要なお約束があります。
>それは「確保されたページはゼロ初期化してからユーザー空間に返さないといけない」ということです。
>カーネルは、自分が使わないページにどんなゴミが入っていても気にしないし、ユーザー空間アプリもmalloc()の戻りアドレスがゼロ初期化されていることなんて期待していません。
>にもかかわらずなぜこれが必要かというと、メモリを確保できるってことは、そのメモリを解放したプロセスが存在していたということを意味するからです。
>解放されたメモリには、クレジットカードの番号やパスワード、「いちゃいちゃうふふ」な内容の恥ずかしいメールやらが入っているかもしれません。
>悪意のあるプロセスがmmap/munmapを繰り返すだけで個人情報が収集できてしまうのは問題ですね。
Re: (スコア:0)
「OSがちゃんとクリアしておくのが当然で、そうしておけば情報流出は防げた」
「(確保したメモリが初期化されているという)仕様外の動作を前提にプログラムを書くのか?」
これ、かみ合ってるようで全然かみ合ってない話だよねー。
Re: (スコア:0)
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 で埋められているとは限らない。
Re: (スコア:0)
そのVRAMの問題なのに…。
セキュアなデータを解放前に消去するのは常識でしょ。
Re: (スコア:0)
こういう奴が出力専用引数に渡すメモリをmemsetするアホなコード書いてんだろうな
Re: (スコア:0)
下で言われてますが、
・ゲームやブラウザでなくNVidiaのドライバの問題であるらしい。
・しかしNVidia曰く、「Windowsでは起きてねえよAppleに言え」
Re: (スコア:0)
ドライバ側でクリアするための処理を書いても、MacOS では高速化のためか、その処理をサボッてるのが原因らしい。
まぁ MacOSを 使える程度の用途であれば、その程度の問題は許容範囲だろう。
うちでも発生してる (スコア:0)
MacMini Mid2010 (GeForce320M) + OSX 10.10.5 で同じ現象が発生してる。
ただ、うちの場合は最近になって起きるようになった。
具体的にはシステム環境設定の「アクセシビリティ」→「ディスプレイ」の「透明度を下げる」をOnにしてから。
この設定変更で少し動きが軽くなったけど、VRAMのクリアも端折っているんだろうか?
chromeと聞いてS3を思い出す (スコア:0)
>ChromeとNVIDIAのドライバ
S3のChrome 9 HCかなんかだとふと思ってしまったよ
今更何という話だし、もはやchromeといえばGoogleなんだけどね
>NVIDIAのドライバとChrome
本文後半のこの書き方なら間違えることもないが、ひととき懐かしさに浸らせてもらいました。
Firefoxでも稀によくある (スコア:0)
HW支援とOMTC有効の状態では
タブ切り替えで前のタブの描画が残ったりとか
GPU活用についてはどこもまだまだ手探り感が否めないんでしょうね