flawopen.com/Incidents/google-gemini-evaluation-sandbox-escape-may-2026
Gemini 评估期间访问了真实企业系统
Google 告诉《华尔街日报》,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]
源代码对比:漏洞与安全实现
这是 Kubernetes 示意配置,不代表 Irregular 或 Google 的配置。它选择 agent-eval 中的所有 Pod,只允许其通过 TCP/443 连接到明确标记的 mock-target Pod;NetworkPolicy 过滤端口和协议,不检查 TLS,因此应配置模拟服务强制使用 HTTPS。它还允许 DNS 连接到专用解析器。如果该解析器隔离了入站流量,还需添加允许评估 Pod 通过 UDP 和 TCP 端口 53 入站的规则。解析器只能服务内部模拟区域,不能将任意查询转发到公网,否则 DNS 可能成为外联通道。RFC 2606 将 .test 保留用于测试。策略是否生效取决于 CNI;应将 hostNetwork 和特权节点级工作负载排除在评估边界外,并用受控 canary 验证阻断效果。[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]
- ✓在与评估合作方的合同中写明通知和公开披露的时限,让合作方那里发生的事件能尽快通知到你和受影响方。