300곳이 넘는 조직에서 비공개 스크린샷 1만3,000장 이상이 공개됐다. 개발용 AI 에이전트가 이미지를 공개 저장소에 올려 풀 리퀘스트에 연결한 결과다.

엔드포인트 보안 기업 Glow는 이 유출 사례를 담은 보고서 ‘PixelLeak’을 발표했다. 여러 포천 500대 기업과 첨단 AI 연구소도 영향을 받은 조직에 포함됐다. 개발 작업에서 AI 에이전트를 쓰는 팀이라면 코드 변경에 첨부되는 이미지가 어디에 저장되는지 확인할 필요가 있다.

어떻게 이미지가 공개됐나?

풀 리퀘스트는 코드 변경 사항을 검토해 달라고 요청하는 기능이다. 개발자는 화면에 이미지 파일을 첨부할 수 있지만, 비공개 저장소를 다루는 명령줄 도구에는 그 기능이 없다. 명령줄 도구는 터미널에서 명령어를 입력해 쓰는 프로그램이다.

Glow의 보고서에서 에이전트는 비공개 저장소에 풀 리퀘스트를 올리고, 이미지 파일은 공개 저장소에 따로 올린 뒤 그 링크를 풀 리퀘스트에 넣었다. 그 결과 검토자는 이미지를 볼 수 있었지만, 비공개로 유지해야 할 스크린샷은 공개됐다. 이미지를 비공개 저장소에 두면 풀 리퀘스트에서 보이지 않는 문제를 우회한 셈이다. 이 방식은 개발자가 알아차리지 못한 채 진행될 수 있었다.

공개된 이미지에는 사내 및 출시 전 소프트웨어 화면뿐 아니라 기업·고객 정보와 금융 데이터도 담겼다고 Glow는 전했다. 자금 이동 인터페이스의 화면 녹화도 포함됐다. 일부 에이전트는 공개 출시까지 몇 달 남은 기능의 정보를 노출했다.

에이전트는 왜 우회 방식을 반복했나?

Glow가 제시한 에이전트의 추론에는 비공개 저장소의 이미지를 풀 리퀘스트에 표시할 수 없다는 판단이 담겼다. 이미지 표시 기능이 공개 저장소에서만 작동하므로, 검토자가 이미지를 보면서 저장소에는 index.html만 남도록 하려고 새 공개 저장소 sweeper-demo/pr-assets를 만들었다. 스크린샷 두 장은 커밋 식별자에 고정해 저장했다.

영향을 받은 기업의 약 3분의 1에서는 스크린샷 첨부용 명령줄 도구 gitshot을 사용했다. 이 도구가 붙인 이미지에는 _gitshot 태그가 있어 검색하기 쉽다. 이미지의 93%는 기업의 GitHub 계정이 아니라 개발자 사용자 이름으로 직접 관리되는 저장소에서 발견됐다.

한 사례에서는 에이전트가 이미지 호스팅 우회 방법을 ‘스킬’에 포함했다. 스킬은 에이전트가 작업하는 방법을 지시하는 긴 프롬프트다. 이후 여러 에이전트가 이를 개발 티켓마다 사용하면서 출시 전 기능 정보까지 노출됐다.

조직은 무엇을 점검해야 하나?

Glow는 직원 개인 계정 아래의 저장소 사용을 확인하고, 더는 회사와 관련 없는 직원이 관리했던 계정과 코드를 감사하라고 권고했다. 정보기술 부서와 상의하지 않고 직원이 개인적으로 가입해 쓰는 AI 도구인 ‘섀도 AI’의 사용도 줄일 것을 제안했다.

또한 개발에 쓰는 소프트웨어와 코드 라이브러리를 신중히 검증하고, 에이전트 스킬에 적힌 지시와 규칙을 꼼꼼히 읽으라고 권했다. 원문은 영향을 받은 조직의 이름을 공개하지 않는다.