Ошибка в обработке HTTP-запросов Node.js приводит к необнаруженной ошибке TypeError, когда запрос получен с заголовком с именем __proto__, а приложение обращается к req.headersDistinct.
Когда это происходит, `dest["__proto__"]` разрешается в `Object.prototype`, а не в `unопределённый`, в результате чего `.push()` вызывается для не-массива. Это исключение генерируется синхронно внутри метода получения свойства и не может быть перехвачено прослушивателями событий error, то есть его нельзя обработать без упаковки каждого доступа к `req.headersDistinct` в `try/catch`.
* Эта уязвимость затрагивает все HTTP-серверы Node.js в версиях **20.x, 22.x, 24.x и v25.x**.
Показать оригинальное описание (EN)
A flaw in Node.js HTTP request handling causes an uncaught `TypeError` when a request is received with a header named `__proto__` and the application accesses `req.headersDistinct`. When this occurs, `dest["__proto__"]` resolves to `Object.prototype` rather than `undefined`, causing `.push()` to be called on a non-array. This exception is thrown synchronously inside a property getter and cannot be intercepted by `error` event listeners, meaning it cannot be handled without wrapping every `req.headersDistinct` access in a `try/catch`. * This vulnerability affects all Node.js HTTP servers on **20.x, 22.x, 24.x, and v25.x**
Характеристики атаки
Последствия
Строка CVSS v3.0