핵심 요약
2026년 3월 31일, 주간 6,000만 회 이상 다운로드되는 npm 패키지 Axios(1.14.1)가 악성 의존성 plain-crypto-js를 통해 Supply Chain Attack을 받았다. 이 공격은 단순 정보 탈취를 넘어 macOS, Windows, Linux 각 운영체제에 맞춤형 Backdoor를 설치하고 Remote Access Trojan(RAT)을 배포하는 고도화된 방식을 취했다. 공격자는 XOR 암호화와 Base64를 혼합해 탐지를 회피했으며, 감염 후에는 스스로 흔적을 지우는 Anti-forensics 기법을 사용했다. Comet 팀은 Lockfile 사용과 신속한 스캔을 통해 피해를 방지했으며, 커뮤니티를 위해 오픈소스 스캔 스크립트와 구체적인 복구 절차를 공유했다. 이번 사례는 오픈소스 의존성 관리에서 Deterministic build와 신속한 사고 대응 체계의 필수성을 입증했다.
배경
npm 패키지 관리 이해, 기본적인 쉘 명령어 사용 능력
대상 독자
npm 패키지를 사용하는 자바스크립트/타입스크립트 개발자 및 보안 담당자
의미 / 영향
이번 공격은 오픈소스 생태계의 신뢰 기반을 위협하며, Lockfile 관리와 의존성 핀 고정의 중요성을 다시 한번 각인시켰다. 특히 AI/ML 분야에서 널리 쓰이는 라이브러리들이 연이어 타겟이 되고 있어 개발자들의 각별한 주의가 요구된다.
섹션별 상세
bash <(curl -sL https://gist.githubusercontent.com/Nimrod007/13ad665e473221b4d5da7a85f26c79c5/raw/check_axios_compromise.sh)Comet에서 공개한 Axios 감염 여부 확인용 오픈소스 스캔 스크립트 실행 명령어
# Search for the malicious dependency in lockfiles
grep -r "plain-crypto-js" ~/path/to/your/projects/
# Check if any lockfile resolves axios to 1.14.x
grep "axios/-/axios-1.14" ~/path/to/your/projects/**/package-lock.jsonLockfile 내 악성 패키지 및 취약한 Axios 버전 포함 여부를 확인하는 grep 명령어
# Check for the malicious package installed anywhere
find ~ -maxdepth 6 -name "node_modules" -type d -exec test -d "{}/plain-crypto-js" \; -print로컬 환경의 node_modules 디렉토리에서 악성 패키지 설치 여부를 전수 조사하는 명령어
실무 Takeaway
- Lockfile(package-lock.json, yarn.lock)을 반드시 버전 관리 시스템에 포함하고, CI/CD 환경에서는 npm ci를 사용하여 의존성 변동을 차단해야 한다.
- 감염이 확인된 경우 단순히 패키지를 삭제하는 것에 그치지 말고, OS별 Backdoor 설치 경로(예: /Library/Caches/com.apple.act.mond)를 확인하고 모든 자격 증명을 교체해야 한다.
- 중요도가 높은 의존성은 캐럿 범위(^) 대신 정확한 버전 번호로 고정하여 예기치 않은 악성 업데이트의 자동 유입을 방지하는 것이 안전하다.
AI 요약 · 북마크 · 개인 피드 설정 — 무료
출처 · 인용 안내
인용 시 "요약 출처: AI Trends (aitrends.kr)"를 표기하고, 사실 확인은 원문 보기 기준으로 진행해 주세요. 자세한 기준은 운영 정책을 참고해 주세요.