Node.js 曾容易受到哈希洪水远程拒绝服务攻击,因为哈希表种子在 Node.js 的特定发布版本中是常量。这是由于默认启用 V8 快照构建,导致初始随机种子在启动时被覆盖。感谢 Google Project Zero 的 Jann Horn 报告此漏洞。
你可以在此处阅读关于哈希洪水漏洞的一般类别:链接。
在此次更新中,快照已默认禁用。严重依赖 vm.runInNewContext 的代码很可能会遇到性能回归,直到实现更好的解决方案。
这是一个高严重性漏洞,影响所有活跃发布线(4.x、6.x、8.x)以及 7.x 线。
允许将 http.get() 使用的选项对象的 auth 字段设置为数字的应用程序代码,可能会导致创建/使用未初始化缓冲区作为认证字符串。例如:
const opts = require('url').parse('http://127.0.0.1:8180');
opts.auth = 1e3; // 此处为数字会触发缺陷
require('http').get(opts, res => res.pipe(process.stdout));
在 4.x 版本中已更新对 auth 字段的解析,当 http.get() 被调用时,如果 auth 字段是数字,将抛出 TypeError。
这是一个低严重性缺陷,仅影响 4.x 发布线。