AI VIDEO BRIEFING
소프트웨어 공급망 공격과 AI: 악성 npm 패키지가 퍼지는 속도와 CVE 데이터베이스의 한계
NDC 코펜하겐 보안 강연을 토대로 npm 계정 탈취와 자가 전파 웜 사례를 짚었다. AI가 앞당긴 오픈소스 공급망 공격이 어떻게 전개되는지, 취약점 데이터베이스는 왜 늦는지, 개발자가 당장 쓸 수 있는 대응은 무엇인지 정리했다.

핵심 메시지
쉽게 이해하기
발표자는 우리가 쓰는 코드의 대부분이 남이 만든 것이라는 사실에서 이야기를 시작한다. 내가 직접 고른 의존성 뒤에는 그 의존성이 다시 끌어오는 전이 의존성이 겹겹이 붙고, 평균적으로 하나당 25개가 따라온다. 자바스크립트를 쓰지 않아도 빌드 과정이나 클라우드 인프라 어딘가는 그 생태계에 기대고 있어서, 2021년 로그4j 사태처럼 이름조차 모르던 라이브러리 하나가 전체를 흔들 수 있다.
공급망 공격이 급증한 이유로는 세 가지가 꼽힌다. 이미 성공 사례가 쌓였고, 공격자들이 투입 자원 대비 수익을 계산할 만큼 조직화됐으며, 결정적으로 AI가 기술 장벽을 없앴다는 것이다. 예전에는 악성코드를 심으려면 기술·의도·자원이 모두 필요했지만 이제는 의도와 자원만 있으면 된다. 그 결과 악성 패키지 공개 건수는 AI 코드 생성이 대중화된 시점부터 가파르게 꺾여 올라갔다.
기존 방어선인 취약점 데이터베이스는 속도에서 이미 졌다. 사람이 버그를 찾아 공개 데이터베이스에 등재하기까지 평균 3개월이 걸리는데, 악성코드는 하루도 버티지 않는다. 발표자 팀은 인기 오픈소스의 변경 로그를 AI로 훑어 “보안 수정으로 보이는 흔적”을 찾는 방식을 시도했고, 그렇게 확인한 취약점의 67%가 아예 공개되지 않았음을 알게 됐다. 발표자는 이를 조용한 패치, 즉 ‘섀도 패칭’이라 부른다.
악성코드 쪽 사례는 더 극적이다. 인기 패키지 debug의 관리자가 npmjs.help라는 가짜 도메인에서 온 2단계 인증 안내 메일에 속아 계정을 통째로 넘겼고, 그가 관리하던 패키지들의 주간 다운로드 합계는 26억 회에 달했다. 연구팀이 30분 만에 악성코드를 발견해 관리자에게 연락했고 4시간 30분 만에 정리됐지만, 공식 데이터베이스에는 7일 뒤에야 올라왔다. 뒤이어 등장한 샤이 훌루드 계열 웜은 설치 스크립트로 즉시 실행돼 시크릿을 훔치고, 훔친 npm 토큰으로 다음 패키지를 스스로 감염시키며 비공개 저장소를 공개로 뒤집었다.
가장 정교한 사례로는 유니코드 스테가노그래피를 쓴 글래스웜이 소개된다. 화면에는 한 글자만 보이지만 그 뒤에 출력되지 않는 유니코드 문자들이 숨어 있고, 실행 시점에 값이 부여되며 악성 페이로드로 되살아난다. 이 모든 것에 대한 발표자의 결론은 의외로 단순하다. 악성 패키지는 대개 두세 시간 안에 삭제되므로, 배포 직후 48시간 동안 업데이트하지 않는 정책만 조직 전체가 지켜도 대부분을 피할 수 있다는 것이다.
주요 인사이트
- 공격의 표적이 클라우드 환경에서 개발자 개인의 작업 환경으로 옮겨 갔다. 회사가 규칙을 강제하기 쉬운 운영 환경보다, 최신 버전을 그냥 받아 쓰는 개발자 노트북이 더 뚫기 쉽기 때문이다.
- AI 코딩 도구가 위험을 키우는 방식이 구체적이다. 학습 데이터가 대체로 반년쯤 뒤처져 있어 모델은 고정된 옛 버전 대신 최신 버전을 끌어오는 쪽을 택하는데, 그 최신 버전이 방금 오염된 것일 수 있다.
- AI를 보안에 쓰는 방식에도 경제성이 작동한다. 취약점을 새로 찾는 일은 토큰 비용이 커서 감당하기 어렵지만, 악성코드 판별은 정적 분석으로 의심 후보 1% 미만만 걸러 LLM에 넘기는 2단계 구조로 값싸게 돌릴 수 있다.
- 유출된 열쇠는 회수해도 즉시 죽지 않는다. 발표자 팀 조사에 따르면 구글 API 키는 폐기 후에도 최대 23분간 유효해, 자동화된 공격자에게는 충분한 시간이 된다.
자주 묻는 질문
취약점 데이터베이스만 믿으면 왜 부족한가?
사람이 취약점을 찾아 공개 데이터베이스에 올리기까지 평균 3개월이 걸리는데, 악성코드 사건은 몇 시간 만에 끝난다. debug 패키지 사건은 4시간 30분 만에 정리됐지만 등재는 7일 뒤였다. 게다가 발표자 팀이 찾은 취약점의 67%는 조용히 수정되고 끝내 공개되지 않았다.
개발자나 팀이 당장 할 수 있는 대응은 무엇인가?
발표자가 가장 강조한 것은 패키지 최소 수명 정책이다. 악성 패키지는 대체로 두세 시간 안에 삭제되므로 배포 후 48시간이 지난 버전만 설치하도록 강제하면 상당수를 피할 수 있다. 다만 조직 전체가 지켜야 하며, 릴리스 서명 워크플로를 두면 개발자 토큰 하나가 유출돼도 곧바로 악성 배포로 이어지지 않는다.
샤이 훌루드 같은 자가 전파 웜은 기존 악성코드와 무엇이 다른가?
설치 즉시 실행돼 환경에서 시크릿을 찾아내고, 그중 npm 토큰이나 깃허브 자격 증명을 이용해 다음 패키지를 사람 손 없이 감염시킨다. 훔친 정보를 공개 저장소에 올리고 비공개 저장소를 공개로 뒤집는 방식이라 피해가 공격자 한 명에 국한되지 않고, 삭제를 막으려 데이터 파괴 기능까지 붙인 변종도 나왔다.
원문과 출처
이 글은 원본 영상의 자막을 바탕으로 한국어 독자를 위해 요약했습니다. 전체 맥락과 최신 정보는 원문에서 확인하세요.
YouTube 원본 영상 보기 ↗