악성 패키지를 깔았다는 걸 알면 보통 토큰부터 끊습니다. 10월 8일에 발견된 tensorlake 사건에서는 그 순서가 사고를 키웁니다. 토큰이 막히는 순간 홈 폴더를 지우는 프로그램이 함께 깔리기 때문입니다.
근거: StepSecurity Tensorlake npm Package Compromised, Socket TensorLake npm SDK Compromised (2026년 10월 8일)
무슨 일이 있었나
- 대상: npm 패키지
tensorlake0.5.144 (주간 다운로드 약 1만 8천). - 10월 7일 01:20 UTC, 관리자 이름으로 된 악성 커밋이 저장소 main 브랜치에 바로 들어갔습니다. 다음 날 프로젝트의 정식 배포 과정이 그대로 npm에 올렸기 때문에 출처 증명(provenance)도 정상으로 붙어 있었습니다.
- 설치할 때 실행되는 스크립트(preinstall)가 npm·GitHub·클라우드 토큰과 AI 코딩 도구 설정 파일을 훔치고, 피해자 계정의 다른 패키지에도 퍼지려 합니다.
덫: 토큰이 막히면 홈 폴더를 지운다
GitHub 토큰을 훔치면 gh-token-monitor라는 작은 서비스를 깔아 둡니다. 이 서비스는 60초마다, 최대 24시간 동안 그 토큰이 아직 쓸 수 있는지 GitHub에 물어봅니다. 거절당하면 rm -rf ~/(윈도우에서는 사용자 프로필 삭제)를 실행합니다. 어디서 토큰을 폐기하든 같습니다.
정리 순서
- 감시 프로그램부터 지웁니다.
- macOS:
~/Library/LaunchAgents/com.user.gh-token-monitor.plist를 내리고 지웁니다.launchctl unload ~/Library/LaunchAgents/com.user.gh-token-monitor.plist rm ~/Library/LaunchAgents/com.user.gh-token-monitor.plist - Linux:
systemctl --user disable --now gh-token-monitor.service후~/.config/gh-token-monitor/삭제. - Windows:
monitor.ps1을 실행하는 ONLOGON 예약 작업 삭제.
- macOS:
- 그다음에 토큰과 비밀번호를 바꿉니다. npm, GitHub, 클라우드, Vault, SSH 키까지.
- 계정에 낯선 패키지 배포나 저장소 변경이 없는지 확인합니다. StepSecurity는
claude@users.noreply.github.com명의의 커밋, 직접 넣지 않은.claude·.vscode파일도 살펴보라고 합니다. - 깨끗한지 확신할 수 없다면 그 컴퓨터를 새로 설치합니다.
내 컴퓨터 확인
ls ~/Library/LaunchAgents/ | grep gh-token-monitor # macOS, 아무것도 안 나오면 정상
grep -r '"tensorlake"' package-lock.json pnpm-lock.yaml yarn.lock 2>/dev/null
이 글을 쓰며 제 맥에서 첫 줄을 실행했을 때는 아무것도 나오지 않았습니다. tensorlake를 쓴다면 0.5.143으로 고정하세요.
오늘 할 일
프로젝트 락 파일에서 tensorlake를 검색해 보세요. 그리고 다음에 어떤 패키지가 털렸다는 소식을 들으면, 토큰을 끊기 전에 그 악성코드가 무엇을 심는지부터 확인하는 습관을 들이세요.