CVE-2026-48930 (CVSS 9.8) - A flaw in Node.js TLS hostname handling can cause Embedded-nul hostnames can lea

CVE-2026-48930是Node.js TLS主机名处理中因空字节截断导致的严重漏洞(CVSS 9.8)。影响Node.js 22、24、26版本,允许攻击者绕过主机名验证实施中间人攻击。本文深入分析漏洞原理、攻击场景及修复方案。

🔥 热门漏洞情报 · NVD-Latest · 2026-06-26

CVE-2026-48930 (CVSS 9.8) - A flaw in Node.js TLS hostname handling can cause Embedded-nul hostnames can lea

Critical · CVSS 9.8 空字节注入 / 输入验证不当
CVE-2026-48930

📋 漏洞概述

Node.js的TLS主机名验证中存在空字节截断漏洞,可被用于静默的权威重绑定攻击,导致绕过安全限制。

📋 基础信息

受影响版本Node.js 22.x, Node.js 24.x, Node.js 26.x
漏洞类型空字节注入 / 输入验证不当
CVSS9.8 · Critical
CVECVE-2026-48930

🔬 漏洞根因

Node.js在TLS主机名校验时,将包含嵌入空字节('\0')的主机名传递给底层C库解析器绑定。C语言的字符串处理函数遇空字节即截断,导致后续只有空字节之前的部分被用于DNS查询或证书验证,而完整的恶意主机名(如'attacker.com\0.trusted.com')在TLS握手后被解析为'trusted.com'的证书,但实际上连接目标是'attacker.com',从而绕过主机名验证实现权威重绑定。

🎯 攻击场景

1. 攻击者注册一个包含空字节的域名(如 'evil\0.example.com')并配置其证书。 2. 攻击者诱导Node.js客户端连接该域名,或通过中间人篡改DNS响应指向攻击者控制的IP。 3. 客户端TLS握手时,Node.js将包含空字节的主机名传递给验证函数。 4. 底层C函数截断主机名,仅使用空字节前的部分('evil')进行证书匹配,而合法的证书往往匹配截断后的短名称(或可被攻击者自行签发匹配'evil'的证书)。 5. 连接建立成功,攻击者实现HTTPS劫持或中间人攻击,窃取或篡改加密通信数据。

💥 漏洞影响

攻击者可绕过Node.js TLS主机名验证,实现对加密连接的中间人攻击(MITM),窃取、篡改敏感数据或降级通信安全。影响所有使用Node.js进行TLS通信的服务端与客户端应用,包括Web服务器、API服务、数据库驱动等。CVSS 9.8表明可远程无认证利用且机密性、完整性和可用性均受严重影响。

🛡️ 修复建议

1. 升级Node.js至修复版本(官方尚未发布最终修复版本时,建议关注Node.js安全公告并应用补丁)。 2. 临时缓解措施:在应用层对用户提供的主机名进行严格过滤,剔除或转义空字节('\0'),并仅允许通过白名单验证的受信任域名发起TLS连接。 3. 使用额外的证书固定(Certificate Pinning)机制减少中间人攻击面。

📎 参考链接

🚨 威胁评估

📈 EPSS 利用概率低 (0.4%) (高于 29.9% 的漏洞)
🚨 CISA KEV未被已知利用
🔧 公开 PoC暂无公开 PoC

⚠️ 本文由漏洞情报系统自动生成,仅供安全研究与防御参考。生成时间: 2026-06-28 08:08 | 来源: NVD-Latest

🤖 常见问题解答(FAQ)

❓ 如何检测Node.js应用中是否存在此漏洞?

检查Node.js版本是否在22.x、24.x、26.x范围内;使用包含空字节的主机名(如'test\0.example.com')进行TLS连接测试,观察是否成功建立TLS握手。

❓ 此漏洞对Node.js服务器端影响大吗?

影响极大。攻击者可通过DNS劫持或恶意域名诱导,使服务器TLS客户端误连恶意站点并泄露服务端敏感数据或凭证。

❓ 空字节注入为什么能绕过TLS校验?

因为Node.js将含空字节的主机名传入C层字符串函数时,空字节被解释为字符串结束符,导致后续主机名部分被忽略,但TLS握手使用的原始域名仍包含完整恶意部分,造成验证与实际连接不匹配。

[!] CONTACT_CHANNELS

如需商务合作、技术咨询或漏洞反馈,请通过以下离岸节点联系作者。

> PING_AUTHOR (@A1RedTeam)