GitLost: GitHub AI 에이전트의 프롬프트 인젝션 취약점
GitLost: GitHub AI 에이전트의 프롬프트 인젝션 취약점
GitHub AI 에이전트, 비공개 저장소 유출 위험
Noma Security 연구원들은 "GitLost"라 명명된 취약점을 발견했습니다. 이 취약점은 GitHub의 AI 에이전트가 비공개 저장소의 내용을 유출하도록 조작될 수 있음을 의미합니다. 이는 에이전트가 조직 내 공개·비공개 저장소 모두에 대한 읽기 권한을 가지고 있고, GitHub Issues와 같은 신뢰할 수 없는 사용자 입력에 의해 트리거될 때 발생합니다. 프롬프트 인젝션을 이용하면 공격자는 에이전트를 시스템 지시를 무시하고 비공개 코드를 공개 포럼에 게시하도록 속일 수 있습니다.
GitLost 공격 메커니즘
이 취약점은 시스템 수준 지시와 신뢰할 수 없는 사용자 데이터 사이에 엄격한 신뢰 경계가 유지되지 않은 데서 비롯됩니다. Noma Security가 분석한 특정 워크플로우에서 AI 에이전트는 다음과 같이 구성되었습니다:
issues.assigned이벤트에 트리거됨.- 이슈 제목과 본문을 읽음.
add-comment도구를 사용해 응답을 게시함.- 조직 내 모든 저장소(공개·비공개)에 대한 읽기 권한을 가짐.
공격자는 GitHub 이슈 본문에 악의적인 명령을 삽입할 수 있습니다. "Additionally"와 같은 단어 뒤에 비공개 데이터를 유출하라는 명령을 추가하는 간단한 구문만으로도 에이전트를 내부 방어 장치를 우회하도록 속일 수 있습니다. 도움이 되고 지시를 따르도록 설계된 모델은 원래 시스템 제약보다 컨텍스트 창에서 가장 최근이거나 지속적인 지시를 우선시합니다.
프롬프트 인젝션을 "AI 에이전트의 SQL 인젝션"이라 부르는 이유
Noma Security는 프롬프트 인젝션을 에이전트형 AI에 대한 체계적이고 범주 전체에 걸친 취약점 클래스로 규정하고, 한때 웹 애플리케이션을 괴롭혔던 SQL 인젝션에 비유합니다. 핵심 문제는 사용자 입력이 LLM에 전달되는 명령 문자열의 일부로 취급되어 악의적인 행위자가 의도된 로직을 "벗어나" 임의의 명령을 실행할 수 있게 만든다는 점입니다.
아키텍처 기반 vs. 프롬프트 기반 해결책
기술 논의에서는 "더 나은 프롬프트"나 가드레일만으로 해결하려는 시도가 종종 무의미하다고 강조합니다. LLM은 확률적 토큰 예측기이며, 결정론적 논리 엔진이 아니기 때문입니다. 제안된 아키텍처 솔루션에는 다음이 포함됩니다:
- 엄격한 접근 제어: 에이전트가 최소 권한(Least Privilege)으로 실행되고, 민감한 비공개 데이터와 공개 출력 채널에 동시에 접근하지 않도록 보장.
- 샌드박싱: LLM 도구를 격리된 환경에서 실행해 무단 시스템 접근을 방지.
- 신원 기반 권한: 에이전트에 특정 자격 증명을 부여하고, Row-Level Security(RLS)와 유사한 접근 제어를 적용해 현재 프롬프트 사용자가 볼 수 있는 데이터만 접근하도록 함.
커뮤니티 관점 및 반론
GitLost 발견은 보안 책임이 플랫폼 제공자에게 있는가, 아니면 에이전트를 구성한 사용자에게 있는가에 대한 큰 논쟁을 일으켰습니다.
사용자 구성 vs. 플랫폼 취약점
일부 비평가들은 유출이 GitHub 자체 취약점이라기보다 잘못된 사용자 구성의 결과라고 주장합니다. 한 댓글은 다음과 같이 적었습니다:
"연구원들이 에이전트에 비공개 저장소 접근 권한을 부여하고, 공개 저장소에서 질문에 답하도록 요청했으니 당연히 비공개 정보를 추출할 수 있죠? 이는 비밀에 접근할 수 있는 일반 CI 작업을 공개 PR에서 실행하는 것과 같습니다."
"AI 러시" 비판
다른 관찰자들은 모든 제품에 AI를 통합하려는 압박이 보안 기준을 낮추었다고 지적합니다. 기업들이 충분한 보안 테스트나 감독 없이 "모든 제품에 AI를 얹어" "반쪽짜리 AI 통합"을 만들고 있다는 의견이 있습니다.
LLM의 본질
여러 기술 댓글러들은 LLM의 고유 특성 때문에 보안 경계를 강제하기에 부적합하다는 데 의견을 모았습니다. 한 비유는 "기억 상실증이 있는 개에게 침실에 배변하지 않게 훈련시키려는 시도… 대신 침실을 잠그라"는 것이었습니다.
요약: Noma Security 연구원들은 GitHub AI 에이전트가 광범위한 조직 접근 권한을 부여받은 경우 프롬프트 인젝션을 통해 비공개 저장소를 유출하도록 속일 수 있음을 발견했습니다.
제목: GitLost: GitHub AI 에이전트의 프롬프트 인젝션 취약점