무슨 일이 일어났나
2026년 3월, npm 레지스트리에서 @openclaw-ai/openclawai라는 패키지가 발견되었습니다. 오픈소스 AI CLI 도구 "OpenClaw"를 사칭한 악성 패키지입니다. JFrog 보안 연구팀이 178회 다운로드 시점에서 탐지했습니다.
공격자는 단순한 타이포스쿼팅(오타 노린 이름 사칭)을 넘어섰습니다. 패키지 설명, README, 심지어 가짜 설치 진행 바까지 만들어 정상 도구처럼 보이게 했습니다. 설치하는 순간 macOS 사용자의 모든 비밀번호가 위험에 노출됩니다.
피해 범위: macOS 개발자 타겟. postinstall 스크립트가 즉시 실행되며, 사용자 동의 없이 시스템 깊숙이 침투합니다.
이 악성코드가 무서운 이유
GhostClaw의 공격은 3단계로 진행됩니다. 각 단계가 독립적으로 작동하며, 탐지를 우회하도록 설계되었습니다.
Stage 1 — 가짜 설치 UI
npm install 실행 시 postinstall 스크립트가 작동합니다. 터미널에 가짜 진행 바가 표시되며 "Installing OpenClaw AI Engine..."이라는 메시지가 뜹니다. 사용자는 정상 설치라고 착각합니다. 이 사이 백그라운드에서 Stage 2가 시작됩니다.
Stage 2 — Keychain 탈취
macOS의 security 명령을 이용해 iCloud Keychain에 저장된 비밀번호를 덤프합니다. Chrome, Safari, Firefox의 저장된 비밀번호, 쿠키, 세션 토큰도 추출합니다. 추출된 데이터는 Base64로 인코딩되어 외부 C2(Command & Control) 서버로 전송됩니다.
Stage 3 — RAT(Remote Access Trojan) 상주
11,700줄 규모의 난독화된 JavaScript RAT가 ~/.node_modules/.cache/ 디렉토리에 설치됩니다. 시스템 재시작 후에도 살아남도록 LaunchAgent를 등록합니다. 공격자는 원격에서 파일 접근, 스크린샷 캡처, 추가 명령 실행이 가능합니다.
뭘 훔쳐가나
GhostClaw가 탈취하는 데이터의 범위는 충격적입니다:
- macOS Keychain — iCloud에 저장된 모든 비밀번호 (Wi-Fi, 웹사이트, 앱)
- 브라우저 비밀번호 — Chrome, Safari, Firefox의 자동완성 데이터, 쿠키, 세션 토큰
- 암호화폐 지갑 — MetaMask, Phantom 등 브라우저 확장 프로그램의 시드 구문
- 클라우드 서비스 키 — AWS credentials, GCP 서비스 계정 키,
.env파일 - AI 서비스 설정 — OpenAI, Anthropic, Google AI API 키
단순히 비밀번호만 빼가는 게 아닙니다. 개발자의 클라우드 인프라 접근 권한, 암호화폐 자산, AI 서비스 결제 정보까지 한 번에 탈취합니다.
지금 할 수 있는 대응법
1단계: 감염 여부 확인
# 패키지 설치 여부 확인
npm ls @openclaw-ai/openclawai 2>/dev/null && echo "감염됨!" || echo "안전"
# LaunchAgent 확인 (RAT 상주 여부)
ls ~/Library/LaunchAgents/ | grep -i "node\|openclaw\|cache"
# 의심스러운 캐시 디렉토리 확인
ls -la ~/.node_modules/.cache/ 2>/dev/null
2단계: 제거
# 패키지 제거
npm uninstall @openclaw-ai/openclawai
# LaunchAgent 제거
launchctl unload ~/Library/LaunchAgents/com.node.cache.plist 2>/dev/null
rm -f ~/Library/LaunchAgents/com.node.cache.plist
# 악성 캐시 디렉토리 삭제
rm -rf ~/.node_modules/.cache/
3단계: 비밀번호 전면 교체
감염이 확인되었다면 Keychain에 저장된 모든 비밀번호를 교체해야 합니다. 브라우저 저장 비밀번호, AWS/GCP 키, AI API 키도 포함입니다. 암호화폐 지갑은 새 시드로 자산을 이전하세요.
예방 수칙:
- npm 패키지 설치 전
npm info <패키지명>으로 게시자, 다운로드 수, 저장소 URL 확인 --ignore-scripts옵션으로 설치 후postinstall스크립트를 수동 검토- macOS Keychain 접근 요청 팝업이 뜨면 무조건 허용하지 말 것
- npm audit, Socket.dev 같은 공급망 보안 도구 활용