본문으로 건너뛰기

© 2026 Molayo

Dev.to헤드라인2026. 06. 06. 17:54

모든 TrapDoor 패키지를 점검했습니다. 34개 모두 행동 이력이 전혀 없었습니다.

요약

npm, PyPI, Crates.io를 대상으로 한 TrapDoor 패키지 공격 사례를 분석합니다. 제로 너비 유니코드를 이용해 AI 어시스턴트가 자격 증명을 탈취하도록 유도하는 새로운 공급망 공격 방식을 다룹니다.

핵심 포인트

  • 제로 너비 유니코드를 활용한 AI 어시스턴트 대상 프롬프트 포이즈닝 공격
  • AI가 눈에 보이지 않는 숨겨진 지침을 읽고 자격 증명을 스캔하도록 유도
  • npm, PyPI, Crates.io 등 다양한 생태계를 동시 공격하는 벡터 확인
  • 행동 기반 차단 도구를 통한 위험 패키지 사전 방어 권장

5월 22일, 한 계정 클러스터가 npm, PyPI, Crates.io 전반에 걸쳐 34개의 패키지를 게시했습니다. 총 384개의 버전이 몇 시간 간격으로 파상적으로 배포되었습니다.

자격 증명 탈취(credential theft) 방식은 전형적이었습니다. 하지만 일반적이지 않았던 부분은 제로 너비 유니코드(zero-width Unicode) 문자가 포함된 오염된 .cursorrulesCLAUDE.md 파일이었습니다. 이는 텍스트 에디터에서는 보이지 않지만, AI 어시스턴트(AI assistants)는 읽을 수 있습니다. 이 숨겨진 지침은 코딩 어시스턴트에게 SSH 키, 클라우드 자격 증명(cloud credentials), 지갑 데이터(wallet data)를 수집하는 "보안 스캔(security scan)"을 실행하도록 명령했습니다.

세 개의 레지스트리 동시 공격

각 생태계는 고유한 실행 벡터(execution vector)를 가졌습니다:

  • npm (21개 패키지): postinstall 훅(hooks)
  • PyPI (7개 패키지): 임포트(import) 시 자동 실행
  • Crates.io (6개 패키지): build.rs 스크립트

이름들은 AI 추천을 유도하도록 설계되었습니다: llm-context-compressor, prompt-engineering-toolkit, wallet-security-checker, defi-risk-scanner. AI 어시스턴트에게 프롬프트 관리 라이브러리를 요청하면 이 중 하나를 추천할 수도 있습니다.

행동 점수(behavioral scoring)가 말해주는 것

저는 모든 TrapDoor 패키지를 Commit의 감사(audit)를 통해 실행해 보았습니다:

패키지생태계점수다운로드기간
llm-context-compressornpm1542/주1년 미만
...

모든 패키지의 점수는 15점 또는 null이었습니다. 지속성도, 커뮤니티도, 릴리스 이력도, GitHub 리포지토리(repo)도 없었습니다.

고위험(HIGH-risk) 패키지를 차단하도록 설정된 행동 게이트(behavioral gate)가 있었다면, CVE 조회나 서명 매칭(signature matching) 없이도 첫 설치 단계에서 34개 모두를 차단했을 것입니다.

AI 포이즈닝(poisoning) 관점

이것은 위협 모델(threat model)의 변화입니다. 전통적인 공급망 멀웨어(supply chain malware)는 postinstall에서 실행됩니다. TrapDoor의 2차 페이로드(secondary payload)는 AI 어시스턴트가 파일을 읽을 때 실행됩니다.

제로 너비 유니코드 지침은 어시스턴트가 git 자격 증명, VS Code 설정, 환경 변수(environment variables), SSH 키를 스캔하도록 유도합니다. 데이터 유출(exfiltration)은 raw.githubusercontent.com과 GitHub Pages를 통해 이루어집니다. 귀하의 방화벽은 해당 도메인들을 허용합니다.

귀하의 AI 어시스턴트는 눈에 보이지 않는 문자를 포함하여 컨텍스트 윈도우 (context window) 내의 모든 문자를 처리하기 때문에, 숨겨진 텍스트가 지시하는 대로 행동합니다.

조치 방법

AI의 패키지 설치를 차단하세요:

npx proof-of-commitment hook

이 명령은 Cursor와 Claude Code에서 발생하는 모든 npm install, pip install, cargo add, go get을 가로챕니다. 임계값 미만의 패키지는 귀하의 기기에 도달하기 전에 차단됩니다.

더 엄격한 차단을 원할 경우 (암호화폐/AI 팀에 권장):

COMMIT_HOOK_SEVERITY_BLOCK=HIGH npx proof-of-commitment hook

오염된 설정 파일이 있는지 확인하세요:

grep -rP '[\x{200B}\x{200C}\x{200D}\x{FEFF}\x{2060}]' .cursorrules CLAUDE.md **/*.mdc 2>/dev/null

이미 설치된 항목을 감사하세요:

npx proof-of-commitment --file package-lock.json

TrapDoor는 3개월 만에 발생한 다섯 번째 주요 공급망 공격 (supply chain attack)입니다. LiteLLM, axios, Shai-Hulud, Miasma, 그리고 이제 이것까지. 각각의 공격은 점점 더 심화되고 있습니다. 침투 경로는 계속 바뀌지만, 패턴은 바뀌지 않습니다. 아무런 검증 장치가 없기 때문에 행동 이력이 전혀 없는 패키지들이 설치되고 있습니다.

AI 자동 생성 콘텐츠

본 콘텐츠는 Dev.to AI tag의 원문을 AI가 자동으로 요약·번역·분석한 것입니다. 원 저작권은 원저작자에게 있으며, 정확한 내용은 반드시 원문을 확인해 주세요.

원문 바로가기
0

댓글

0