web-dev-qa-db-ja.com

WebGLはセキュリティ上の問題ですか?

WebGLが提供する低レベルのアクセスにより、WebGLは潜在的なセキュリティの問題ですか?

たとえば、Webページは、必要なシェーダーソースをコンパイルして実行することができます。

攻撃者が実装の脆弱性をより簡単に見つけることができるため、セキュリティはオープンソースのWebブラウザでは特に問題になるようです。

27
user9148

はい。WebGLは確かに潜在的なセキュリティリスクですが、リスクの大きさを評価し、議論することは困難です。ここにはいくつかのトリッキーな問題があります。ブラウザーはセキュリティリスクに対していくつかの防御策を講じていますが、それらの防御策が長期的に適切であるかどうかについては、いくつかの議論があるようです。

主要なリスクの1つは、WebGLがビデオカード上で直接コードを実行し、ビデオカードAPIへの直接アクセスを提供するAPIを公開することです。ブラウザーはこのコードを(ある程度)サンドボックス化しようとしますが、ブラウザーは悪意のある動作を防止するために設計された多くのセキュリティ制限を実施します。ただし、これらのAPIとその実装の多くは、もともと信頼されていないエンティティに提供されるように設計されていなかったため(完全に信頼されているネイティブアプリケーションでのみ使用できました)、任意のWebサイトに公開するとWebサイトが有効になるかどうかについて懸念があります。システムを攻撃します。

1つの高視認性白書 がありました( 続編 も参照)当時のブラウザでのWebGL実装のセキュリティを調べたところ、多数の脆弱性が見つかりました。彼らはいくつかのWebGL APIにメモリの安全性の問題を発見し、また、1つのWebサイトが他のWebサイトのピクセルデータを読み取ることを可能にするいくつかの攻撃を発見しました(機密性の侵害を可能にする可能性があります)。 この3番目の調査 も参照してください。この調査では、多数のブラウザおよびWebカード(現時点で)にこれらの脆弱性が存在することが実証されています。

ブラウザはこれにさまざまな防御策を講じて対応しました。既知のセキュリティ問題があるビデオカードをブラックリストに登録しています。彼らは既知のメモリ安全性の問題を修正しようとしました。 同じ起源のポリシー に従ってWebGLの使用が制限されており、悪意のあるWebサイトが WebGLを使用するのを防ぎますユーザーによる他のWebサイトの使用をスパイする

これらの防御策が長期的に適切であるかどうかについては、進行中の議論がいくつかあります。マイクロソフトは、 WebGLはセキュリティリスクが大きすぎ、既存の防御策は十分に堅牢ではないという立場をとっています 。一方、Mozillaは、彼らが講じた防御策が適切であり、WebGLがWebに重要な価値を提供するという立場をとっています。 Ars Technicaは 問題の優れた切り上げ ;を持っています。そして ここに別のプレスレポートがあります

追伸特にオープンソースのWebブラウザにとって問題であるというあなたの声明にはまったく同意しません。それは神話です。 オープンソースシステムとクローズドソースシステム を参照してください。これらはすでにこれらの引数をカバーしています。 ( Chrome vs Explorerも参照してください-このトピックに関する追加の思慮深い議論については、オープンソースの方が優れていることを平易な言葉で説明するにはどうすればよいですか?

31
D.W.

いくつかの重要なポイント:

  • WebGLはOpenGLをJavaScriptに公開するだけではありません。すべてのエントリポイントは、範囲外のメモリアクセスの可能性を排除するように制限されているため、ブラウザが範囲外のアクセスをチェックすることは常に可能です(これは適合性テストでカバーされています)。
  • WebGLでは、GPUでほぼ任意のシェーダーを実行できます。ただし、シェーダーは任意の汎用コードではないことに注意してください。これらは、ブラウザが範囲外のアクセスをチェックする方法でのみ、特定のメモリにアクセスできます。シェーダーは、GPUドライバーに渡される前に、ブラウザーに埋め込まれたシェーダーコンパイラーによって検証および変換されます。
  • WebGL仕様には、セキュリティ上の欠陥が1つしかありませんでした。WebGL仕様では、元々クロスオリジンの画像をWebGLテクスチャとして使用することが許可されており、タイミング攻撃がこれらを正常に読み取ることができることが実証されました。これは2011年半ばに修正され、WebGL仕様の現在のバージョン1.0.1は安全です。
  • WebGLセキュリティの詳細については、こちらをご覧ください http://www.khronos.org/webgl/security/
10
Benoit Jacob

セキュリティは特にオープンソースのWebブラウザーで問題になるようです

あなたは非常に間違っているです。多くの場合、コードをチェックする目がはるかに多いため、オープンソースプログラムはクローズドソースプログラムよりもはるかに安全であることが証明されています。

また、すべてのブラウザはこれらのことをサンドボックスで実行します。サンドボックスから抜け出すのは難しいでしょうが、オープンソースのブラウザと同じくらい、クローズドソースでは問題になります。

3
Lucas Kauffman

WebGLとJavaScriptを比較してみましょう。

WebGLとJavaScriptを介した(シェーダーコードの実行)の重要な違いは、JavaScriptがCPUで実行されるのに対して、シェーダーコードがGPUカードで実行されることです。

コードが解釈されるかコンパイルされるかはほとんど重要ではありません。結果として生じる脆弱性の可能性はまだそこにあります。

つまり、悪意のあるスクリプトがブラウザの刑務所から抜け出すと、基本的にあなたのPCにアクセスできるようになるので、javascriptはより多くの乱用能力を備えています。不正なWebGLシェーダースクリプトがGPUにアクセスする可能性があります。

この単純な見方を複雑にする要因があります。 JavaScriptはしばらく前から存在していたため、より詳細な調査を受け、多くの穴が塞がれました。 JavaScriptははるかに複雑です。言語としてのJavaScriptははるかに複雑です。などなど.

1
Michael Slade

WebGLは、GPUコアへのGL=パイプラインへのアクセスを可能にします。一部のメーカーは、GPUをCPUチップに直接統合します。これにより、GPUは、独自のメモリをそのままではなく、内部CPUメモリを共有できます外部グラフィックチップセットの場合これは潜在的な情報セキュリティリスクです。

GPUなどの消費電力の大きい並列プロセッサは、暗号化アプリケーションにも最適です。

ボットネットには、webglベースのビットマイナーの多くの例があります。情報セキュリティの脅威ではありませんが(逆に、ビットマイナーはブロックチェーン情報セキュリティの基盤です)、これらのボットネットは、実行している無意識のデバイスの膨大なネットワークから驚異的な量の電力を盗みます。

これは、ビットコインが成長しているが、ほとんど隠されているカーボンフットプリントを持っていることを意味し、これは潜在的な環境セキュリティの脅威です。

一部のWebサイトがCPU負荷を増加させずに表示を遅くしていることに気付いた場合、GPUでwebglコードを実行している可能性が非常に高いです。また、不思議なモバイルデバイスの電力消費の原因として考えられます。

モバイルアプリケーション(Webブラウザーなど)は、バックグラウンドで永続的にGPUコードを実行でき、それらを停止するにはデバイスの再起動が必要になる場合があります。

0