Locutus добавляет в JavaScript стандартные библиотеки других языков программирования в образовательных целях. Начиная с версии 2.0.39 и до версии 3.0.25, в функции parse_str локутуса пакета npm существует уязвимость загрязнения прототипа. Злоумышленник может загрязнить Object.prototype, переопределив RegExp.prototype.test, а затем передав созданную строку запроса в parse_str, минуя защиту прототипа от загрязнения.
Эта уязвимость связана с неполным исправлением CVE-2026-25521. Патч CVE-2026-25521 заменил защиту на основе String.prototype.includes() на защиту на основе RegExp.prototype.test(). Однако `RegExp.prototype.test` сам по себе является записываемым методом-прототипом, который можно переопределить, что позволяет обойти новую защиту так же, как и оригинальную, — заменяя одну встроенную функцию, которую можно перехватить, на другую.
Версия 3.0.25 содержит обновленное исправление.
Показать оригинальное описание (EN)
Locutus brings stdlibs of other programming languages to JavaScript for educational purposes. Starting in version 2.0.39 and prior to version 3.0.25, a prototype pollution vulnerability exists in the `parse_str` function of the npm package locutus. An attacker can pollute `Object.prototype` by overriding `RegExp.prototype.test` and then passing a crafted query string to `parse_str`, bypassing the prototype pollution guard. This vulnerability stems from an incomplete fix for CVE-2026-25521. The CVE-2026-25521 patch replaced the `String.prototype.includes()`-based guard with a `RegExp.prototype.test()`-based guard. However, `RegExp.prototype.test` is itself a writable prototype method that can be overridden, making the new guard bypassable in the same way as the original — trading one hijackable built-in for another. Version 3.0.25 contains an updated fix.
Характеристики атаки
Последствия
Строка CVSS v4.0