Node.js
Уязвимости
197
Эксплуатируемые
1
Макс. CVSS
10
Макс. EPSS
0.99999
Распределение по критичности
Критический
9
Высокий
99
Средний
79
Низкий
10
Затронутые диапазоны версий
0.10.0–0.10.160.10.0–0.10.310.10.0–0.10.410.10.0–0.10.450.10.0–0.10.460.10.0–0.10.470.10.0–0.10.4810.0.0–10.12.010.0.0–10.19.010.0.0–10.22.110.0.0–10.23.110.0.0–10.24.010.0.0–10.24.110.0.0–10.9.012.0.0–12.12.012.0.0–12.18.012.0.0–12.18.412.0.0–12.22.212.0.0–12.22.412.0.0–12.22.512.0.0–12.22.912.16.3–12.19.114.0.0–14.11.014.0.0–14.14.0
Также сопоставлено как (исходные строки): next.js,undici,io.js,process_library,php,rust,node.js,llhttp,yt-dlp,uro_node
Топ уязвимостей
CVE-2026-21636Недостаток в модели разрешения Node.js позволяет соединениям Unix Domain Socket (UDS) обходить сетевые ограничения, когда «--разрешение включено». Даже без `--all-net-net входов, контролируемых злоумышленниками (такими как URL-адреса или опции socketPath) могут подключаться к произвольным локальным розеткам через net, tls или unddici/fetch. Это нарушает предполагаемую границу безопасности модели разрешения и обеспечивает доступ к привилегированным местным услугам, что потенциально может привести к эскалации привилегий, раскрытию данных или исполнению местного кода.
* Проблема затрагивает пользователей модели разрешения Node.js на версии v25.
В момент этой уязвимости сетевые разрешения (`-- пуск-net``) все еще находятся в экспериментальной фазе.
CVE-2024-3566Уязвимость внедрения команд позволяет злоумышленнику выполнять внедрение команд в приложениях Windows, которые косвенно зависят от функции CreateProcess, при соблюдении определенных условий.
CVE-2023-39332Различные функции `node:fs` позволяют задавать пути как в виде строк, так и в виде объектов `Uint8Array`. В средах Node.js класс `Buffer` расширяет класс `Uint8Array`. Node.js предотвращает преодоление пути через строки (см. CVE-2023-30584) и объекты `Buffer` (см. CVE-2023-32004), но не через не-`Buffer` объекты `Uint8Array`.
Это отличается от CVE-2023-32004, который относился только к объектам `Buffer`. Однако уязвимость следует той же схеме, используя `Uint8Array` вместо `Buffer`.
Обратите внимание, что на момент выпуска CВE, модель разрешений является экспериментальной функцией Node.js.
CVE-2023-32002Использование `Module._load()` может обойти механизм политики и потребовать модули вне определения policy.json для данного модуля.
Эта уязвимость затрагивает всех пользователей, использующих экспериментальный механизм политики во всех активных версиях: 16.x, 18.x и 20.x.
Обратите внимание, что на момент выпуска этого CVE политика является экспериментальной функцией Node.js.
CVE-2021-22930Node.js версий до 16.6.0, 14.17.4 и 12.22.4 уязвим для атаки use after free, когда злоумышленник может воспользоваться повреждением памяти, чтобы изменить поведение процесса.
CVE-2016-9843Функция crc32_big в crc32.c в zlib 1.2.8 может позволить зависимым от контекста злоумышленникам оказать неуказанное воздействие через векторы, включающие вычисление CRC с прямым порядком байтов.
CVE-2016-9841inffast.c в zlib 1.2.8 может позволить зависимым от контекста злоумышленникам оказать неуказанное воздействие, используя неправильную арифметику указателей.
CVE-2015-6764Функция BasicJsonStringifier::SerializeJSArray в json-stringifier.h в JSON stringifier в Google V8, используемая в Google Chrome до версии 47.0.2526.73, неправильно загружает элементы массива, что позволяет удаленным злоумышленникам вызывать отказ в обслуживании (выход за границы памяти) или, возможно, оказывать другое неуказанное воздействие через специально созданный код JavaScript.
CVE-2025-55130Изъян в модели Node.js Permissions позволяет злоумышленникам обходить `--alow-fs-read` и `--alow-fs-write` ограничения, используя созданные относительные пути символов связи. Приковав каталоги и симбилий, сценарий, предоставленный только к текущему каталогу, может избежать допустимого пути и прочитать конфиденциальные файлы. Это нарушает ожидаемые гарантии изоляции и позволяет произвольно читать/писать файлы, что приводит к потенциальному системному компромиссу.
Эта уязвимость затрагивает пользователей модели разрешений на Node.js v20, v22, v24 и v25.
CVE-2023-32004Уязвимость была обнаружена в Node.js версии 20, конкретно в экспериментальной модели разрешений. Этот недостаток связан с неправильной обработкой буферов в API файловой системы, что вызывает обход пути при проверке разрешений на файловую систему.
Эта уязвимость затрагивает всех пользователей, использующих экспериментальную модель разрешений в Node.js 20.
Обратите внимание, что на момент выпуска этого CVE модель разрешений является экспериментальной функцией Node.js.
CVE-2020-10531Проблема обнаружена в International Components for Unicode (ICU) для C/C++ до версии 66.1. Переполнение целого числа, приводящее к переполнению буфера на основе кучи, существует в функции UnicodeString::doAppend() в common/unistr.cpp.
CVE-2016-9842Функция inflateMark в inflate.c в zlib 1.2.8 может позволить зависимым от контекста злоумышленникам оказать неуказанное воздействие через векторы, включающие сдвиги влево отрицательных целых чисел.
CVE-2016-9840inftrees.c в zlib 1.2.8 может позволить зависимым от контекста злоумышленникам оказать неуказанное воздействие, используя неправильную арифметику указателей.
CVE-2022-35255Слабая случайность в уязвимости WebCrypto keygen существует в Node.js 18 из-за изменения EntropySource() в SecretKeyGenTraits::DoKeyGen() в src/crypto/crypto_keygen.cc. С этим связаны две проблемы: 1) Он не проверяет возвращаемое значение, он предполагает, что EntropySource() всегда успешен, но он может (и иногда будет) терпеть неудачу. 2) Случайные данные, возвращаемые EntropySource(), могут быть недостаточно криптографически сильными и, следовательно, не пригодными в качестве материала для ключей.
CVE-2022-21824Из-за логики форматирования функции "console.table()" было небезопасно разрешать передачу пользовательского ввода в параметр "properties", одновременно передавая простой объект как минимум с одним свойством в качестве первого параметра, которым может быть "__proto__". Загрязнение прототипа имеет очень ограниченный контроль, поскольку позволяет присваивать только пустую строку числовым ключам прототипа объекта. Node.js >= 12.22.9, >= 14.18.3, >= 16.13.2 и >= 17.3.1 используют нулевой прототип для объекта, которому присваиваются эти свойства.
CVE-2024-36138Обход неполного исправления CVE-2024-27980, который возникает из-за неправильной обработки пакетных файлов со всеми возможными расширениями в Windows через child_process.spawn / child_process.spawnSync. Вредоносный аргумент командной строки может внедрить произвольные команды и добиться выполнения кода, даже если параметр shell не включен.
CVE-2024-27980Из-за неправильной обработки пакетных файлов в child_process.spawn / child_process.spawnSync вредоносный аргумент командной строки может внедрять произвольные команды и добиваться выполнения кода, даже если параметр shell не включен.
CVE-2024-21892На Linux Node.js игнорирует определенные переменные окружения, если они могли быть установлены непредоставленным пользователем, в то время как процесс работает с повышенными привилегиями, за исключением CAP_NET_BIND_SERVICE.
Из-за ошибки в реализации этого исключения Node.js неправильно применяет это исключение, даже когда установлены определенные другие возможности.
Это позволяет непредоставленным пользователям внедрять код, который наследует повышенные привилегии процесса.
CVE-2020-8265Версии Node.js до 10.23.1, 12.20.1, 14.15.4, 15.5.1 уязвимы для ошибки use-after-free в своей реализации TLS. При записи в сокет с поддержкой TLS node::StreamBase::Write вызывает node::TLSWrap::DoWrite со свежевыделенным объектом WriteWrap в качестве первого аргумента. Если метод DoWrite не возвращает ошибку, этот объект передается обратно вызывающей стороне как часть структуры StreamWriteResult. Это может быть использовано для повреждения памяти, что приведет к отказу в обслуживании или, возможно, к другим эксплойтам.
CVE-2020-8174napi_get_value_string_*() допускает различные виды повреждения памяти в node < 10.21.0, 12.18.0 и < 14.4.0.
CVE-2018-12115Во всех версиях Node.js до 6.14.4, 8.11.4 и 10.9.0 при использовании кодировки UCS-2 (распознаваемой Node.js под именами `'ucs2'`, `'ucs-2'`, `'utf16le'` и `'utf-16le'`), `Buffer#write()` можно использовать для записи за пределами одного `Buffer`. Записи, начинающиеся со предпоследней позиции буфера, вызывают неправильный расчет максимальной длины записываемых входных байтов.
CVE-2014-9748Отказоустойчивая реализация uv_rwlock_t для Windows XP и Server 2003 в libuv до версии 1.7.4 неправильно предотвращает освобождение потоками блокировок других потоков, что позволяет злоумышленникам вызвать отказ в обслуживании (взаимную блокировку) или, возможно, оказать другое неуказанное воздействие, используя состояние гонки.
CVE-2024-21896Модель разрешений защищает себя от атак перемещения по пути, вызывая path.resolve() для любых путей, заданных пользователем. Если путь должен обрабатываться как буфер, реализация использует Buffer.from(), чтобы получить буфер из результата path.resolve(). Путем изменения внутреннего устройства Buffer, а именно Buffer.prototype.utf8Write, приложение может изменить результат path.resolve(), что приводит к уязвимости перемещения по пути.
Эта уязвимость затрагивает всех пользователей, использующих экспериментальную модель разрешений в Node.js 20 и Node.js 21.
Обратите внимание, что на момент выдачи этой уязвимости модель разрешений является экспериментальной функцией Node.js.
CVE-2021-22921Node.js до версий 16.4.1, 14.17.2 и 12.22.2 уязвим для атак локального повышения привилегий при определенных условиях на платформах Windows. В частности, неправильная настройка разрешений в каталоге установки позволяет злоумышленнику выполнять две различные атаки повышения привилегий: PATH и DLL hijacking.
CVE-2020-8252Реализация realpath в libuv < 10.22.1, < 12.18.4 и < 14.9.0, используемая в Node.js, неправильно определяла размер буфера, что может привести к переполнению буфера, если разрешенный путь длиннее 256 байт.