NPM 패키지 공격이 남긴 교훈…오픈소스 공급망 보안, 프로세스에 답이 있다





단편적인 안전장치보다 절차 개선과 자금 흐름에 대한 면밀한 점검이 오픈소스 소프트웨어를 훨씬 더 안전하게 지켜낼 수 있다.




Credit: N-sky / Shutterstock



소프트웨어 공급망은 가장 취약한 고리만큼만 안전하다는 사실을 다시 한번 상기시킬 사건이 최근 자바스크립트 생태계에서 벌어졌다. 9월 초, 한 공격자가 활발한 유지 관리자인 퀵스(Qix)의 NPM 계정을 피싱으로 탈취해 ansi-styles, debug, chalk, supports-color 등 총 18개 인기 패키지에 악성 릴리즈를 배포한 사건이다. 이들 패키지는 합산해 주간 20억 건 이상 다운로드되는 핵심 라이브러리다. 악성코드는 정교하지 않았고, 노출 시간도 관리자가 개입하기 전까지 약 두 시간에 불과했지만, 이번 사건은 오픈소스 공급망 보안의 취약성을 다시 한번 드러냈다.

물론 긍정적인 면도 있었다. 늘 그렇듯 오픈소스 커뮤니티는 빠르게 이상 징후를 포착하고 문제가 확산하기 전에 차단했다. 필자는 수년 전부터 오픈소스의 투명성, 대규모 검토, 공개된 방식의 수정 습관이야말로 보안을 보장하는 최적의 장치라고 주장해왔다.

그렇다 해도 매주 수백만 개의 서비스 환경에 배포되는 코드가 이렇게 손쉽게 탈취되는 일은 있어서는 안 된다. 오늘날 2단계 인증(2FA)이 널리 사용되지만, 교묘한 피싱 이메일 하나만으로도 인기 패키지가 ‘트로이 목마’로 변할 수 있다. 이번 사건과 관련해 제이프로그(JFrog) CTO는 “자바스크립트 생태계의 절반이 단일 개발자가 유지하는 한 줄짜리 유틸리티에 의존하고 있다는 것이 현실”이라고 말했다. 이는 작은 모듈형 라이브러리를 비난하는 게 아니다. 위험에 대한 냉정한 평가다.



퀵스 사건이 발생한 지 며칠 지나지 않아, NPM 생태계는 어쩌면 더 위협적인 공격에 직면했다. 바로 ‘샤이 훌루드(Shai-Hulud)’라는 자기 복제 웜이다. 이 웜은 작성자 토큰을 탈취하고, 숨겨진 CI(continuous integration) 워크플로우를 통해 백도어를 심으며 패키지 간에 퍼졌다. 침투와 동시에 확산을 목적으로 설계된 전형적인 공급망 공격이었다. 이 캠페인은 수백 개의 패키지에 영향을 미쳤고, 단일 관리자를 노린 피싱이 단순한 우연이 아니라 반복 가능한 공격 패턴임을 분명히 보여줬다.


문제가 될 시 삭제하겠습니다.

Powered by Blogger.