Пакет pac-resolver с 3 млн загрузок закрыл серьезную уязвимость
В пакете pac-resolver с тремя миллионами загрузок еженедельно обнаружена уязвимость, которая позволяла выполнять произвольный код в проекте Node.js всякий раз, когда он пытается сделать HTTP-запрос. Уязвимость затрагивала приложения Node.js с функцией автонастройки прокси-сервера.
Pac-resolver представляет собой NPM-пакет, который принимает и обрабатывает файлы конфигурации прокси-сервера и сопоставляет определенные домены с использованием прокси. Файлы PAC содержат код JavaScript с функцией FindProxyForURL, которая определяет, какие запросы проходят через прокси, а какие напрямую, в зависимости от хоста и запрашиваемого URL.
Проблему обнаружил разработчик Тим Перри. Она связана с тем, как pac-resolver обрабатывает файлы автоконфигурации прокси. Уязвимость, которой присвоен идентификатор CVE-2021–23406, позволяет злоумышленнику удаленно выполнить свой JavaScript-код в проекте Node.js при условии, что в проекте используются связанные с зависимостями пакета pac-resolver библиотеки.
Как указывает Тим Перри, одна из таких библиотек — чрезвычайно популярная Proxy-Agent.
«Proxy-Agent используется повсюду: от инструментария AWS CDK и Mailgun SDK до интерфейса командной строки Firebase (около 3 миллионов загрузок в неделю и 285 тысяч общедоступных репозиториев на GitHub)», — пишет разработчик.
Уязвимость устранена в версии pac-resolver 5.0.0, которая использует библиотеку vm2, где реализован механизм песочницы для «предотвращения повышения привилегий ненадежного кода».