谷歌工程师提出方案缓解JavaScript原型污染漏洞

谷歌工程师向TC39工作组提交提案,旨在通过引入可选安全模式来缓解JavaScript原型污染漏洞,该漏洞允许攻击者在运行时操纵不受控制的对象。

谷歌工程师提出方案缓解JavaScript原型污染

John Leyden
2023年2月6日 15:57 UTC
更新:2023年2月6日 17:02 UTC

谷歌的软件工程师提出了一项提案,旨在遏制原型污染——这类漏洞已成为Web安全的祸害。原型污染是JavaScript语言的一个缺陷,允许攻击者在运行时操纵他们无法控制或无法访问的对象。该问题源于对象(用于在运行时保存数据)与其蓝图(决定这些对象的行为方式)之间缺乏明确的界限。

背景

原型污染:影响JavaScript应用程序的危险且被低估的漏洞

这项由谷歌支持的提案已提交给技术工作组TC39批准,旨在创建JavaScript对象和蓝图之间的边界。该技术通过"移除允许攻击者从对象跳转到蓝图的途径"来实现。提案的技术细节已发布在GitHub上。

可选安全模式

正如GitHub帖子中所解释的,“该提案试图通过引入可选安全模式来缓解原型污染,该模式使得无法使用字符串属性键访问原型,而是需要使用方法(Object.getPrototypeOf)或提议的新符号属性键来访问”。

提案的合著者Santiago Diaz告诉The Daily Swig:“目标是打破已知的利用技术,同时尽可能与现有代码库兼容,以便这种缓解措施可以在互联网上广泛采用。”

负责维护JavaScript规范的工作组TC39上周批准从阶段0推进到阶段1,开始了其五部分批准过程的下一阶段。Diaz解释说:“这意味着TC39认为污染是一个值得研究(并希望解决)的问题。在接下来的几个月里,我们将迭代提案的具体方面,并进行工程以找到正确的权衡平衡点,希望使其既适合TC39成员,也适合开发人员采用。”

一旦提案达到最后阶段(阶段4),提案即被视为最终版本,浏览器供应商可以对其软件进行更改。“这反过来向开发人员发出信号,开始采用这种新的缓解措施并将其投入生产,“Diaz总结道。

符号解决方案

The Daily Swig母公司PortSwigger的安全研究员Gareth Hayes对这些提案表示了兴趣。“这是一项通过让开发人员能够通过执行一些代码来移除像__proto__这样的属性来防止原型污染的提案,这些代码启用了安全模式并移除了这些属性,“Hayes说。

“他们提议使用符号使站点能够继续使用__proto__功能,因此站点不会中断,攻击者也无法提供这些符号,因为这需要JavaScript执行。”

谷歌的提案并非首创。然而,根据谷歌的博客文章,现有的防止原型意外更改的解决方案(如Object.freeze、preventExtensions和seal)有许多"缺点,使其难以部署”,该博客文章概述了这些缺点。

相关

在Python中发现类似原型污染的漏洞变体


comments powered by Disqus
使用 Hugo 构建
主题 StackJimmy 设计