
Популярный NPM-пакет «pac-resolver» затрагивала серьёзная уязвимость, приводящая к удалённому выполнению кода. Учитывая количество загрузок этого пакета — более трёх миллионов только за одну неделю, — масштабы бреши можно назвать огромными.
В результате проблема затрагивала приложения, использующие Node.js и полагающиеся на зависимости с открытым исходным кодом.
Согласно описанию разработчиков, pac-resolver представляет собой модуль, допускающий использование файлов конфигурации, написанных на JavaScript, и генерирующий специальную функциональность приложения. С помощью этой функции пользователь может настроить определённые домены на использование прокси.
Опасную уязвимость в пакете pac-resolver обнаружил Тим Перри, который также уточнил, что выявленный баг позволяет злоумышленнику запустить произвольный код в локальной сети (в процессе Node.js). Уязвимость получила собственный идентификатор — CVE-2021-23406.
По словам Перри, корень проблемы должен быть как-то связан с обработкой файлов формата Proxy Auto-Config (PAC). Эти файлы состоят из JavaScript-кода, с помощью которого указывается конфигурация прокси.
Тим Перри опубликовал PoC-код для обнаруженной уязвимости, наглядно демонстрирующий, как потенциальный атакующий может выбраться за пределы песочницы модуля. Брешь особенно актуальна для версий pac-resolver ниже 5.0.0.
К счастью разработчики уже выпустили соответствующий патч, который можно установить с версией 5.0.0. Теперь в модуле используется более надёжный механизм песочницы.