가짜 채용 ZIP, git status만으로 악성코드 실행
Cryptic Heaven 채용 담당자를 자처한 인물이 조작된 .git 폴더가 든 ZIP을 개발자에게 보냈다. 평범한 git status만으로도 숨은 코드가 내려받아질 수 있다.

LinkedIn으로 온 채용 제안이 함정이었다. Cryptic Heaven이라는 회사의 채용 담당자가 한 개발자에게 Contract-2026.zip을 보냈고, 안에는 조작된 .git 폴더가 들어 있었다. install.sh를 실행하거나 빌드할 필요도 없다. 조건이 맞으면 git status만으로 발동한다.
담당자는 암호화폐 신용카드 사용자를 위한 금융 시스템을 개발 중이라고 소개했다. 개발자가 프로젝트와 조건을 묻자 계약서, 직무 설명서, 프로젝트 링크가 왔고, 이름을 채운 계약서를 돌려보내 달라는 요청이 붙었다. ZIP에는 README.md, contract.docx, 이력과 여러 브랜치가 담긴 .git 디렉터리가 있었다. README는 채용 공고, 계약서, 코드 순으로 브랜치를 보라고 안내했다. 계약서는 빈칸투성이 양식이었고 법인, 보수, 관할 등이 없었다.
git status로 악성코드가 실행되는 원리는?
Git에는 외부 프로그램을 실행하는 기능이 있다. 하나는 훅이다. 보통 .git/hooks에서 찾지만 core.hooksPath로 위치를 바꿀 수 있다. 이번에는 아무도 열어보지 않을 폴더를 가리켰고, 브랜치 전환 뒤 자동 실행되는 post-checkout 훅이 있었다.
다른 하나는 .git/config의 필터다. ltr이라는 clean 필터가 .git/ltr을 실행하도록 설정돼 있고, attributes의 별표로 모든 파일에 적용된다. git status는 파일이 바뀌었는지 확인하려고 clean 필터를 거칠 수 있어서, 평범한 명령이 외부 프로그램을 실행한다. 글쓴이는 안전한 테스트 저장소에서 필터를 호출 기록만 남기는 스크립트로 바꿔 확인했다. git status가 필터를 호출했고, 브랜치 전환은 post-checkout도 호출했다.
.git/ltr 스크립트는 무엇을 하나?
셸 스크립트다. Git은 파일마다 필터를 여러 번 부르므로, 마지막 호출 시각을 기록하고 2초 동안 호출이 없을 때까지 기다린다. mkdir 잠금으로 감시 프로세스 중복도 막는다. 그 뒤 운영체제를 판별해 원격 서버에서 코드를 받아 즉시 실행한다. Linux와 macOS는 sh, Windows는 PowerShell이다. 서버는 vercelscript.vercel.app 하위 도메인에 있었다. 모든 것이 백그라운드로 돌고 출력은 /dev/null로 버려져 사용자는 눈치채지 못할 수 있다.
내려받는 스크립트의 정체는 ZIP만으로는 알 수 없다. 다음 단계 공격이나 정보 탈취일 수 있다.
주목할 만한 앱
올바른 칸을 고르고 더해 목표 숫자를 맞추세요. 배우긴 쉽고 마스터하긴 어렵습니다. 무료, 전 연령.
AI 대화 파트너와 대화하세요. 모든 문장이 교정되어 내 언어로 설명과 함께 돌아옵니다. 9개 언어, A1부터 C2까지.
EDIFACT와 X12 메시지를 열어 각 세그먼트 설명을 보고, JSON/XML로 변환하고, PDF와 Excel로 내보내세요. 로컬에서 실행, 업로드 없음.
받는 사람, 기념일, 성격을 고르세요. 검색 엔진이 현지 상점의 상품 설명을 읽고 어울리는 것을 추려 줍니다. 무료, 가입 없음.
같은 날의 다른 뉴스
전체 보기 →관련 카테고리: 보안
전체 보기 →
사이버시큐리티클라우드, GitHub 계정 1건 유출로 고객정보 노출 우려

wfx-loot 공격, GitHub 저장소 6만 개 넘게 노렸다

SignDrop 윈도 제로데이, 디펜더로 SYSTEM 권한 탈취




