고액 연봉 제안을 받은 Python 개발자 채용 과정에서 받은 과제 폴더에 악성 Git 훅(Malicious Git Hooks)이 포함된 사실을 발견함
Git 훅 스크립트는 OS를 확인하여 원격 페이로드(Remote Payload)를 자동으로 다운로드 및 실행하는 구조였음
악성 스크립트는 Node.js 설치, 의존성 패키지 설치 후 암호화된 파서(Obfuscated Parser)를 실행하여 추가 공격을 시도함
공격자는 실제 공개된 FastAPI 프로젝트를 복제하여 악성 폴더를 추가하는 방식으로 공격을 진행했으며, 이는 광범위한 피싱 캠페인(Widespread Phishing Campaign)의 일부로 추정됨
본문에서는 채용 과제 폴더 내에 숨겨진 악성 Git 훅을 발견한 과정을 상세히 기술합니다. 특히 `.git/hooks/pre-commit` 스크립트가 대상 시스템의 OS를 탐지하여 원격 페이로드(Remote Payload)를 자동으로 다운로드하고 실행하는 점을 지적합니다. 공격자는 IP 주소를 직접 사용하여 악성 스크립트를 배포했으며, 이는 보안 관점(Security Perspective)에서 매우 위험한 행위로 간주됩니다. 커뮤니티에서는 이러한 공격 방식이 표준화된 피싱 캠페인(Standardized Phishing Campaign)의 일부일 가능성을 제기합니다.
악성 스크립트는 초기 페이로드(`tokenlinux.npl`)를 다운로드한 후, 이를 `tokenlinux.sh`로 변경하여 백그라운드에서 실행시킵니다. 이 두 번째 단계 스크립트는 Node.js를 설치하고 `package.json` 및 난독화된 `parser.js`를 다운로드합니다. 특히 `id=402`와 같은 추적 식별자(Tracking Identifier)를 사용하여 개별 후보자를 추적하고 맞춤형 페이로드를 제공하는 것으로 보입니다. LLM(Large Language Model)을 사용하여 난독화된 코드를 분석하려는 시도가 있었으나, 일부 LLM은 안전 가드레일(Safety Guardrails)로 인해 분석을 거부했습니다.
다운로드된 `package.json` 파일에는 `clipboardy`, `fs`, `jsonwebtoken` 등 일반적인 백엔드 작업과 관련 없는 의존성이 포함되어 있습니다. 또한, 이더리움 개발 환경인 Hardhat이 포함된 점은 주목할 만합니다. 이는 공격자가 암호화폐 지갑 탈취(Crypto Wallet Draining) 또는 브라우저 확장 프로그램과의 상호작용을 시도할 가능성을 시사합니다. 커뮤니티에서는 이러한 의존성 목록이 악의적인 목적(Malicious Intent)을 명확히 드러낸다고 분석합니다.
공격자는 RouterHosting에서 호스팅하는 IP 주소를 사용했으며, OpenSSH 9.6p1이 실행 중인 서버를 운영했습니다. 최신 버전의 SSH를 사용한 것은 운영 보안(Operational Security, OPSEC) 측면에서 긍정적이지만, 악성 페이로드 배포 방식은 다소 노출되었습니다. 또한, 공격자는 기존 공개 저장소를 복제하고 악성 폴더를 추가하는 방식으로 코드를 준비했으며, 이는 공격의 용이성(Ease of Attack)을 높이는 전략으로 분석됩니다.
커뮤니티 토론에서는 Claude와 같은 LLM이 악성 스크립트 분석을 거부하는 안전 가드레일 기능에 대한 논의가 있었습니다. 일부 사용자는 이러한 가드레일이 실제 악의적인 행위자(Malicious Actors)가 우회 방법을 찾도록 유도할 수 있다고 지적합니다. 반면, 일반 사용자가 정보 이해를 위해 악성 코드를 분석하려 할 때 오히려 방해가 된다는 의견도 제시되었습니다. 이는 LLM의 보안 적용(Security Application)과 접근성(Accessibility) 사이의 균형점을 찾는 과제를 보여줍니다.