JavaScript V8 安全性

Mak*_*sym 0 javascript security v8 node.js

我正在阅读有关V8 JavaScript 引擎的文章,并惊讶于 Node JS 和 Browser JS 使用相同的 V8 引擎并且生成相同的机器代码。

问题:浏览器有责任防止访问网络/操作系统/等吗?对于不同类型的注射和很多安全风险来说,这似乎是一个巨大的领域......

jmr*_*mrk 5

安全性显然是 Web 平台上的一个大问题,因此内置了几层保护:

  • V8 本身甚至不提供对操作系统或网络的访问。它是一个虚拟机,在虚拟机中运行东西(如 JavaScript 代码)的后果之一是它提供了与主机系统的隔离。(您在 node.js 中看到的操作系统/网络功能由 node.js 提供,Chrome 中不存在。)

  • Chrome 还对运行 V8 的渲染器进程进行了沙箱处理。因此,即使有人找到了一种利用 V8 生成和运行任意机器代码的方法(V8 非常努力地使之成为不可能),他们仍然必须找到一种方法来破解脱离沙箱(这可以防止对系统进行疯狂访问;例如,渲染器进程甚至无法从磁盘读取文件或将文件写入磁盘)。

在服务器和浏览器中运行“相同的 V8 引擎”这一事实并不构成风险。无论服务器和客户端上运行什么软件(例如,Apache/Firefox 或 node.js/Chrome 或任何其他组合),服务器和客户端之间所有基于 HTTP 的交互都是相同的。

将东西注入 V8 应该真的很困难(如果可能,这是一个错误!),所以如果你有具体的想法如何做到这一点,我们愿意与你一起修复它;-)

这一切都归结为:有一组明确定义的 JavaScript 程序可以在浏览器中执行的操作(这些都应该是安全的),并且该平台无法执行任何其他操作。如果可以做别的事情,这是一个安全漏洞,并且当您举报会(可能)赚取赏金的错误。