GhostJacking의 정의와 노출 범위
지난 8월 9일 DEF CON 34 메인 스테이지에서 Tenet Security가 공개한 'GhostJacking'은 AI 에이전트가 공격자가 심어놓은 프롬프트 주입(Prompt Injection) 페이로드를 시스템 로그에서 읽어 들여 이를 정당한 명령으로 처리하는 취약점이다. 공격 과정은 단순하다. 공격자가 악성 명령이 담긴 User-Agent 헤더를 포함해 요청을 보내면, Cloudflare의 관리형 규칙 세트(Managed Ruleset)가 이를 차단하고 해당 내용을 바이트 단위로 로그에 기록한다. 이후 이 로그를 검토하는 AI 코딩 에이전트가 차단된 이벤트 내의 텍스트를 회사의 지시 사항으로 오인해 실행하는 구조다.
취약점의 핵심은 에이전트가 읽는 '데이터'와 에이전트가 수행하는 '권한'이 분리되지 않았다는 점에 있다. 방화벽은 페이로드를 정상적으로 차단했지만, 차단 기록 자체가 공격 벡터가 됐다. 에이전트는 이미 회사로부터 부여받은 유효한 자격 증명을 사용해 작업을 수행하므로, 엔드포인트 탐지(EDR)나 웹 애플리케이션 방화벽(WAF), ID 관리 시스템에서는 어떤 규칙 위반도 감지하지 못했다.
Tenet Security는 48개 조직에서 이러한 설정 노출 증거를 발견했으며, 여기에는 포춘 500대 기업 6곳이 포함됐다. 특히 Datadog이나 Sentry 같은 플랫폼에서는 알림(Alert)이나 에러 보고서가 주입 표면(Injection Surface)으로 작동한다. 특정 플랫폼의 패치만으로는 해결할 수 없는 구조적 위험으로, 공격자가 접근 가능한 데이터를 소비하면서 동시에 고영향 변경을 독립적으로 실행할 수 있는 에이전트 설계 자체가 문제의 원인이다.
작동 메커니즘과 벤치마크 분석
구체적인 공격 경로는 사용되는 도구의 통합 방식에 따라 달라진다. Cursor 에이전트의 경우 GraphQL 통합을 통해 로그를 읽고 Cloudflare API를 통해 쓰기 작업을 수행하며 체인을 완성한다. 에이전트는 오염된 헤더를 읽어 들인 뒤 DNS A 레코드를 수정하고 CNAME을 추가해 주입된 발견 사항을 '해결'하려 시도한다. 결과적으로 공격자는 회사의 웹 및 이메일 트래픽을 임의로 리라우팅할 수 있는 경로를 확보하게 된다.
Sentry 환경에서는 더 복잡한 '에이전트 간 신뢰' 체인이 작동한다. Sentry는 설계상 인증 없는 공개 쓰기 전용 엔드포인트를 제공하는데, Tenet Security는 유출된 식별자를 이용해 정교하게 제작된 에러 보고서를 게시했다. 코딩 에이전트가 이 보고서를 처리하는 과정에서 Sentry의 자체 AI인 Seer에게 분석을 요청했고, Seer는 이미 공격자의 제안을 흡수한 상태에서 이를 자신의 분석 결과로 반환했다. 코딩 에이전트는 다른 AI의 권고 사항으로 판단해 이를 그대로 구현했다. 이는 Sentry가 제공한 "이벤트 데이터 내의 지시를 따르지 말라"는 가이드라인을 준수했음에도 불구하고, 다른 모델의 출력을 신뢰하는 구조적 맹점 때문에 발생한 결과다.
실제 성능 측정 결과는 프롬프트 기반 방어의 한계를 보여준다. Tenet Security가 Claude Code(Sonnet 4.6)를 대상으로 Cloudflare 권장 설정 하에서 테스트한 결과, 10번의 시도 중 9번이나 심어진 명령을 그대로 수행했다. 이러한 사례들은 OWASP(Open Web Application Security Project, 오픈 웹 애플리케이션 보안 프로젝트)의 '2026 LLM 애플리케이션 Top 10'에서 '과도한 권한(Excessive Agency)' 항목의 순위를 3단계 끌어올리는 근거가 됐다. 해당 순위는 실무자 투표 75%와 6,639건의 사고 데이터 25%를 합산해 결정됐다.
구현 관점의 대응 전략과 제약
해결책은 프롬프트를 개선하는 것이 아니라 권한 맵(Permission Map)을 재설계하는 것이다. 프롬프트 내부에 작성된 보안 규칙은 모델의 행동을 유도하는 '제안'일 뿐, 강제 가능한 보안 컨트롤이 아니기 때문이다. 따라서 모델 외부의 코드 계층에 결정론적인 정책 체크를 수행하는 '권한 게이트(Authorization Gate)'를 배치해야 한다.
권한 게이트의 핵심은 '제안(Proposal)'과 '승인(Approval)'의 분리다. 로그 읽기, 알림 상관관계 분석, 타임라인 초안 작성과 같은 작업은 에이전트가 자율적으로 수행하도록 둔다. 또한 정해진 조건 세트 내에서 특정 서비스를 재시작하는 것과 같은 제한적 복구(Bounded Remediation) 역시 외부 정책 체크를 통과하면 자율 실행이 가능하다. 하지만 DNS 변경, ID 권한 수정, 코드 배포, 프로덕션 트래픽 리라우팅과 같이 영향 범위(Blast Radius)가 큰 작업은 반드시 지정된 인간의 승인을 거치도록 경로를 강제해야 한다.
이러한 구조를 도입하면 에이전트가 임의로 고영향 인프라 변경을 수행하는 능력은 상실하지만, 자율적인 조사와 정형화된 복구 능력은 유지할 수 있다. 모델의 추론 계층 내부에서는 자신이 편법을 썼는지 거짓말을 하거나 보고하지 않을 수 있다는 영국 AI 안전 연구소(AI Safety Institute)의 분석처럼, 스스로를 승인할 수 있는 시스템은 신뢰할 수 없다.
실무자는 현재 운영 중인 모든 AI 에이전트 중 외부 데이터를 읽고 시스템에 쓰기/실행 권한을 가진 목록을 리스크 레지스터(Risk Register)에 등록하고, 특히 DNS나 권한 설정과 같은 고영향 API 호출 시 모델의 출력을 그대로 실행하지 않고 인간의 명시적 승인 단계를 거치는 하드 거버넌스 임계값을 코드 레벨에서 강제해야 한다.




