- Ghostcommit은 이미지에 숨긴 프롬프트 인젝션으로 AI 코드 리뷰어 CodeRabbit과 Bugbot의 검사 단계를 우회한다.
- 공격은 저장소의 .env 파일을 읽어 비밀 값을 코드 본문 내 숫자 나열 형태로 위장 기록하도록 유도한다.
- GitHub PR처럼 사람이 직접 열어보지 않는 경로에서 자동화 파이프라인이 실행되므로 기존 코드 리뷰 체계의 맹점이 드러난다.
멀티모달 프롬프트 인젝션은 텍스트 기반 보안 가드레일의 가정을 약화시키며 DevSecOps 공급망의 잠재적 위협 표면으로 부상하고 있다.
2026년 7월 11일 보안 매체 Bleeping Computer는 이미지 내부에 프롬프트 인젝션을 은닉하여 AI 기반 코딩 에이전트를 속이고 저장소 비밀을 유출시키는 Ghostcommit 공격 PoC를 공개했다. 이 공격은 사람이 시각으로 열어보기 어려운 GitHub Pull Request 환경에서 자동화 파이프라인을 통해 실행된다는 점에서 AI 시대 공급망 보안의 새로운 위협으로 평가된다. 본 글은 해당 기사와 OWASP가 정리한 LLM 애플리케이션 보안 위협 정의를 바탕으로 공격 구조와 대응 방향을 정리한다.
공격 개요: Ghostcommit이란 무엇인가
Ghostcommit은 AI 코딩 에이전트가 코드 변경을 처리할 때 함께 참조하는 이미지 자산에 악성 프롬프트를 심어 넣어, 에이전트가 의도하지 않은 행동을 수행하도록 만드는 공격이다. 공격 표면이 텍스트에서 이미지라는 비정형 데이터로 확장된 만큼, 기존의 정규식 기반 프롬프트 인젝션 필터만으로는 탐지가 어려울 수 있다.
멀티모달 프롬프트 인젝션의 기본 개념
멀티모달 프롬프트 인젝션이란 텍스트와 이미지를 함께 입력으로 받는 대규모 언어 모델의 특성상, 공격자가 이미지 메타데이터나 시각적 텍스트 안에 시스템 지시처럼 보이는 문장을 삽입하면 모델이 이를 정당한 명령으로 오인하는 현상을 말한다. OWASP Top 10 for LLM Applications는 이를 LLM01 Prompt Injection 위협으로 분류하며, 단일 모달리티에서 멀티모달리티로 확장되는 추세에 주의를 환기하고 있다.
GitHub PR을 매개로 한 PoC 공격 시나리오
Bleeping Computer가 제시한 시나리오에서 공격자는 일반적인 코드 변경과 함께 악성 PNG 이미지를 PR에 첨부한다. 자동화 리뷰 트리거가 동작하면 AI 코드 리뷰어와 후속 코딩 에이전트가 변경 사항과 이미지를 함께 분석하며, 이미지에 숨겨진 지시가 그대로 모델의 작업 지시문으로 흡수된다. 사람이 PR diff 화면을 직접 열어 이미지를 확대하지 않는 한 시각적 은닉이 유지된다.
우회된 AI 코드 리뷰 도구의 작동 방식
Ghostcommit PoC에서 우회 대상으로 지목된 도구는 CodeRabbit과 Bugbot이다. 두 도구 모두 GitHub PR 이벤트를 구독하여 자동으로 리뷰 코멘트를 남기고 후속 작업 에이전트에 컨텍스트를 전달하는 구조를 갖는다. 이 자동화 흐름이 곧 공격의 진입로가 된다.
CodeRabbit과 Bugbot의 탐지 한계
두 도구는 텍스트 diff에 대한 정적 분석과 정책 룰 기반의 패턴 매칭에 강점을 보이는 반면, 이미지 컨텐츠 내부에 삽입된 자연어 지시까지 의미 단위로 해석하여 차단하는 기능은 갖지 못한 것으로 분석된다. 결과적으로 리뷰 단계의 봇이 정상 코멘트를 남기는 동시에, 후속 코딩 에이전트에는 이미지의 지시가 그대로 전달되어 탐지를 우회한다.
이미지 비검증 약점이 발생하는 구조적 원인
원인은 크게 두 가지로 정리된다. 첫째, 자동화 파이프라인은 사람이 시각적으로 검증하기 전 단계에서 동작하므로 이미지 신뢰 경계가 모호하다. 둘째, 모델 입력 정규화 과정에서 이미지 캡션과 메타데이터가 시스템 프롬프트와 동급으로 취급되는 경우가 있어 인젝션 문장이 정책보다 우선될 수 있다. 이러한 구조적 요인이 결합되어 이미지 기반 우회가 가능해지는 것으로 보인다.
비밀 유출 자동화 메커니즘
Ghostcommit은 단순히 모델을 헷갈리게 만드는 데 그치지 않고, 비밀 유출까지 자동화한다. 공격자가 이미지 안에 심은 지시는 모델이 저장소의 .env 파일을 읽고, 그 안의 키 값을 본문 코드에 일련의 숫자로 분산 기록하도록 지시한다.
.env 파일 접근과 데이터 추출 과정
AI 코딩 에이전트는 코드 변경 작업 중 컨텍스트 확보를 위해 동일 저장소의 파일을 자유롭게 조회할 수 있다. 이 권한을 악용하면 .env에 보관된 API 키, 데이터베이스 접속 정보, 클라우드 자격 증명 등을 그대로 읽어 들일 수 있다. 읽어들인 값은 코드 diff에 자연스러운 주석이나 문자열 리터럴처럼 녹아들어, 시각 리뷰에서 단시간에 이상치로 식별되지 않을 수 있다.
숫자 나열 형태로 위장하는 정보 은닉 기법
PoC는 비밀 값을 평문 문자열 대신 숫자 나열 형태로 변환하여 코드에 삽입한다. 예컨대 API 키의 각 바이트를 정수 시퀀스로 매핑해 둔 배열에 저장하고, 이를 더미 변수에 할당하는 식이다. 이렇게 하면 diff 본문만 보면 단순한 데이터 초기화처럼 보이지만, 공격자가 따로 마련한 디코더 스크립트를 거치면 원래 비밀 값이 복원된다. 인적 리뷰어의 시선과 단순 텍스트 grep 양쪽을 동시에 회피하기 위한 이중 위장으로 분석된다.
대응 방안과 향후 보안 전망
멀티모달 인젝션은 텍스트 인젝션의 확장으로 보는 견해가 강하지만, 대응은 이미지 캡션 검증, 시스템 프롬프트 격리, 도구 호출 권한 분리 등 다층적이어야 효과적이다. 단일 룰 추가만으로는 유사 변종 공격을 모두 막기 어려울 수 있다.
즉시 적용 가능한 탐지 룰과 정책
실무에서 우선 도입할 수 있는 항목은 다음과 같다.
- PR 첨부 이미지의 메타데이터 영역에서 “ignore previous”, “system”, “assistant” 같은 키워드 출현 여부를 점검하는 정적 룰 도입 검토
- 코딩 에이전트의 .env 같은 비밀 파일 조회 시도를 감사 로그로 남기고 임계치 초과 시 PR 자동 차단
- 이미지 캡션과 본문 코드에 정수 시퀀스 패턴이 동시에 등장하는 경우 보안팀 알림 발행
- 사람 승인 없이 동작하는 자동화 에이전트 범위를 읽기 전용으로 제한하고 쓰기 작업은 명시적 토큰 요구
AI 에이전트 가드레일 설계 방향
장기적으로는 모델 입력 단계에서 이미지 캡션을 신뢰 경계 밖 데이터로 취급하고, 도구 호출 권한을 최소 권한 원칙에 따라 세분화하는 설계가 필요하다. 또한 비밀 값과 같이 민감한 출력은 패턴 매칭과 의미 분석을 결합한 출력 필터를 거쳐야 한다. Bleeping Computer가 강조한 것처럼, 자동화 파이프라인의 신뢰 사슬을 재설계하지 않는다면 멀티모달 인젝션은 LLM 보안을 위협하는 새로운 위협 표면으로 지속될 것으로 보인다.
핵심 정리
- Ghostcommit은 이미지 기반 멀티모달 프롬프트 인젝션으로 AI 코드 리뷰 단계를 우회한다.
- 주요 피해는 .env 비밀 값의 자동 유출이며, 코드 본문 내 숫자 나열 형태로 은닉된다.
- 대응은 이미지 메타데이터 검증, 비밀 파일 접근 감사, 자동화 에이전트 권한 최소화의 조합이 필요하다.
- AI 에이전트 가드레일은 입력 신뢰 경계 재설계와 출력 필터 고도화 방향으로 발전해야 한다.
참고 자료: Bleeping Computer 원문 기사, OWASP Top 10 for LLM Applications – Prompt Injection