内容提要
Node.js 存在多个安全漏洞,包括对任意主题替代名称(SAN)类型的接受,可能导致绕过名称约束。修复版本禁用 URI SAN 类型,并对 SAN 进行字符转义以防止注入。Node.js 还未正确处理多值相对区分名称,可能被攻击者利用。建议用户更新到最新版本以确保安全。
延伸解读
漏洞影响范围与修复机制
本次修复涉及四个安全漏洞:CVE-2021-44531、CVE-2021-44532、CVE-2021-44533 和 CVE-2022-21824。前三个与证书验证相关,分别涉及 URI SAN 类型接受、SAN 字符串注入以及多值相对区分名称处理不当,可能导致绕过名称约束或证书主体验证。第四个是 console.table() 的原型污染问题,但控制有限。修复版本通过禁用 URI SAN 类型、转义 SAN 字符、拒绝多值 RDN 以及使用空原型对象来缓解这些漏洞。
临时回退选项与风险
对于证书验证相关的修复,Node.js 提供了 --security-revert 命令行选项,允许用户临时恢复旧行为。这为依赖特定证书验证行为的应用提供了过渡方案,但回退会重新引入漏洞风险。因此,仅应在明确了解风险且无法立即适配的情况下使用,并尽快迁移到安全配置。
第三方代码的潜在风险
虽然受影响版本的 Node.js 本身不会接受多值相对区分名称,但第三方代码如果依赖 Node.js 对证书主体的模糊表示,仍可能受到 CVE-2021-44533 的影响。开发者应检查自身或依赖库中处理证书主体的逻辑,确保其不依赖于可能被误解的格式,并及时更新相关依赖。
Q&A
Node.js 17.3.1 存在哪些安全漏洞?
Node.js 17.3.1 存在多个安全漏洞,包括对任意主题替代名称(SAN)类型的接受,可能导致绕过名称约束,以及未正确处理多值相对区分名称。
如何修复 Node.js 中的 SAN 类型漏洞?
修复版本禁用 URI SAN 类型,并对 SAN 进行字符转义以防止注入。
为什么建议用户更新到最新版本的 Node.js?
建议用户更新到最新版本以确保安全,避免受到已知漏洞的攻击。
Node.js 如何处理多值相对区分名称的漏洞?
Node.js 未正确处理多值相对区分名称,攻击者可能利用这一点来绕过证书主题验证。
Node.js 17.3.1 的修复版本有哪些特性?
修复版本禁用 URI SAN 类型,并对 SAN 进行字符转义,防止注入攻击。
Node.js 中的 console.table() 函数存在什么安全问题?
console.table() 函数存在原型污染的安全问题,允许用户控制输入传递给属性参数。