質問

通読する この質問 マルチスレッド JavaScript では、JavaScript が複数のスレッドを生成できるようにすることでセキュリティに何らかの影響があるのではないかと考えていました。たとえば、悪意のあるスクリプトが、オペレーティング システムやインタープリタを圧倒し、「未定義動作領域」への侵入を引き起こすために、次から次へとスレッドを繰り返し生成するリスクはあるのでしょうか、それとも、それはほとんど問題ではないのでしょうか。非スレッド実装では影響を受けないスレッドをサポートする JavaScript の仮想実装を攻撃が悪用する可能性のある他の方法はありますか?

アップデート: ブラウザをロックすることは、未定義の動作のエクスプロイトを作成することと同じではないことに注意してください。

役に立ちましたか?

解決

いいえ、完全な実装では、複数のスレッドがセキュリティ上の問題を追加することはありません。スレッド化された JavaScript では、JavaScript インタプリタが複雑になるため、悪用可能なバグが発生する可能性が高くなります。ただし、スレッドだけではセキュリティ上の問題が発生することはありません。

「スレッドが最悪」であるため、JavaScript にはスレッドが存在しません - 言語設計者からの詳細を読む (http://weblogs.mozillazine.org/roadmap/archives/2007/02/threads_suck.html)

他のヒント

まあ、すでにブラウザをロックして、 真剣に 動作の悪い JS を使用するとシステムの速度が低下します。賢明なブラウザはこの種のチェックを実装しており、手に負えなくなる前に阻止します。

私は、スレッドも同様の方法で処理されると想定する傾向があります。


おそらく、「未定義の動作」が何を意味するのか説明できますか?信頼できないスクリプトの実行を許可するインタープリター 直接 実行される OS ネイティブのスレッドの数を制御するには、 信じられないほど 素朴 - Gears がどのように物事を実行するのかわかりませんが、API は Workerにいる WorkerPool使用するネイティブ スレッドの総数を非常に低い数に制限していないとしたら、私は非常に驚くでしょう。

マルチスレッド JavaScript の唯一の主要な例は、Google の Chrome だと思います (もうリリースしてくれるでしょうね)。私が理解しているのであれば、JavaScript はタブごとに 1 つのプロセスしか実行しないので、タブ (ポップアップ) を生成し始めない限り、私は推測するでしょう。これは何も問題ではありませんが、Google はすべての JavaScript をサンドボックスで実行しているため、いずれにしてもそのことを秘密にしていると思います。

繰り返しになりますが、1) 言語でのマルチスレッドのサポート (将来何かが起こるとは真剣に議論されていないと思います) と 2) ブラウザの JavaScript エンジン/インタープリタでのマルチスレッドの使用を区別する必要があります。

#2 については、実装に欠陥がない限り、これによって実際にどのようにセキュリティ上の懸念がエンジン/インタープリターに追加されるのかわかりません。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top