npm, PyPI, Crates.io 전반에 걸친 TrapDoor 공급망 공격이 암호화폐 지갑 키를 탈취하고, 보이지 않는 유니코드 지시어로 AI 코딩 어시스턴트를 오염시킵니다.

Marcus Webb
DeFi 리서치 책임자

TrapDoor라는 조직화된 공급망 공격이 npm, PyPI, Crates.io 전반에 걸쳐 34개 패키스를 손상시켰으며, 특히 암호화폐 개발자를 표적화했습니다. 이 악성코드는 지갑 개인키, SSH 자격증명, AWS 토큰을 탈취하고, 보이지 않는 유니코드 문자로 AI 코딩 어시스턴트를 오염시키는 새로운 공격 벡터를 도입합니다.
2026년 5월 24일, Socket 보안 연구진은 세 개 주요 패키지 레지스트리를 가로지르는 조직화된 공급망 캠페인을 공개했습니다. 가장 초기의 악성 패키스는 이틀 전인 5월 22일에 등장했습니다. TrapDoor라는 이름이 붙은 이 공격은 384개 이상의 버전에 걸쳐 34개의 악성 패키스를 배포했으며, 모두 암호화폐, DeFi, AI 개발자들의 자격증명을 수집하도록 설계되었습니다.
암호화폐를 표적화한 공급망 공격은 이번이 처음이 아닙니다. 2018년의 event-stream 사건은 Copay 비트코인 지갑을 손상시켰고, 2021년의 ua-parser-js 탈취는 수백만 대의 기기에 크립토마이너를 배포했습니다. 그러나 TrapDoor는 진화한 형태를 보여줍니다, 이것은 AI 코딩 어시스턴트를 공격 벡터로 무기화한 최초의 대규모 크로스-에코시스템 캠페인입니다.
이 공격은 일상적인 개발자 워크플로우 중에 동작하는 에코시스템별 실행 경로를 사용합니다.
npm 패키지들은 npm install 동안 자동으로 실행되는 postinstall 훅을 사용합니다. 공통 페이로드인 1,149행짜리 파일 trap-core.js는 로컬 파일시스템을 스캔하여 SSH 키, AWS 자격증명, GitHub 토큰, 브라우저 데이터, MetaMask, Phantom 등 지갑 확장 데이터들을 찾습니다. 일반적인 자격증명 탈취기와 달리, TrapDoor는 유출 전 수집된 자격증명을 라이브 API에 대조하여 검증함으로써 공격자의 신호 대비 잡음을 개선합니다.
PyPI 패키지들은 임포트 시점에 실행되며, 공격자가 제어하는 GitHub Pages 도메인에서 JavaScript 페이로드를 다운로드합니다. 이 교차 언어 기법은 파이썬 패키지를 재배포하지 않고도 페이로드를 원격으로 업데이트할 수 있게 합니다.
Crates.io 패키지들은 cargo build 중 실행되는 악성 build.rs 스크립트를 포함하여, 특히 Sui 및 Move 개발자 키스토어를 표적화합니다. 탈취된 데이터는 하드코딩된 XOR 키로 암호화되어 GitHub Gist로 유출됩니다.
아래 목록 중 어떤 패키지를 설치했다면, 즉시 모든 자격증명을 교체하고 암호화폐 자금을 새 지갑으로 옮기세요. 손상된 키는 악성 패키지가 제거된 이후에도 장기간 악용될 수 있습니다.
이 패키지들은 합법적인 개발자 유틸리티로 위장합니다. solidity-deploy-guard, defi-threat-scanner, wallet-security-checker 같은 이름은 보안에 민감한 암호화폐 개발자들의 관심을 끌도록 설계되었습니다.
npm (21 packages): async-pipeline-builder, build-scripts-utils, chain-key-validator, crypto-credential-scanner, defi-env-auditor, defi-threat-scanner, deployment-key-auditor, dev-env-bootstrapper, eth-wallet-sentinel, llm-context-compressor, mnemonic-safety-check, model-switch-router, node-setup-helpers, project-init-tools, prompt-engineering-toolkit, solidity-deploy-guard, token-usage-tracker, wallet-backup-verifier, wallet-security-checker, web3-secrets-detector, workspace-config-loader
PyPI (7 packages): cryptowallet-safety, data-pipeline-check, defi-risk-scanner, env-loader-cli, eth-security-auditor, git-config-sync, solidity-build-guard
Crates.io (6 packages): move-analyzer-build, move-compiler-tools, move-project-builder, sui-framework-helpers, sui-move-build-helper, sui-sdk-build-utils
TrapDoor가 전례가 없는 이유는 AI 코딩 어시스턴트을 표적화했다는 점입니다. 악성코드는 프로젝트 디렉터리에 .cursorrules 및 CLAUDE.md 파일을 심습니다 - 이는 Claude Code, Cursor 같은 도구들이 프로젝트 컨텍스트로 읽는 표준 구성 파일들입니다.
이 파일들 안에는 제로-폭 유니코드 문자(U+200B, U+200C, U+200D, U+FEFF)로 인코딩된 지시문이 숨겨져 있습니다. 이 문자들은 텍스트 편집기, IDE, 심지어 GitHub의 코드 리뷰 인터페이스에서도 보이지 않습니다. 개발자가 파일을 검토할 때는 정상적인 프로젝트 문서만 보입니다.
숨겨진 지시문은 AI 어시스턴트에게 개발자가 코딩 도움을 요청할 때마다 "의무적 보안 스캔"을 실행하라고 지시합니다. 이 "스캔"은 실제로 환경 변수, SSH 키, 지갑 데이터를 공격자 인프라로 전송하는 자격증명 추출 파이프라인입니다.
공격자들은 또한 browser-use/browser-use, langchain-ai/langchain, langflow-ai/langflow, run-llama/llama_index, FoundationAgents/MetaGPT, OpenHands/OpenHands 등 주요 오픈소스 AI 프로젝트들에 풀 리퀘스트를 제출했습니다. 각 PR은 "docs: add .cursorrules with dev standards" 같은 무해한 제목을 달았고, 캠페인 식별자 P-2024-001을 포함시켰습니다. 병합될 경우 AI 코딩 도구로 이러한 저장소를 여는 모든 개발자가 표적이 됩니다.
이는 패러다임의 전환을 의미합니다. 이전의 공급망 공격은 코드 실행 파이프라인을 표적화했습니다. TrapDoor는 사람과 AI의 상호작용 계층을 표적화합니다, 이는 기존의 의존성 스캐닝 도구로는 감지할 수 없는 공격 표면입니다.
초기 자격증명 탈취를 넘어서, TrapDoor는 손상된 기기에서 다음 일곱 가지 영속성 메커니즘을 구축합니다:
.cursorrules 및 CLAUDE.md 파일.bashrc, .zshrc)authorized_keys 수정횡적 이동 능력은 특히 우려스럽습니다. 단일 개발자 기기 하나가 재사용된 SSH 키를 통해 CI/CD 인프라, 배포 서버, 동료의 워크스테이션으로 연쇄적으로 확산될 수 있습니다.
DeFi 프로토콜 보안에 대한 영향은 개별 개발자 수준을 훨씬 넘어섭니다. 손상된 개발자 기기는 배포자 개인키, 관리자 멀티시그 키, CI/CD 파이프라인 비밀, 브리지 검증자 키, 오라클 서명 키에 대한 접근을 제공합니다.
최근 사건들이 이 위협 모델을 뒷받침합니다. 2026년 3월의 Resolv 익스플로잇(2,300만 달러 손실)은 스마트 계약 버그가 아니라 오프체인 인프라 실패에서 비롯되었습니다. 2026년 4월의 Drift 사건(2억 8,500만 달러)은 사회공학과 정당한 관리자 접근 권한을 결합한 사례였습니다. 이러한 공격들은 블록체인 외부에서 시작되었으며, 정확히 TrapDoor가 작동하는 지점입니다.
보안 연구자들은 중대~대형 DeFi 프로토콜에서 배포자 키에까지 도달하는 TrapDoor식 손상이 발생하면 1억 달러에서 3억 달러에 이르는 손실이 발생할 수 있다고 추정합니다.
Socket은 TrapDoor를 중앙값 탐지 시간 5분 27초에 탐지했고, 가장 빠른 탐지는 게시 후 단 58초였습니다. 공격자는 GitHub 계정 ddjidd564와 npm 계정 asdxzxc로 활동했으며, 페이로드 호스팅을 위해 GitHub Pages 도메인을 사용했습니다.
npm audit, pip audit, cargo audit 같은 표준 도구들은 AI 오염 벡터를 탐지할 수 없습니다. 악성 "지시문"은 실행 가능한 코드가 아니라 유니코드로 숨겨진 자연어이기 때문입니다.
의존성 감사. package.json, requirements.txt, Cargo.toml에서 나열된 34개 패키지를 검색하세요.
모든 자격증명 교체. 잠재적으로 영향을 받은 기기에서 SSH 키, AWS 액세스 키, GitHub 토큰, 지갑 개인키를 전부 교체하세요. 키가 기기에 저장되어 있었다면 암호화폐 자금을 즉시 새 지갑으로 이동하세요.
영속성 확인. .cursorrules 및 CLAUDE.md 파일에 제로-폭 유니코드 문자가 있는지 cat -v 또는 헥스 에디터로 확인하세요. .git/hooks/의 Git 훅, cron 작업, systemd 서비스, 쉘 프로파일에서 의심스러운 추가 항목을 검토하세요.
자동 스크립트 실행 비활성화. CI/CD에서 자동 실행을 비활성화하세요: npm ci --ignore-scripts 및 pip install --no-build-isolation 사용을 고려하세요.
CVE 매칭만 하는 도구가 아니라 행동 기반 분석을 수행하는 의존성 스캐닝 도구를 배포하세요. .cursorrules 및 CLAUDE.md 파일을 버전 관리하여 변경 사항이 diff에 나타나도록 하세요. 구성 파일에서 제로-폭 유니코드 문자를 검사하는 pre-commit 훅을 추가하세요. 모든 배포 키에 하드웨어 월렛을 사용하고 관리자 기능에는 멀티시그를 강제하세요.
TrapDoor는 공급망 보안의 전환점을 표시합니다. event-stream 공격은 한 에코시스템의 한 패키스를 표적화했습니다. TrapDoor는 세 개 에코시스템을 동시에 조율하고, 유출 전에 자격증명을 검증하며, 다중 영속성 메커니즘을 구축하고, 네트워크를 통해 횡적으로 이동하며, AI 코딩 어시스턴트를 오염시킵니다 - 이 도구들은 모든 개발자의 워크플로우에 빠르게 표준으로 자리 잡고 있습니다.
AI 어시스턴트가 개발 프로세스에 더 깊게 통합될수록 이들이 만들어내는 공격 표면은 더욱 커질 것입니다. 보이지 않는 유니코드 기법이 효과를 발휘하는 이유는 AI 도구들이 구성 파일의 전체 텍스트 콘텐츠를 처리하기 때문입니다. AI 어시스턴트 프레임워크가 숨은 문자에 대한 콘텐츠 정화 기능을 구현하지 않는 한, 이 벡터는 열려 있습니다.
암호화폐 개발자들에게 전하는 메시지는 분명합니다: 개발 환경은 이제 주요한 공격 표면입니다. 개발자 기기 보안을 스마트 컨트랙트 감사와 동일한 수준의 엄격함으로 다루세요.
면책 조항: 이 글은 정보 제공을 목적으로 하며 재정적 조언을 구성하지 않습니다. 암호화폐 투자는 상당한 위험을 수반합니다. 투자 결정을 내리기 전에 항상 직접 조사하고 자격을 갖춘 금융 고문과 상담하세요.
시장 분석 및 실행 가능한 인사이트. 스팸은 절대 없습니다.