안녕하세요, 리키입니다. 오늘은 최근에 발생했던 npm 공급망 공격, 특히 ‘미아즈마(Miasma)’라는 자기 복제형 웜에 대한 내용을 여러분께 이야기해 드리려고 합니다. 보안 문제라 조금 어렵게 들릴 수 있지만, 어떤 일이 벌어졌는지 차분하게 설명해 드리겠습니다.
이번 공격은 npm 레지스트리를 통해 확산되었는데요. 공격자들은 ‘팬텀 가입(Phantom Gyp)’이라는 기법을 사용했습니다. 이는 보안 도구들이 보통 감시하는 설치 스크립트(preinstall 또는 postinstall)를 우회해서, 단순히 157바이트짜리 binding.gyp 파일을 악용해 npm 설치 과정 중에 코드가 실행되도록 만들었더군요. 이로 인해 기존의 보안 검사를 대부분 무력화시킨 것입니다.
이 공격을 통해 공격자들은 단 두 시간도 안 되는 짧은 시간 동안 286개 이상의 악성 버전이 포함된 57개의 npm 패키지를 감염시켰습니다. 특히 가장 큰 피해를 입은 곳은 월간 다운로드 수가 40만 8천 건이 넘는 공식 Vapi.ai 음성 AI 서버 SDK 패키지였는데요. 이 패키지를 포함하여 ai-sdk-ollama, autotel, wrangler-deploy 등 수많은 패키지들이 피해를 입었습니다.
더욱 흥미로운 점은 이 악성 코드가 단순히 파일을 감염시키는 데 그치지 않고, GitHub 계정을 통해 자격 증명(credential)을 탈취하여 새로운 저장소를 만들고 정보를 암호화해서 유출했다는 사실입니다. 이 저장소들의 설명에는 ‘미아즈마 – 퍼지는 역병(Miasma – The Spreading Blight)’이나 이전 사건을 암시하는 문구가 포함되어 있어, 공격자들이 의도적으로 메시지를 남겼더군요.
결론적으로 이번 사건은 소프트웨어 공급망의 취약점을 어떻게 악용할 수 있는지 보여주는 사례입니다. 우리는 이 사고에 영향을 받은 모든 유지보수자들에게 책임감 있게 정보를 공개했으며, 앞으로는 이러한 공급망 보안 위협에 대해 더욱 철저하게 대비해야 할 필요가 있다고 생각합니다.












참고 원문: https://www.stepsecurity.io/blog/binding-gyp-npm-supply-chain-attack-spreads-like-worm
