排查GCP Python Cloud Function的Go依赖CVE漏洞:COS版本与镜像问题
GCP Python Cloud Function 关联Go标准库CVE-2024-24790排查与修复方案
核心问题解答
1. 查看特定Cloud Function使用的COS版本
- 使用gcloud命令获取容器镜像地址:
gcloud functions describe YOUR_FUNCTION_NAME --region YOUR_REGION --format="value(environment.containerImage)" - 拉取镜像并进入容器,查看OS版本:
docker pull IMAGE_URL docker run -it IMAGE_URL /bin/bash cat /etc/os-release/etc/os-release中的VERSION字段即为COS版本。也可通过Cloud Functions控制台的「环境详情」获取镜像地址后,按上述步骤查询。
2. 强制部署使用最新容器镜像
- 重新部署时禁用缓存:
gcloud functions deploy YOUR_FUNCTION_NAME --region YOUR_REGION --no-cache - 避免使用固定镜像哈希部署,改用官方runtime标签(如
--runtime python310),GCP会自动为该runtime提供带最新安全补丁的镜像;同时检查CI/CD流程是否缓存了旧镜像,清理相关缓存后重新部署。
子问题解答
能否通过gcloud deploy指定COS版本?
不能直接指定。Cloud Functions的runtime镜像由GCP官方维护,COS版本是镜像的内置组成部分,GCP会在安全更新时自动升级。用户仅能选择对应的runtime版本(如python310、python311),GCP会确保该runtime镜像包含最新的安全修复。
如何关联CF Runtime镜像与COS版本?
- 查看GCP官方Runtime发布说明,其中会记录每个runtime版本对应的底层COS版本;
- 拉取对应runtime镜像后,进入容器执行
cat /etc/os-release获取COS版本,建立关联; - 查阅GCP Cloud Functions安全公告,公告中会说明修复特定CVE的runtime镜像对应的COS版本信息。
基于Ubuntu的容器中如何查找Go的安装情况?
- 直接检查Go版本:
go version - 查看环境变量中是否包含Go路径:
echo $PATH - 查找Go安装目录:
find / -name go -type d - 若Go是静态链接进系统二进制文件(如容器运行时组件),可通过字符串匹配查找版本:
strings /usr/bin/[TARGET_BINARY] | grep go1.
额外困惑解答
- 本地拉取镜像未找到Go:Cloud Functions的实际运行环境是COS虚拟机+容器,部分Go组件存在于COS主机系统而非容器内部,因此本地容器镜像中可能无Go相关文件。
- 重新部署后漏洞仍存在:可能是GCP镜像更新存在延迟,或部署时仍使用缓存镜像,建议等待1-2小时后用
--no-cache参数重新部署;同时确认GCP官方是否已发布修复该CVE的runtime镜像。 - Python3.10漏洞报告显示“Unsupported OS”:这是安全扫描器无法识别容器内OS环境导致的误提示,无需过度关注,重点通过GCP安全公告确认对应runtime是否已修复CVE-2024-24790即可。
内容的提问来源于stack exchange,提问作者Marina
相关产品推荐
相关产品推荐

