「WebGL」にセキュリティ問題、規格自体の大規模な修正が必要に? 32
ストーリー by hylom
普及する前で良かったというかなんというか 部門より
普及する前で良かったというかなんというか 部門より
あるAnonymous Coward 曰く、
Webブラウザ向けの3Dグラフィック描画規格「WebGL」に、深刻なセキュリティ問題があるとの指摘が公表された(ITmedia)。
「任意のコード実行、サービス妨害(DoS)、クロスドメイン攻撃などに利用される恐れがある」とのことで、WebGLが有効になっているFirefox 4やGoogle ChromeなどではWebGLを無効にすることを勧告している。
詳細についてはMono関連の開発者でもあるatsushieno氏のはてなダイアリー「WebGLの(実質的に)仕様上の脆弱性について(日本語訳)」にて紹介されているが、WebGL経由でGPUに悪意のあるコードを実行させられる可能性がある、というものだ。たとえば、非常に負荷の高いレンダリングを行うことによるGPU(やドライバなど)のクラッシュや、クロスドメインの画像読み取りなどが可能になるという。
これらはWebGLの仕様に含まれる問題であるため、対策は難しいようだ。
実証コード (スコア:3, 興味深い)
クロスドメインの画像を盗むほうの Proof of Concept
http://www.contextis.co.uk/resources/blog/webgl/poc/index.html [contextis.co.uk]
数ピクセルまとめて明暗を読み取っています。このサイズの画像で解析完了するまでに数分。
出来ることが複雑すぎると言うことか (スコア:3, 興味深い)
変な例えだけど、圧縮された画像を展開するライブラリを下手に作ると、 「ある種の細工が施された偽JPEGファイル」を読み込ませたら任意のコードが実行されてしまうようなバグを盛り込んじゃうこともあり得る (実際に、解凍ソフトやTrueTypeのレンダリングエンジンにバッファオーバーランの脆弱性が見つかった例とかもある)。 もちろん、ブラウザにはそんな下手なライブラリは採用されない。 どんなに悪意を持ったページを開いても安全、と保証するためには、 正しい物から間違った物までどんなデータを食わせても、変なことが起こらないというのを徹底的にチェックする必要があるし、(多分)されている。
WebGLでは画像データに加えて、「3次元のジオメトリデータ」をWebページ上に配置すれば、 ブラウザはそれをGPUのアクセラレーションを最大限使って画面に表示してくれる。 この「GPUのアクセラレーションを最大限使って」というのが、上の画像の例での画像表示ライブラリの部分に当たる。 つまり、GPUのアクセラレーションの部分が、ブラウザ並みにセキュアでバグ無しになってないと困るけど現状はまだまだバグらだけ・・・と言うのが大きな問題。
GPUメーカーは、高速化には熱心でも、「どんなデータを食わせても安全」という方向性のセキュリティ確保には熱心では無い。 何せ今までは悪意を持って細工されたデータを食わされる可能性は考える必要が無かったから。 どっちかというと、データの方は、どんなGPUでも動くようにとゲームメーカーが誠心誠意、丁寧に調整してくれてたような世界。
あと、仮にバグが完全に無くなっても、GPU内部でプログラムを動かせるという仕様上DoS攻撃にも使えてしまうやら、クロスサイトで画像の中身を取得する攻撃に使えるやらと、セキュリティを今まで考えていた水準に戻すのは大変、という話っぽい。
とりあえずは完全にOFFにするか、「WebGLを検出しました。ONにしますか?」とか「このサイトからのWebGLを常に信用する」みたいな昔ながらの対処しか無いんじゃ無いかな。
Re: (スコア:0)
なんかGPUとか洋ゲーは今動いてればそれでよしって感が強いよね
ローカルでチートとか使って遊んでるとゲームエンジンの仕様の範囲内のはずなのに表示がメチャクチャになったり
異常系のテストしてないっていうのかな
Re:出来ることが複雑すぎると言うことか(オフトピ) (スコア:0)
ゲームなんて、当たり判定用の設定や
カメラのパラメータがほんの少し狂うだけで未定義の世界へようこそ状態ですよ…
おかしな絵が見える所が残ってないか、
角度を変えながらひたすらキャラに体当たりさせたり
右スティックぐるんぐるん振り回したりして自分が飽きて死にそうになる事はあっても
絵が崩壊したときに実際どんな現象が起きるかなんてのはどうでもいい事なのです。
# ゲームエンジンの仕様とチートで何してるかわからんから適当だけど
Re: (スコア:0)
もうひとつ「CPUでレンダリングする」という手もありますよ。
最近のCPUでならそう非現実的な話でもないでしょう。
あんまこういう言いかたしたら良くないかもだけど (スコア:1)
今回に限っては完了した仕様を実装するという意味で保守的なほうに傾けているIE9は助かったカンジかなぁ?
現状WebGLで高性能プログラミングする必要性は低い(今後は増えるかもだけど)から、しばらくシェーダへのコード注入は予防的でいいかもしれませんね。
# 素の機能だけでも3Dやるにはそれなりに機能あるだろうし...。
M-FalconSky (暑いか寒い)
Re:あんまこういう言いかたしたら良くないかもだけど (スコア:2, 参考になる)
WebGLには固定シェーダーが入ってないので、プログラマブルシェーダーを禁止されると何もレンダリングできません.....
Re:あんまこういう言いかたしたら良くないかもだけど (スコア:1)
うーん、それは知りませんでした。
# OpenGLの系譜でいいんですよね?初期のOpenGLからデフォルトのシェーダとかないのかな...
追加使用でブラウザ側が用意するシェーダセットとかあったらコードが楽になりそうだけど、どうだろうか...
M-FalconSky (暑いか寒い)
Re: (スコア:0)
> WebGLには固定シェーダーが入ってないので、
それこそまさに「仕様の問題」以外の何ものでもないじゃん。
Re: (スコア:0)
WebGLに限りませんが、いまどきの3DCG用APIはシェーダ書かないと何も動きません。
描画に使えるような「素の機能」なんてないんです。
またしても最強ブラウザOperaに死角はなかった(キリッ (スコア:1)
なお、WebGL対応なプレビュー版 [opera.com]もあるにはあります。
クロスドメインの画像読み取りはGPUへのプログラム送り込みとは別問題 (スコア:0)
WebGLを無効にする方法は? (スコア:0)
Firefox 4やGoogle ChromeなどではWebGLを無効にすることを勧告している
で、無効にする方法はどこにあるんだろう?ワークアラウンドも欲しいです。
Re:WebGLを無効にする方法は? (スコア:2, 参考になる)
とりあえずここ視て無効にしてます。
Re:WebGLを無効にする方法は? (スコア:1, 興味深い)
Chromeの場合、自動アップデートがかかるたびにショートカットを設定しなおしになるのではありませんか?
あと関連付け経由で起動した場合ショートカットの起動オプションは無視される(そもそも見ない)とか、穴が多すぎていろいろヤバい。
Re: (スコア:0)
レジストリで設定という手もあるし。
Re: (スコア:0)
Re: (スコア:0)
Firefoxは使ってないから知らん
Re: (スコア:0)
FirefoxならアドオンにConfigration Mania入れて
Configration Maniaメニューから
アドレスバーに[about:config]入れてから
オプション検索で[webgl.disabled]を[true]かな?
(webglでひっかけて軒並み無効かのほうがいいのだろか?)
Re: (スコア:0)
Configuration Maniaを入れる理由がわかりませんが。。。どうして?
Re: (スコア:0)
今回のために入れる必要はありません。
そもそもconfigutarion maniaのパネルにwebglの項目がない。
Re: (スコア:0)
Re: (スコア:0)
それは非常に正しいのだが、Norton Internet SecurityがFirefox4.0.1に対応したのはここ数日の話(´・ω・`)(ツールバーだけどね)
18.5.xではHotFix入れてFirefox4.0.0に対応し、18.6.xでFirefox4.0.1に対応した。しかもまだ全ユーザーに18.6.xが入っているわけでもなさそう。
で、それに対して「 非互換性が問題なので検証してからでないと出せない! [norton.com]」とキリっと言ってのけている。セキュリティアップデートがあればそれを入れる、それ
CPUと同じく (スコア:0)
EMETみたいなソフト対応で
緩和していくんでしょうかね?
Re:CPUと同じく (スコア:2, 参考になる)
Re:CPUと同じく (スコア:1)
プリンタにおけるPostScriptの問題と同様ですね. PostScriptも印刷用として完全なプログラミング言語だったので, 同様の停止問題が起きましたから. PostScriptというか印刷処理については印刷業界とかで必要な項目が洗い出されていましたから, 特殊な用途以外はサブセット的なPDFで対応できましたけど, グラフィックについてはまだまだ発展途上かつ処理のバリエーションが多岐にわたっているので, プログラミング言語であることを捨てられないのでしょうね.
Re: (スコア:0)
シェーダー言語というのは、GPUにプログラムを送り込んで実行する「仕様」なので…。
Webアプリ版 Angry Birds (スコア:0)
http://www.itmedia.co.jp/news/articles/1105/12/news017.html [itmedia.co.jp] によると、Chrome Web Store で公開された Angry Birds は、WebGL による高速化が一つのポイントのようですが、こういうゲームは今後どうするんでしょうね
まあそういうなよ (スコア:0)
仕様ならしようがない。
Re:まあそういうなよ (スコア:1)
仕様はあるんだからどうしようと言っているわけで。
Re: (スコア:0)
え?仕様だったんじゃないの?
#AC
GPUのドライバは品質が低すぎる (スコア:0)