2026년 7월 8일, 보안 기업 Wiz가 공개한 결함 하나가 개발자 커뮤니티를 흔들었습니다. 이름은 GhostApproval. 커서(Cursor)·클로드 코드(Claude Code)를 포함한 가장 널리 쓰이는 AI 코딩 도구 6종에서, 악성 저장소가 개발자의 SSH 키 같은 민감 파일에 몰래 써넣을 수 있었다는 내용입니다. 코드 한 줄 심어두지 않고도요.

무슨 일이 있었나

Wiz 연구진은 저장소 안에 심링크(symlink)를 숨겨 뒀습니다. 겉보기엔 project_settings.json 같은 평범한 파일이지만, 실제로는 개발자의 SSH 키 파일을 가리키는 바로가기였죠. 개발자가 에이전트에게 "이 프로젝트 세팅해줘" 또는 "README대로 진행해"라고 시키면, 에이전트는 그 링크를 따라가 공격자가 준비한 키를 진짜 SSH 키 위치에 써넣습니다. 그 결과는 비밀번호 없는 원격 접속 권한이 통째로 넘어가는 것입니다.

핵심은 '승인 창의 거짓말'

AI 코딩 도구는 위험한 작업 전에 "이 파일을 수정할까요?" 하고 승인(approval)을 받습니다. 문제는 이 결함이 고지된 동의(informed consent)를 무력화한다는 점입니다. 에이전트는 내부적으로 링크를 민감한 경로로 해석하면서도, 승인 창에는 무해한 파일명만 보여줬습니다. 개발자는 자기가 실제로 무엇을 허락하는지 볼 수 없는 채로 '예'를 누른 셈이죠. 수십 년 된 유닉스 기능(심링크)이 AI 시대에 다시 문제가 된 것입니다.

6개 도구, 갈린 대응

영향을 받은 도구는 아마존 Q 디벨로퍼, 클로드 코드, Augment, 커서, 구글 Antigravity, Windsurf로 보도됩니다. 대응은 갈렸습니다. 아마존·구글·커서는 취약점으로 인정하고 수정을 배포했습니다. 반면 앤트로픽은 "디렉터리를 신뢰하고 수정을 승인한 사용자가 그 결정을 소유한다"며 이 시나리오를 자사 위협 모델 밖이라고 봤습니다. 같은 현상을 두고 '고쳐야 할 버그'로 볼지 '사용자의 신뢰 결정'으로 볼지 관점이 나뉜 것입니다.

왜 남 일이 아닌가 — 더 큰 그림

GhostApproval은 프롬프트 인젝션이라는 더 큰 흐름의 한 사례입니다. OWASP의 2026년 보고서에서 프롬프트 인젝션은 LLM 위협 1위이자 가장 빠르게 늘어나는 공격 유형으로 꼽혔고, 전년 대비 급증했다고 보도됩니다. 무서운 점은 악성 코드 한 줄 없이도, 깃허브 저장소 하나를 여는 것만으로 개발자 머신이 조용히 손상될 수 있다는 것입니다. 보안 전문가들은 프롬프트 인젝션을 "2026년 현재 완전히 막을 방법이 없는 문제"로 부릅니다.

읽고 바로 할 것 (개발자 체크리스트)

  • 쓰는 AI 코딩 도구가 패치됐는지 확인하고 최신 버전으로 업데이트한다.
  • 신뢰할 수 없는 저장소를 열 때 에이전트에게 자동 실행·자동 수정 권한을 주지 않는다.
  • 승인 창의 파일명을 맹신하지 말고, 프로젝트 폴더 바깥으로 나가는 쓰기는 특히 경계한다.

한눈에 보기: GhostApproval 공격 흐름

flowchart TD
  A["악성 저장소 열기"] --> B["숨겨진 심링크: project_settings.json"]
  B --> C["사용자: 워크스페이스 세팅해줘"]
  C --> D["에이전트가 링크를 따라감"]
  D --> E{"승인 창"}
  E -->|무해한 파일명만 표시| F["사용자가 예 클릭"]
  F --> G["실제로는 SSH 키에 기록"]
  G --> H["공격자에게 원격 접속 권한"]

아래 Pro 파트에서는 '신뢰 경계'가 왜 AI 에이전트 시대의 핵심 개념인지, 그리고 팀·조직 차원의 다층 방어 설계를 정리합니다.