Claude Code가 저장소 속 악성 코드를 병합 전에 잡아냈다
Claude Code를 로 실행해 여러 저장소의 브랜치를 정리하던 중, 한 브랜치를 합치려는 순간 문제가 발견됐다. Claude는 들어오는 커밋에 악성 코드가 들어 있다고 판단했고, 병합과 빌드를 멈췄다. 악성 코드는 next..js 파일의 module.exports 뒤에 붙은 난독화된 코드 한 덩어리였다.
는 빌드할 때 이 설정 파일을 실행하므로, 그대로 두면 로컬이나 CI에서 다음 빌드 때 코드가 실행될 수 있었다. Claude는 실제로 실행하지 않고도 변경 내용을 보고 EtherHiding loader로 식별한 뒤, 내부 동작을 역분석했다. 유입 경로는 확정할 수 없지만, Upwork를 통해 함께 일하던 외주 개발자의 개발용 컴퓨터가 감염된 것이 가장 유력한 상황이다.
이 공격은 보통 설치 순간 코드를 실행하는 악성 에서 시작되며, 감염된 컴퓨터에 저장된 git 를 읽어 접근 가능한 저장소에 다시 푸시하는 방식으로 퍼질 수 있다.
핵심 포인트
- Claude Code가 브랜치 병합 중 악성 코드가 포함된 커밋을 감지하고 병합을 거부했다.
- 악성 코드는 next..js 끝부분에 난독화된 코드로 숨어 있었다.
- 설정 파일은 빌드 때 실행되므로 CI에서도 피해가 날 수 있었다.
- Claude는 코드를 실행하지 않고 변경 내용만 보고 EtherHiding loader로 판단했다.
- 감염된 외주 개발자 컴퓨터와 악성 가 가능한 유입 경로로 제시됐다.