3

通读这个关于多线程 javascript 的问题,我想知道在允许 javascript 产生多线程时是否会有任何安全隐患。例如,是否存在恶意脚本反复生成线程以试图压倒操作系统或解释器并触发进入“未定义行为领域”的风险,或者这几乎不是问题?攻击可能利用支持非线程实现将免疫的线程的 javascript 的假设实现的任何其他方式?

更新: 请注意,锁定浏览器与创建未定义的行为漏洞利用不同。

4

4 回答 4

2

不,多线程不会在完美的实现中增加额外的安全问题。线程化的 javascript 会增加 javascript 解释器的复杂性,使其更有可能存在可利用的错误。但是单独的线程不会增加任何安全问题。

javascript 中不存在线程,因为“Threads Suck” - 从语言设计器处了解更多信息(http://weblogs.mozillazine.org/roadmap/archives/2007/02/threads_suck.html

于 2008-11-27T01:41:46.570 回答
1

好吧,您已经可以锁定浏览器并严重拖慢 JS 行为不佳的系统。开明的浏览器已经对这类事情实施了检查,并且会在它失控之前阻止它。

我倾向于假设线程将以类似的方式处理。


也许您可以解释一下“未定义的行为”是什么意思?允许不受信任的脚本直接控制正在运行的 OS 本地线程数量的解释器会非常幼稚 - 我不知道 Gears 是如何运行的,但由于 API 以Workers in WorkerPools 为中心,如果他们并没有将使用的本机线程总数限制在非常低的数量。

于 2008-09-02T16:55:14.023 回答
0

好吧,我认为多线程 javascript 的唯一主要示例是 Google 的 chrome(他们是否会发布它已经 JEEZ),如果我理解它,javascript 每个选项卡只会有一个进程,所以除非它开始生成选项卡(弹出窗口)我会假设这将是一个空问题,但我认为谷歌无论如何都有这个问题,它们在沙箱中运行所有的 javascript。

于 2008-09-02T16:50:03.800 回答
0

同样,我们需要区分 1) 语言中的多线程支持(我认为不会认真讨论这种情况)和 2) 在浏览器中的 JavaScript 引擎/解释器中使用多线程。

对于#2,我看不出这如何真正为引擎/解释器添加任何可能的安全问题,除非实现中存在缺陷。

于 2008-09-02T16:51:01.210 回答