CVE-2026-21710Node.js在HTTP请求处理逻辑中存在安全漏洞。当服务器接收到包含名为`__proto__`的Header的请求,且应用程序代码尝试访问`req.headersDistinct`属性时,会触发一个未捕获的`TypeError`异常。根本原因在于`dest["__proto__"]`被解析为`Object.prototype`对象,导致后续代码尝试在非数组对象上执行`.push()`操作。由于该异常在属性getter中同步抛出,无法被常规的`error`事件监听器拦截,从而导致Node.js进程崩溃,造成拒绝服务。
该漏洞利用了JavaScript中原型链的特殊性。在Node.js处理`req.headersDistinct`的内部实现中,代码试图将Header值收集到一个目标对象中。当Header名称为`__proto__`时,它不会作为普通键值对存储,而是直接引用了对象的原型。随后,代码逻辑假设该属性对应的值是一个数组并调用`.push()`方法,但`Object.prototype`并非数组,因此抛出TypeError。攻击者无需认证,只需发送特制的网络数据包即可触发。由于异常抛出机制发生在底层属性访问中,常规的错误处理中间件往往无法捕获,导致服务直接中断。