JavaScript V8 安全
JavaScript V8 security
我正在阅读有关 V8 JavaScript 引擎 的文章,令我震惊的是 Node JS 和 Browser JS 使用相同的 V8 引擎,并且以这种方式生成相同的机器代码。
问题:
保护不被访问Network/OS/etc是浏览器的责任吗?对于不同类型的注入和很多安全风险来说,这似乎是一个巨大的领域......
安全显然是 web 平台上的一个大问题,因此内置了多层保护:
V8 本身甚至不提供对 OS 或网络的访问。它是一个虚拟机,在虚拟机中 运行ning 东西(如 JavaScript 代码)的后果之一是它提供了与主机系统的隔离。 (您在 node.js 中看到的 OS/network 功能由 node.js 提供,在 Chrome 中不存在。)
Chrome 还会将 V8 运行 所在的渲染器进程沙盒化。因此,即使有人找到了利用 V8 生成和 运行 任意机器的方法代码(V8 非常努力地使之成为不可能),他们仍然必须找到一种方法来突破沙箱(这可以防止对系统的野蛮访问;例如渲染器进程甚至不能从磁盘读取文件或写入文件到磁盘)。
服务器和浏览器中 "the same V8 engine" 运行 的事实不构成风险。服务器和客户端之间所有基于 HTTP 的交互都是相同的,无论两者上 运行 是什么软件(无论是 Apache/Firefox 还是 node.js/Chrome 或任何其他组合)。
将东西注入到 V8 中应该真的非常困难(这是一个可能的错误!),所以如果您有具体的想法如何做到这一点,我们愿意与您一起修复它;-)
这一切都归结为:JavaScript 程序可以在浏览器中执行一组明确定义的操作(这应该都是安全的),并且该平台无法执行任何其他操作。如果 可以做其他事情,这是一个安全漏洞,您将(可能)在报告时获得漏洞赏金。
我正在阅读有关 V8 JavaScript 引擎 的文章,令我震惊的是 Node JS 和 Browser JS 使用相同的 V8 引擎,并且以这种方式生成相同的机器代码。
问题: 保护不被访问Network/OS/etc是浏览器的责任吗?对于不同类型的注入和很多安全风险来说,这似乎是一个巨大的领域......
安全显然是 web 平台上的一个大问题,因此内置了多层保护:
V8 本身甚至不提供对 OS 或网络的访问。它是一个虚拟机,在虚拟机中 运行ning 东西(如 JavaScript 代码)的后果之一是它提供了与主机系统的隔离。 (您在 node.js 中看到的 OS/network 功能由 node.js 提供,在 Chrome 中不存在。)
Chrome 还会将 V8 运行 所在的渲染器进程沙盒化。因此,即使有人找到了利用 V8 生成和 运行 任意机器的方法代码(V8 非常努力地使之成为不可能),他们仍然必须找到一种方法来突破沙箱(这可以防止对系统的野蛮访问;例如渲染器进程甚至不能从磁盘读取文件或写入文件到磁盘)。
服务器和浏览器中 "the same V8 engine" 运行 的事实不构成风险。服务器和客户端之间所有基于 HTTP 的交互都是相同的,无论两者上 运行 是什么软件(无论是 Apache/Firefox 还是 node.js/Chrome 或任何其他组合)。
将东西注入到 V8 中应该真的非常困难(这是一个可能的错误!),所以如果您有具体的想法如何做到这一点,我们愿意与您一起修复它;-)
这一切都归结为:JavaScript 程序可以在浏览器中执行一组明确定义的操作(这应该都是安全的),并且该平台无法执行任何其他操作。如果 可以做其他事情,这是一个安全漏洞,您将(可能)在报告时获得漏洞赏金。