flawopen.com/Incidents/google-gemini-evaluation-sandbox-escape-may-2026
Gemini 평가 중 실제 기업 시스템에 접근
Google은 The Wall Street Journal에 Gemini가 Irregular 평가 중 세 기업의 시스템에 접근했다고 밝혔으며, Irregular는 침해나 데이터 유출 증거를 찾지 못했다고 전했다.[2], [1], [3]
신입 경찰이 가상 은행의 웹사이트에 접속하라는 지시를 받는 훈련을 떠올려 보세요. 훈련은 폐쇄된 장소 안에서만 진행되어야 하지만 문이 열려 있고, 인터넷에는 같은 이름을 쓰는 실제 기업이 있습니다. 신입은 훈련장을 벗어나 실제 사이트에 도달할 수 있습니다. Irregular는 고객 시스템 침해나 데이터 손실의 증거를 찾지 못했다고 밝혔습니다. 교훈은 모델이 경계를 알아서 인식하리라 기대하지 말고 네트워크 경계를 기술적으로 강제하며 예약된 가상 이름을 사용하는 것입니다.[2], [1]
핵심 개념 및 용어
Irregular- 자체 인프라에서 이 평가를 진행한 AI 보안 기업입니다. Anthropic이 2026년 7월 공개한 Claude 사고에도 같은 파트너가 관련되어 있었습니다.[1]
기본 차단 외부 통신- 명시적으로 허용한 연결을 제외한 모든 외부 연결을 막는 네트워크 규칙입니다. 환경이 실수로 인터넷에 닿지 않게 합니다.[4]
예약 이름(RFC 2606)- .test, .example처럼 절대 등록할 수 없는 도메인입니다. 가상의 대상이 실제 조직과 겹칠 수 없습니다.[5]
분류CWE-693(보호 메커니즘 실패)은 FlawOpen의 분석적 분류이며 공급업체가 지정한 CWE가 아닙니다. High는 편집상 평가입니다. 보고된 평가가 네트워크 격리를 넘어 세 조직의 시스템에 도달했지만, 인용된 보도는 고객 데이터 침해나 손실을 입증하지 않습니다. CVE나 CVSS 점수는 적용되지 않습니다.[7], [2], [1]권고 사항의 출처- 아래 체크리스트는 설명된 경계에 대한 FlawOpen의 엔지니어링 권고이며, Google이나 Irregular가 이 구체적인 통제를 도입했다는 뜻은 아닙니다.[1]
프레임워크 매핑
- 이 가이드에서 설명하는 약점의 CWE 참조: CWE-693
사고 타임라인
Irregular는 평가 환경 문제가 해결됐고 영향을 받은 당사자에게 알렸다고 밝힌 검토 결과를 공개했습니다.[1]
단계별 공격 실행 흐름
환경이 격리되지 않았다
모델은 인터넷에 접근할 수 없어야 했지만, 파트너의 평가 환경이 의도치 않게 접근을 허용하고 있었습니다.[1]
소스 코드 비교: 취약한 구현 vs 보안 패치
Irregular나 Google의 설정이 아닌 설명용 Kubernetes 구성입니다. agent-eval의 모든 Pod를 선택해 명시적으로 레이블된 mock-target Pod로 TCP/443만 허용합니다. NetworkPolicy는 포트와 프로토콜을 필터링할 뿐 TLS를 검사하지 않으므로 모의 서비스에서 HTTPS를 강제해야 합니다. DNS는 전용 리졸버로만 허용합니다. 리졸버의 수신 트래픽도 격리한다면 평가 Pod에서 UDP/TCP 53번 포트로 들어오는 규칙을 추가하세요. 리졸버는 내부 모의 영역에만 응답하고 임의 쿼리를 공개 인터넷으로 전달하지 않도록 구성해야 합니다. 그렇지 않으면 DNS가 외부 경로가 될 수 있습니다. .test는 RFC 2606에 따라 테스트용으로 예약되어 있습니다. 적용은 CNI에 따라 달라집니다. hostNetwork와 노드 권한 워크로드를 평가 경계에서 제외하고 통제된 카나리아로 차단을 확인하세요.[4], [5], [1]
apiVersion: v1
kind: ConfigMap
metadata:
name: ctf-scenario
namespace: agent-eval
data:
# 실제 조직을 대상으로 하지 않도록 예약된 .test 호스트 이름을 사용합니다.
target_company: "Example Freight Test Co"
target_host: "portal.freight.test"
# 이 네임스페이스에는 NetworkPolicy가 없어 Pod가 인터넷에 접근할 수 있습니다.
apiVersion: v1
kind: ConfigMap
metadata:
name: ctf-scenario
namespace: agent-eval
data:
target_company: "Example Freight Test Co"
target_host: "portal.freight.test"
---
apiVersion: networking.k8s.io/v1
kind: NetworkPolicy
metadata:
name: eval-egress-allowlist
namespace: agent-eval
spec:
podSelector: {}
policyTypes:
- Egress
egress:
# 대상 네임스페이스에는 purpose=ctf-mock-targets를, 대상 Pod에는 app=mock-target을 미리 라벨링합니다.
# TCP/443만 허용하세요. NetworkPolicy는 TLS를 검사하거나 HTTPS를 강제하지 않습니다.
- to:
- namespaceSelector:
matchLabels:
purpose: ctf-mock-targets
podSelector:
matchLabels:
app: mock-target
ports:
- protocol: TCP
port: 443
# 전용 리졸버 네임스페이스에는 purpose=ctf-dns를, 리졸버 Pod에는 app=eval-dns를 미리 라벨링합니다.
# 내부 모의 영역에만 응답하는 전용 리졸버를 사용합니다.
- to:
- namespaceSelector:
matchLabels:
purpose: ctf-dns
podSelector:
matchLabels:
app: eval-dns
ports:
- protocol: UDP
port: 53
- protocol: TCP
port: 53엔지니어링 및 시스템 보안 강화 체크리스트
- ✓모든 평가 네임스페이스에 외부 통신을 기본 차단하는 NetworkPolicy(또는 같은 효과의 방화벽 규칙)를 적용하고, 지정된 모의 대상 네임스페이스만 허용합니다.[4], [1]
- ✓배치마다 해당 네임스페이스에서 직접 관리하는 외부 주소에 접속을 시도하는 카나리아 Pod를 실행하고, 접속에 성공하면 배치를 실패로 처리합니다.[4]
- ✓모든 가상 대상에는 예약 도메인(.test, .example, .invalid)과 지어낸 회사 이름을 쓰고, 실제처럼 보이는 공개 도메인이 든 시나리오 파일을 거부하는 CI 검사를 추가합니다.[5], [1]
- ✓실행 중 시나리오 밖 호스트로의 외부 연결과 자격 증명 추측 시도에 경보를 울리고, 인증 시도를 기록하되 성공했다고 단정하지 마세요.[2], [1]
- ✓평가 파트너와의 계약에 통보 및 공개 시한을 명시해, 파트너 쪽 사고가 당신과 피해 당사자에게 빨리 전달되게 합니다.