Node.js 16.13.2(长期支持版)

Node.js 16.13.2(长期支持版)

💡 原文英文,约600词,阅读约需2分钟。
📝

内容提要

Node.js 存在多个安全漏洞,包括对任意主题替代名称(SAN)类型的接受,可能导致绕过名称约束。修复版本禁用 URI SAN 类型,并对多值相对区分名称处理不当。此外,console.table() 函数也存在原型污染风险。相关漏洞详情将发布在 CVE-2021-44531、CVE-2021-44532 和 CVE-2021-44533。

🔎

延伸解读

证书验证漏洞的修复与回退

本次更新修复了三个证书验证相关漏洞:CVE-2021-44531、CVE-2021-44532和CVE-2021-44533。修复后,Node.js在检查证书与主机名匹配时会禁用URI SAN类型,并对包含问题字符的SAN进行转义,同时不再接受多值相对区分名称。这些行为可通过--security-revert命令行选项回退,但回退会重新引入漏洞,应仅在兼容性测试等必要场景下临时使用。

console.table()原型污染风险

console.table()函数存在原型污染漏洞(CVE-2022-21824)。当用户控制的输入作为properties参数,且第一个参数是至少包含一个属性的普通对象时,可能通过__proto__属性污染原型。该漏洞控制能力有限,仅允许将空字符串赋给对象原型的数字键。修复版本为这些属性分配的对象使用null原型,从而阻断污染路径。

第三方代码的潜在风险

对于多值相对区分名称处理不当的漏洞(CVE-2021-44533),受影响的Node.js版本本身不会接受多值相对区分名称,因此不会直接受到此类攻击。但第三方代码如果依赖Node.js对证书主题的模糊表示,则可能仍然存在风险。开发者应检查依赖库中处理证书主题的逻辑,确保其能正确区分单值和多值相对区分名称。

❓

Q&A

Node.js 16.13.2 修复了哪些安全漏洞?

Node.js 16.13.2 修复了对任意主题替代名称(SAN)类型的接受、URI SAN 类型的禁用以及 console.table() 函数的原型污染风险。

CVE-2021-44531、CVE-2021-44532 和 CVE-2021-44533 具体指的是什么漏洞?

CVE-2021-44531 涉及 SAN 类型的接受问题,CVE-2021-44532 处理多值相对区分名称的错误,CVE-2021-44533 关注 console.table() 的原型污染风险。

如何在 Node.js 中禁用 URI SAN 类型?

在 Node.js 中,可以通过检查证书与主机名时禁用 URI SAN 类型,具体操作是使用 --security-revert 命令行选项。

console.table() 函数的原型污染风险是什么?

console.table() 函数的原型污染风险允许用户控制的输入影响对象的原型,可能导致安全问题。

Node.js 16.13.2 的修复版本有哪些重要改动?

修复版本禁用了 URI SAN 类型,并对多值相对区分名称进行了正确处理,增强了安全性。

Node.js 中的 SAN 类型是什么?

SAN(Subject Alternative Name)类型用于在证书中指定多个主机名或 IP 地址,以便于 SSL/TLS 连接的验证。

🏷️

标签

➡️

继续阅读