@antv/* 패키지 다수악성 버전에는 난독화된 JavaScript 페이로드가 포함되어 있었으며, 패키지 설치 시 자동 실행되도록 설계됐다.
공격자는 preinstall 같은 **npm 설치 훅(install hook)**을 이용했다. 이 스크립트는 개발자가 단순히 npm install
또 다른 방식으로는 optionalDependencies를 이용해 GitHub 커밋 해시를 참조하는 방법이 사용됐다. npm은 특정 커밋 SHA를 기준으로 저장소에서 코드를 가져올 수 있는데, 공격자는 포크된 저장소의 Git 객체 공유 구조를 이용해 실제 저장소에 쓰기 권한이 없어도 악성 코드를 로드할 수 있도록 했다.
악성 코드의 주요 목적은 자격 증명(credential) 수집이었다.
설치 후 페이로드는 개발 환경과 시스템을 스캔하며 다음과 같은 정보를 찾았다.
또한 다음과 같은 로컬 비밀번호 관리자 저장소에서도 데이터를 추출하려 시도했다.
탈취한 데이터는 두 가지 방식으로 외부로 전송됐다.
보안 연구자들은 Mini Shai‑Hulud를 자기 확산형(self‑propagating) 공급망 공격으로 분류한다.
이 악성코드는 단순히 데이터를 훔치는 데서 멈추지 않는다. 탈취한 자격 증명을 이용해 CI/CD 환경이나 개발 파이프라인을 추가로 침해하고 새로운 악성 패키지를 게시하려 시도한다.
즉, 이미 감염된 개발 환경이 다음 공격의 발판이 될 수 있다.
TanStack 공격은 실제 기업 환경에도 영향을 미쳤다.
OpenAI는 이후 발표에서 직원 두 명의 기기가 이 악성 의존성 체인을 통해 영향을 받았다고 밝혔다. 해당 시스템에서는 자격 증명 탈취 시도와 내부 저장소 접근 활동이 일부 관찰됐다.
다만 회사는 다음과 같은 점을 확인했다고 밝혔다.
Mini Shai‑Hulud 사건은 최근 사이버 공격의 방향이 최종 사용자 대신 개발 생태계 자체를 노리는 방식으로 이동하고 있다는 점을 보여준다.
특히 다음과 같은 특징이 주목된다.
오늘날 대부분의 소프트웨어는 수십에서 수백 개의 오픈소스 의존성을 기반으로 동작한다. 따라서 인기 패키지가 잠깐이라도 침해되면 수천 개 이상의 하위 프로젝트에 연쇄적으로 영향을 줄 수 있다.
Mini Shai‑Hulud 사건은 결국 한 가지 사실을 강조한다. 이제 보안은 애플리케이션 코드만이 아니라 그 코드를 만드는 전체 개발 공급망—패키지, 유지관리자, 자동화 파이프라인—전체를 보호해야 하는 문제가 됐다.
Comments
0 comments