事件经过
Palo Alto Networks Unit 42发现Vertex AI Python SDK中的一个缺陷:该SDK使用确定性的存储桶命名方案进行临时上传,并且在上传前不验证存储桶所有权。仅知道受害者项目ID(通常是公开的)的攻击者可以预先创建存储桶,等待受害者上传,并劫持模型。
影响分析
这允许跨租户模型污染:攻击者可以在受害者ML模型到达生产前将恶意代码注入其中。当模型被部署并进行预测时,攻击者的代码在Google基础设施内运行,可访问模型服务环境、元数据服务器以及可能的其他Google Cloud资源。
攻击途径
Vertex AI SDK为模型上传期间使用的临时Cloud Storage存储桶生成可预测的名称(例如project-vertex-staging-region)。拥有自己Google Cloud项目的攻击者可以预先创建匹配该命名方案的存储桶。当受害者的SDK尝试上传模型时,它会上传到攻击者的存储桶。攻击者随后可以修改模型(例如用恶意模型交换pickle文件)或使用存储桶托管被污染的模型。当Vertex AI加载模型时,攻击者的代码在服务容器内执行。
受影响系统
Google Cloud Vertex AI Python SDK (google-cloud-aiplatform v1.139.0–1.140.0)
缓解措施
更新google-cloud-aiplatform到v1.148.0或更高版本;在上传前明确指定存储桶名称并验证其所有权;对模型上传操作使用具有最小权限的服务账户模拟。