# Gemini의 Python 샌드박스를 해킹하여 소스 코드를 유출(일부)

> Clean Markdown view of GeekNews topic #20021. Use the original source for factual precision when an external source URL is present.

## Metadata

- GeekNews HTML: [https://news.hada.io/topic?id=20021](https://news.hada.io/topic?id=20021)
- GeekNews Markdown: [https://news.hada.io/topic/20021.md](https://news.hada.io/topic/20021.md)
- Type: GN+
- Author: [neo](https://news.hada.io/@neo)
- Published: 2025-03-29T09:43:50+09:00
- Updated: 2025-03-29T09:43:50+09:00
- Original source: [landh.tech](https://www.landh.tech/blog/20250327-we-hacked-gemini-source-code/)
- Points: 2
- Comments: 1

## Topic Body

- Google은 **AI 보안** 강화를 위해 사전 **red-teaming** 방식의 bugSWAT 이벤트를 개최하며, 연구자들에게 자사 AI 시스템을 철저히 테스트할 기회를 제공함  
- 2023년 $50,000을 수상했던 팀이, 이번에도 Gemini의 새로운 취약점을 발견해 ‘**Most Valuable Hacker(MVH)**’ 타이틀을 수상함  
- 해커 팀은 Google로부터 **새로운 Gemini** 프리뷰 기능에 대한 접근 권한과 문서를 받아 보안 관점에서 기능을 테스트함  
  - 간단한 프롬프트로 Python 코드를 요청하자 “Run in Sandbox” 버튼이 제공됨  
  - Gemini의 샌드박스 환경은 Google의 gVisor와 GRTE 기반으로 설계된 안전한 Python 실행 환경임  
- gVisor는 Google이 만든 사용자 공간 커널로, 시스템 호출을 가로채어 보안을 강화하는 기술임  
  - 샌드박스 환경은 완전히 격리되어 있으며, 탈출은 매우 어려움  
  - 하지만 샌드박스 내부에서 데이터 유출이 가능한 경우가 있음  
- 샌드박스가 `os` 라이브러리를 제공함을 발견하고, 파일 시스템을 탐색할 수 있는 Python 코드를 작성함  
  - `/usr/bin/entry/entry_point` 라는 579MB 크기의 바이너리 파일을 발견  
- 이진 파일을 base64로 직접 출력하면 샌드박스가 다운되므로, 10MB 단위로 분할하여 출력  
  - `Caido`라는 툴을 이용해 자동화된 방식으로 모든 청크를 수집하고 로컬에서 복원  
  - `file`, `strings`, `binwalk` 명령어를 사용해 분석한 결과 내부 구조와 Google의 내부 경로가 노출됨  
- binwalk 분석을 통해 내부 Python 소스 코드가 담긴 `google3` 디렉토리 발견  
  - `assistant` 디렉토리 내에는 Gemini가 Google 서비스(YouTube, Flights 등)와 상호작용하는 RPC 관련 코드 포함  
  - 특정 스크립트 덤프 방지용 문자열이 포함되어 있었으나, 해당 코드는 Google 보안팀이 사전 검토 후 공개 가능 판단함  
  
### 샌드박스의 메인 로직 분석  
  
- Google 서비스 호출은 Python 코드로 작성된 특정 클래스에서 구현되어 있음  
  - 예: `_set_reader_and_writer`, `run_tool` 등은 파일 디스크립터를 통해 Google 서비스와 통신함  
  - 바이너리 내부에서 protobuf 스키마를 기반으로 직접 메시지를 구성하고 도구 호출이 가능함  
- Google은 `ReAct` 논문을 바탕으로 Gemini가 복잡한 문제를 해결하기 위해 자체적으로 여러 번 프롬프트를 생성하고 계획을 세우도록 구현  
  - 예: 사용자가 “Toronto → New York 비행기 시간?” 물으면 Gemini는 여러 단계를 거쳐 도구를 선택하고 데이터를 검색  
  - 이 논리를 악용하여 더 높은 권한의 샌드박스를 생성하도록 프롬프트 인젝션을 시도  
- 일부 샌드박스는 Google의 확장 기능(RPC API 등)에 접근 가능  
  - 확장 기능은 항상 열려 있는 FD를 통해 호출되며, 이들을 악용하면 더 높은 수준의 시스템 접근 가능성 존재  
  - 특정 조건(Gemini가 계획을 짜는 단계 등)에 따라 고급 샌드박스에 접근 가능함을 확인  
  
### 민감한 proto 파일 유출  
  
- Protocol Buffer 파일(proto)은 시스템 간 데이터 정의에 사용되며, 민감한 시스템 구조 정보 포함  
  - `strings entry_point > stringsoutput.txt` 실행 후 “Dogfood” 문자열 검색으로 민감한 proto 경로 다수 노출  
  - 예: `privacy/data_governance/attributes/proto/classification.proto` → Google이 사용자 데이터를 어떻게 분류하는지를 정의한 파일  
- `cat stringsoutput.txt | grep '.proto' | grep 'security'` 명령으로 다수의 민감 보안 관련 proto 파일 리스트 노출  
  - 예: `security/thinmint/proto/core/thinmint_core.proto`, `security/credentials/proto/authenticator.proto` 등  
  
### 왜 이런 파일이 있었나?  
  
- Google 보안팀은 샌드박스 바이너리에 포함된 내용을 사전 승인했지만, 자동화된 빌드 파이프라인이 불필요한 보안 proto 파일을 추가  
- 이로 인해 고도의 민감한 내부 정의 파일들이 외부에 노출된 상황 발생  
- 해커들은 이 파일들이 Google의 기준에서 민감 정보로 취급된다는 점을 근거로 취약점으로 보고  
  
### 결론 및 회고  
  
- AI 시스템은 수많은 요소들이 상호작용하므로 예상치 못한 보안 문제가 자주 발생함  
- 샌드박스 하나도 내부 툴과 통신하고 권한이 동적으로 달라질 수 있어 정밀한 테스트가 필요함  
- Google의 보안팀과의 협업은 유익했고, 전체 경험은 도전적이면서도 흥미진진한 모험이었음

## Comments



### Comment 36491

- Author: neo
- Created: 2025-03-29T09:43:51+09:00
- Points: 1

###### [Hacker News 의견](https://news.ycombinator.com/item?id=43508418) 
- 내가 작업하는 시스템임. 질문이 있으면 언제든지 물어보길 바람. 모든 의견은 개인적인 것이며, 고용주의 의견을 대변하지 않음
- 멋진 글임. 큰 취약점은 아니지만, Google이 이를 중요하게 여긴다는 점에서 보안에 대한 의식이 높음을 알 수 있음
  - 회사의 특정 정책이 이를 매우 기밀로 간주한다고 언급했으므로 중요하게 여겨질 수 있지만, 명확한 취약점보다는 "기술적으로 취약점으로 간주"되는 느낌임
- ChatGPT Code Interpreter의 내부 소스 코드를 GitHub 저장소에 스크랩하는 비슷한 방법을 사용하고 있음
  - 주로 어떤 Python 패키지가 사용 가능한지(그리고 어떤 버전인지)를 추적하는 데 유용함
- 매우 기밀이라면 GitHub에 모두 올라와 있지는 않을 것 같음
- 해킹의 정의가 점점 느슨해지고 있음. 샌드박스가 제 역할을 하고 있으며 민감한 정보가 유출되지 않았음
- 바이너리에서 몇 개의 파일 이름을 추출하기 위해 내장된 "strings" 명령을 실행하는 것은 해킹/크래킹이라고 보기 어려움
  - 아이러니하게도, Gemini의 소스 코드를 얻는 것은 별로 가치가 없을 수 있음. 하지만 모델이 사전 학습된 코퍼스를 찾거나 접근했다면 흥미로웠을 것임
- Google이 상당히 안전하다는 것을 보여주는 점이 흥미로움. 대부분의 회사는 그렇게 잘하지 못할 것 같음
- 유출을 기대했지만, 그래도 멋진 발견과 분석임
  - 최근에 LLMs에 대한 프롬프트 인젝션 등의 문제가 얼마나 중요한지 깨달았음
  - 개인적인 LLMs에 관심이 많아서 이런 문제를 중요하게 여기지 않았음. 하지만 Operator와 Deep Research가 나오면서 이해하게 되었음
  - 개인 AI 에이전트가 인터넷 콘텐츠를 읽거나 이미지를 볼 때 제3자에 의해 프롬프트 인젝션에 취약할 수 있음
  - 개인 AI가 인터넷의 잘못된 정보를 읽고 해킹당할 수 있는 미래를 상상하는 것은 흥미로움
- 매우 흥미로운 기사임
  - Google이 사용자 데이터를 분류하는 내부 카테고리에 대한 파일임
  - 어떤 분류인지 알고 싶음. 예를 들어 "자폐증이 있음" 같은 것인지, "사용자의 전화번호임" 같은 것인지
- 샌드박스를 해킹했지만 아무것도 유출되지 않았음. 기사는 재미있음
