본문 바로가기

IT & AI

Grok Build CLI, 읽지 않은 저장소까지 전송했어요

728x90

Grok Build CLI, 읽지 않은 저장소까지 전송했어요

Grok Build CLI 데이터 전송 분석 썸네일
Grok Build CLI 데이터 전송 분석 썸네일

AI 코딩 도구에 저장소 접근 권한을 주면 모델이 읽은 파일만 서버로 갈 거라고 생각하기 쉬워요. Grok Build CLI 0.2.93의 통신을 직접 캡처한 분석에서는 모델 요청과 별도로 저장소 전체를 묶어 올리는 경로가 관찰됐어요. 비밀값과 Git 이력까지 포함될 수 있어 도입 전에 전송 범위를 따로 확인해야 해요.

728x90

핵심 요약

확인된 항목관찰 결과실무에서 볼 부분
모델 요청도구가 읽은 파일과 `.env`의 테스트 비밀값이 마스킹 없이 포함됐어요실제 비밀값이 있는 작업 폴더를 그대로 열지 않는 편이 안전해요
저장소 업로드읽지 말라고 지정한 파일과 Git 이력이 담긴 bundle이 별도 저장 경로로 전송됐어요파일 열람 범위와 저장소 업로드 범위를 같은 것으로 보면 안 돼요
전송량12GB 실험에서 모델 요청은 192KB, 저장 경로는 중단 시점까지 5.10GiB였어요프록시와 송신 로그로 대용량 별도 전송을 확인할 수 있어요
설정 효과분석자가 모델 개선 옵션을 꺼도 업로드 관련 설정이 활성 상태로 남았다고 기록했어요화면의 학습 동의와 진단·세션 저장 설정을 따로 점검해야 해요

1. 모델에 읽힌 파일과 저장소 전체가 서로 다른 경로로 전송됐어요

분석자는 macOS에서 `mitmproxy`를 사용해 Grok Build CLI 0.2.93의 HTTPS 요청을 기록했어요. 도구가 읽은 파일 내용은 `/v1/responses` 요청에 들어갔고, 테스트용 `.env`에 넣은 가짜 비밀값도 가려지지 않았어요. 같은 값은 `/v1/storage`로 전송된 `session_state`에서도 발견됐어요. 저장 응답은 HTTP 200이었어요. 1

더 큰 문제는 에이전트가 실제로 읽은 파일과 별개로 저장소 전체가 전송됐다는 점이에요. 분석자는 파일을 읽지 말라는 지시를 준 뒤 캡처된 Git bundle을 다시 복제했어요. 그 안에서 열지 말라고 지정한 canary 파일의 원문과 Git 이력을 복구했어요. 모델 대화에 필요한 문맥 전송과 작업공간 보관이 별도 채널로 움직였다는 증거예요. 2

12GB 규모의 무작위 파일 저장소에서도 차이가 컸어요. 캡처를 중단할 때까지 `/v1/responses`의 누적 요청량은 192KB였지만 `/v1/storage`는 5.10GiB에 이르렀어요. 약 27,800배 차이예요. 저장 요청은 모두 HTTP 200을 받았고, 분석자는 이 전송이 모델이 읽은 파일만으로 설명되기 어렵다고 봤어요.

이 분석이 확인하지 못한 것도 있어요

이 실험은 데이터가 전송되고 서버에서 수락됐다는 사실을 보여줘요. 해당 데이터가 모델 학습에 쓰였는지는 확인하지 못했어요. 모든 계정 유형과 설정 조합을 시험한 것도 아니에요. `.gitignore` 파일의 처리 방식도 별도 검증이 필요해요. 결과는 2026년 7월에 배포된 0.2.93 버전과 일반 소비자 계정 환경에 한정해서 읽어야 해요.

왜 중요한가요

AI 코딩 CLI는 소스코드, 설정 파일, Git 이력에 넓게 접근해요. 화면에서 모델 개선 동의를 껐더라도 세션 추적이나 저장소 업로드가 함께 꺼진다고 단정하면 안 돼요. 제품 설정에서 학습, 진단, 세션 보관, 작업공간 업로드가 각각 어떻게 구분되는지 확인해야 해요. 이번 분석에서도 두 전송 경로가 따로 관찰됐어요. 2

팀에서 이런 도구를 시험할 때는 실제 고객 데이터와 운영 비밀값이 없는 격리 저장소를 먼저 쓰는 편이 좋아요. `.env`를 저장소 밖으로 옮기고 짧은 수명의 테스트 자격 증명을 사용하면 노출 범위를 줄일 수 있어요. 네트워크 프록시나 방화벽 로그로 목적지와 전송량을 살펴보면 문서에 적힌 설명과 실제 동작도 비교할 수 있어요.

기업 환경이라면 공급사에 저장 범위, 보관 기간, 삭제 방법, 리전, 하위 처리업체를 문서로 확인해야 해요. 저장소 전체 전송이 업무상 필요하지 않다면 해당 기능을 끄는 방법이나 조직 단위 정책이 있는지도 물어봐야 해요. 비밀 탐지와 송신 제어를 함께 두면 설정 실수 하나가 곧바로 코드와 자격 증명 유출로 이어지는 상황을 줄일 수 있어요.

참고 자료

  1. xAI Grok Build CLI가 xAI로 전송하는 데이터: 와이어 수준 분석 — GeekNews
  2. What xAI's Grok Build CLI Actually Sends to xAI: A Wire-Level Analysis — cereblab, GitHub Gist
728x90