✦ guniq 시각
이제 ‘악성 이메일을 열지 않는다’는 원칙만으로는 부족하다. 북한 연계 공격 그룹은 npm install 한 줄, VS Code 폴더 열기 한 번, 채용 코딩 테스트 하나를 감염 트리거로 전환했다. 매주 1억 회 이상 다운로드되는 axios 같은 패키지가 실제로 오염된 적이 있다는 사실은, 소규모 스타트업이든 대형 개발팀이든 ‘패키지 보안=인프라 보안’이라는 인식 전환을 요구한다.
▲ 이미지 출처: The Hacker News
북한 연계 해킹 조직들이 개발자 생태계의 가장 취약한 고리, 즉 일상적으로 신뢰하는 패키지와 도구를 악성코드 유포 채널로 전환하고 있다. 2025년부터 2026년에 걸쳐 확인된 복수의 대규모 캠페인은 npm, Go 모듈, VS Code 확장, GitHub 저장소, 채용 코딩 테스트 등 개발자가 매일 마주치는 인터페이스 전반을 감염 경로로 활용한다. 이 글에서는 미국 아마존 보안팀, 보안업체 Socket, 마이크로소프트, Proofpoint가 공개한 1차 분석 자료를 토대로 공격의 실체와 한국 개발팀에 대한 함의를 살펴본다.
배경: 공급망을 노리는 이유
전통적인 스피어피싱은 수신자가 경계심을 높일수록 성공률이 떨어진다. 반면 오픈소스 패키지 공급망 공격은 피해자가 아무 행동도 하지 않아도 작동한다. 개발자가 평소대로 npm install을 실행하거나, 동료가 공유한 저장소를 VS Code로 열기만 해도 악성 페이로드가 실행될 수 있다. 아마존 보안팀은 이 차이를 명확히 표현했다. 공격자들은 “창문을 부수고 들어온 것이 아니라 직원을 사회공학으로 설득해 열쇠를 건네받은 것”이라고 설명했다. 개발자 PC 한 대가 기업 전체 코드베이스, 내부 API, 클라우드 자격증명, 암호화폐 지갑으로 가는 관문이기 때문에 이 공격 벡터의 파괴력은 일반 피싱과 비교할 수 없다.
핵심 사건: debug·chalk·axios 공급망 오염
2026년 현재까지 가장 광범위한 피해를 낸 사건은 아마존이 ‘Sapphire Sleet(블루노로프·Stardust Chollima)’으로 추적 중인 북한 연계 조직의 npm 패키지 연쇄 감염이다. 아마존 보안 블로그(2026)가 공개한 타임라인은 세 단계로 구성된다.
첫째, 2025년 3월 typo-crypto 패키지가 오염됐다. 공격자들은 패키지 유지관리자를 사회공학으로 설득해 계정 접근 권한을 획득한 뒤 악성 업데이트를 배포했다. 아마존은 이 단계를 “이후 대규모 작전의 테스트베드”로 평가했다. 악성 파일 core.js는 정상 패키지인 core-js를 위장했으며, XOR 암호와 base64 조합의 다중 난독화 기법이 사용됐다. 둘째, 2025년 9월 debug와 chalk 패키지가 동시에 감염됐다. 보안업체 Wiz Research는 이 사건이 “두 시간 내에 클라우드 환경의 약 10%에 영향을 미쳤다”고 밝혔다. 전 세계 수백만 개의 Node.js 프로젝트가 두 패키지를 의존성으로 가진 탓에 파급 범위가 순식간에 확산됐다. 셋째, 2026년 3월에는 axios가 타깃이 됐다. axios는 주당 1억 회 이상 다운로드되는 npm 생태계 최상위 패키지 중 하나다.
아마존은 이 공격들에 대해 “공유된 전술·기술·절차(TTP), C2 인프라, 다양한 운영상 유사성”을 근거로 Sapphire Sleet에 중간 신뢰도 수준으로 귀속했다. 이 조직의 주요 동기는 금전적 이득으로, “대규모 잠재 피해자 풀에 간접 접근하기 위해 인기 패키지를 노렸다”는 게 연구자들의 분석이다.
PolinRider 캠페인: 108개 패키지, 1,951개 저장소
Sapphire Sleet 사건과 별개로, 보안업체 Socket의 위협리서치팀은 2026년 7월 ‘PolinRider’ 캠페인을 상세 공개했다. Contagious Interview(Famous Chollima) 활동군과 연계된 이 캠페인은 npm 19개, Packagist 10개, Go 모듈 61개, Chrome 확장 프로그램 1개 등 총 108개 패키지에서 162개의 악성 릴리스 아티팩트를 배포했다. GitHub 공개 저장소 기준으로는 1,951개 저장소, 1,047명의 소유자가 피해를 입었다.
기술적으로는 정교한 은폐 기법이 복수 적용됐다. 악성 JavaScript 로더를 설정 파일 속에 숨기고, 가짜 .woff2 폰트 파일 안에 페이로드를 포함시켰으며, 기본 화면 너비를 초과하는 공백 패딩으로 코드를 가시 범위 밖에 배치했다. Git 히스토리를 강제 푸시와 날짜 조작으로 덮어씌워 포렌식을 어렵게 만들기도 했다. 최종 페이로드는 TRON, Aptos, BNB Smart Chain 등 블록체인 인프라를 통해 전달돼 일반 IP 차단 룰을 우회했으며, DEV#POPPER RAT과 OmniStealer(자격증명·브라우저 데이터·지갑 탈취)가 배포됐다.
VS Code와 채용 프로세스를 무기화한 Contagious Interview
마이크로소프트 보안 블로그(2026년 3월)는 Contagious Interview 캠페인의 구체적인 감염 메커니즘을 공개했다. 공격자들은 암호화폐나 AI 솔루션 기업의 채용 담당자를 사칭해 지원자에게 GitHub, GitLab, Bitbucket에 호스팅된 npm 패키지를 “클론한 뒤 실행하라”고 지시한다. 피해자가 해당 패키지를 VS Code로 열면 저장소 작성자를 신뢰하도록 안내받는데, 신뢰가 부여되면 VS Code가 runOn: folderOpen 태스크 설정 파일을 자동 실행하는 방식이다. 즉 별도의 악성 첨부파일을 열거나 의심스러운 링크를 클릭할 필요 없이, 폴더를 여는 동작 하나로 감염이 완료된다.
이 캠페인이 배포하는 악성코드 패밀리는 다양하다. OtterCookie(2024년 9월 최초 관측, 2025년 10월 최신 변종)는 JavaScript 기반 백도어로 원격 명령 실행, 암호화폐 키 탐색, 가상머신 환경 감지, 클립보드 모니터링 기능을 갖춘다. BeaverTail은 정보 탈취 및 로더 역할을 수행하고, InvisibleFerret(Python 기반)은 브라우저 자격증명과 암호화폐 지갑을 탈취해 지속 접근을 확립한다. 공격자들은 KeePass, 1Password 같은 패스워드 매니저 데이터베이스, 환경 설정 파일(.env), API 토큰, 클라우드 자격증명까지 수집한다.
Proofpoint가 추적하는 ‘UNK_DeadDrop’ 하위 캠페인은 2026년 6월 기준 6주 동안 250여 통의 피싱 이메일을 발송해 금융·암호화폐·교육·기술 분야 약 100개 조직을 타깃으로 했다. 피해 조직의 75% 이상이 미국에 위치했으며, 영국·호주·프랑스·독일·인도·이스라엘·일본·브라질·네덜란드도 포함됐다.
AI 코딩 도구가 열어주는 새로운 공격면
아마존 보안 블로그는 최근 부상하는 두 가지 새로운 위협 트렌드를 경고했다. 첫째는 ‘슬롭스쿼팅(slopsquatting)‘이다. AI 코딩 보조 도구(GitHub Copilot, Cursor 등)가 실제로 존재하지 않는 패키지 이름을 생성(할루시네이션)할 때, 공격자들이 그 이름으로 미리 악성 패키지를 등록해두는 방식이다. 개발자가 AI가 제안한 코드를 그대로 실행하면 자동으로 악성 패키지가 설치된다. 둘째는 ‘간접 프롬프트 인젝션(indirect prompt injection)‘이다. 악성 패키지의 주석, README, 독스트링 안에 숨겨진 지시문을 통해 AI 기반 코드 스캐너를 속여 악성 코드를 정상으로 오인하게 만드는 기법이다. AI가 코드 리뷰와 패키지 추천에 깊이 개입할수록 이 두 기법의 위협은 커진다.
규모와 조직 비교: Sapphire Sleet vs. Contagious Interview
현재 확인된 북한 연계 개발자 표적 캠페인은 단일 조직이 아니라 복수의 하위 그룹이 병렬 운영하는 구조다. Socket 위협리서치팀은 2026년 7월 보고서에서 “북한 연계 위협 클러스터 하나가 npm, PyPI, Go 모듈, crates.io, Packagist에 동시에 악성 패키지를 배포하고, 동일한 스테이징 인프라와 로더 패턴을 재사용한다”고 분석했다. 같은 팀은 Contagious Interview 캠페인 전체에서 1,700개 이상의 패키지를 추적 중이라고 밝혔다. 한편 2023년 11월 한국 국가정보원과 영국 국립사이버보안센터(NCSC)가 발표한 합동 권고문은 “북한 국가 연계 사이버 행위자들의 공급망 공격이 꾸준히 증가하고 있으며 더욱 정교해지고 있다”고 명시했다.
“Supply chain attacks from DPRK state-linked cyber actors have steadily increased in volume and have become more sophisticated.”
— 한국 국가정보원·영국 NCSC 합동 권고문, 2023년 11월
중소 개발팀이 지금 실천해야 할 대응
- 외부 패키지 검증 프로세스 수립 — npm 설치 전 패키지 출처, 최근 업데이트 이력, 유지관리자 계정 변경 여부, 코드 내 네트워크 요청을 확인한다. 특히 debug·chalk·axios처럼 간접 의존성도 점검 대상이다.
- 채용 코딩 테스트는 격리 환경에서만 실행 — 마이크로소프트와 Proofpoint 모두 외부 코드는 메인 개발 환경과 분리된 가상머신이나 컨테이너에서 실행하도록 권고한다. 채용 전형에서 로컬 코드 실행을 요구하는 것 자체가 공격 신호다.
- VS Code 자동 태스크 실행 비활성화 — 신뢰하지 않는 저장소를 열 때
runOn: folderOpen자동 실행을 허용하지 않도록 설정한다. 저장소 작성자 신뢰 부여 요청에는 신중히 대응한다. - AI 코딩 도구의 패키지 추천 맹신 금지 — AI가 제안하는 패키지명을 그대로 설치하기 전에 npm 공식 레지스트리에서 존재 여부와 다운로드 수를 직접 확인한다(슬롭스쿼팅 대응).
- 개발자 계정 MFA 필수 적용 — Sapphire Sleet의 핵심 전술은 패키지 유지관리자 계정 탈취다. npm·GitHub·pip 계정에 다중인증을 적용하고, 공식 마켓플레이스 외 경로의 확장 프로그램을 차단한다.
- 의존성 잠금 파일 검토 자동화 — CI/CD 파이프라인에서
package-lock.json·go.sum변경을 자동 감지하고, 알려진 악성 해시 목록(예: OSV 데이터베이스 MAL-2026-3400)과 대조한다.