AI 코딩도구 실행 고리 심은 깃허브 저장소 42곳…npm 악성 패키지 조사 확대

JFrog이 ‘testmetest’ npm 공격과 연결된 제3자 깃허브 저장소 42곳에서 악성 코드를 찾았다. 저장소 침해 정황이 확인됐지만 실제 실행과 최종 피해 규모는 알 수 없다.

창가 책상 위 노트북 화면에 흐릿한 코드 화면이 보이고 옆에 문서와 공책이 놓여 있다. AI 생성 이미지
창가 책상 위 노트북 화면에 흐릿한 코드 화면이 보이고 옆에 문서와 공책이 놓여 있다. AI 생성 이미지. 사진은 기사 이해를 돕기 위한 자료 이미지입니다.

JFrog 보안 연구진은 26일 악성 npm 패키지 ‘testmetest’ 관련 조사를 확장해 정상 소유자 11명의 깃허브 저장소 42곳에 악성 코드 실행 고리가 심어져 있었다고 밝혔다. 일부는 AI 코딩 보조도구나 개발 환경에서 파일을 읽는 과정에 연결됐으며, 다른 코드는 자동 배포 절차를 악용해 악성 패키지를 게시하도록 설계됐다.

패키지 밖으로 번진 조사

npm은 자바스크립트 개발자가 소프트웨어 구성요소를 받아 쓰는 저장소다. 보안업체 SafeDep은 22일 ‘testmetest’ 이름이 붙은 패키지에서 인증정보 탈취와 추가 유포 기능을 분석했다. 당시 조사에서는 제3자가 운영하는 패키지나 피해자는 확인하지 못했다고 적었다. 26일 갱신한 자료에는 실행 방식을 바꾼 패키지도 추가됐다.

JFrog이 뒤이어 확인한 것은 패키지 자체가 아니라 깃허브의 제3자 저장소다. 연구진은 탈취된 계정, 조작된 커밋 기록, 잠깐 만들어진 배포용 브랜치와 노출된 npm 인증정보를 함께 보고했다. 따라서 SafeDep의 앞선 ‘피해 확인 전’ 판단과 JFrog의 저장소 침해 확인은 조사 시점과 대상이 다르다.

파일 발견과 실제 실행은 다르다

JFrog에 따르면 저장소 안의 대용량 파일은 겉모습은 달라도 해독하면 같은 게시 기능으로 이어졌다. 연구진은 일반적인 깃허브 코드 검색이나 API만으로는 이런 파일을 놓칠 수 있다며 저장소 파일 목록과 자동화 기록을 직접 살피도록 권고했다.

다만 42곳은 악성 코드가 놓인 저장소의 수다. 파일이 모든 저장소에서 실제 실행됐다거나 그만큼 이용자 정보가 유출됐다는 수치는 아니다. JFrog은 공격자 측 수집 서버에서 암호화된 자료가 접수된 정황을 확인했으나 내용은 해독하지 못해 영향받은 시스템 수와 최종 수신 자료를 특정할 수 없다고 밝혔다.

악성 패키지의 계보도 단정하지 않았다. SafeDep은 기존 ‘미아스마’ 계열과 유사점을 지적하면서도 동일 운영자인지는 확인하지 못했다. JFrog 역시 관련 도구의 연관성을 제시했지만 기존 공격자의 신원까지 입증한 것은 아니라고 선을 그었다.

출처: JFrog 보안연구(2026-10-26) https://research.jfrog.com/post/beyond-testmetest-42-hijacked-github-repos/

출처: SafeDep 분석(2026-10-22, 2026-10-26 갱신) https://safedep.io/testmetest-npm-worm-miasma-variant/

대표 이미지: AI 생성 이미지 / 데이마크