关于runc漏洞CVE-2019-5736的修复公告

简介: 漏洞详情: https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2019-5736 Docker、containerd或者其他基于runc的容器运行时存在安全漏洞,攻击者可以通过特定的容器镜像或者exec操作可以获取到宿主机的runc执行时的文件句柄并修改掉runc的二进制文件,从而获取到宿主机的root执行权限。

漏洞详情:

Docker、containerd或者其他基于runc的容器运行时存在安全漏洞,攻击者可以通过特定的容器镜像或者exec操作可以获取到宿主机的runc执行时的文件句柄并修改掉runc的二进制文件,从而获取到宿主机的root执行权限。

详见 https: //cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2019-5736

影响范围:

对于阿里云容器服务来说,影响范围:

  • Docker版本 < 18.09.2 的所有Docker Swarm集群和Kubernetes集群(不包含Serverless Kubernetes集群)

对于用户自建Docker/Kubernetes环境:

  • Docker版本 < 18.09.2 或者使用 runc版本 <= 1.0-rc6的环境,请自行根据厂商建议进行修复。

解决办法:

  • 方案一:新建k8s 1.11或1.12集群。容器服务新创建的1.11或1.12版本的Kubernetes集群已经包含修复该漏洞的Docker版本。
  • 方案二:升级Docker。升级已有集群的Docker到18.09.2或以上版本。该方案会导致容器和业务中断。
  • 方案三:仅升级runc(针对Docker版本17.06)。为避免升级Docker引擎造成的业务中断,可以按照下文的步骤文档,逐一升级集群节点上的runc二进制。

针对方案三中Docker 17.06版本的步骤文档:

# 找到docker-runc的位置,一般情况下在: /usr/bin/docker-runc
which docker-runc

# 备份原有的runc
mv /usr/bin/docker-runc /usr/bin/docker-runc.orig.$(date -Iseconds)

# 下载修复的runc
curl -o /usr/bin/docker-runc -sSL https://acs-public-mirror.oss-cn-hangzhou.aliyuncs.com/runc/docker-runc-17.06-amd64

# 设置它的可执行权限
chmod +x /usr/bin/docker-runc

# 测试runc可以正常工作
docker-runc -v
# runc version 1.0.0-rc3
# commit: fc48a25bde6fb041aae0977111ad8141ff396438
# spec: 1.0.0-rc5
docker run -it --rm ubuntu echo OK


# 如果是Kubernetes的GPU节点,还需要额外安装下nvidia-runtime
# 找到nvidia-container-runtime的位置,一般情况下在: /usr/bin/nvidia-container-runtime
which nvidia-container-runtime

# 备份原有的nvidia-container-runtime
mv /usr/bin/nvidia-container-runtime /usr/bin/nvidia-container-runtime.orig.$(date -Iseconds)

# 下载修复的nvidia-container-runtime
curl -o /usr/bin/nvidia-container-runtime -sSL https://acs-public-mirror.oss-cn-hangzhou.aliyuncs.com/runc/nvidia-container-runtime-17.06-amd64

# 设置它的可执行权限
chmod +x /usr/bin/nvidia-container-runtime

# 测试nvidia-container-runtime可以正常工作
nvidia-container-runtime -v
#  runc version 1.0.0-rc3
#  commit: fc48a25bde6fb041aae0977111ad8141ff396438-dirty
#  spec: 1.0.0-rc5

docker run -it --rm -e NVIDIA_VISIBLE_DEVICES=all ubuntu nvidia-smi -L
#  GPU 0: Tesla P100-PCIE-16GB (UUID: GPU-122e199c-9aa6-5063-0fd2-da009017e6dc)
# 本测试运行在GPU P100机型中,不同GPU型号会有区别。
相关实践学习
在云上部署ChatGLM2-6B大模型(GPU版)
ChatGLM2-6B是由智谱AI及清华KEG实验室于2023年6月发布的中英双语对话开源大模型。通过本实验,可以学习如何配置AIGC开发环境,如何部署ChatGLM2-6B大模型。
目录
相关文章
|
API 网络安全 数据安全/隐私保护
|
安全 JavaScript Java
SpringBoot实现定时发送邮件
SpringBoot实现定时发送邮件
424 0
|
NoSQL 测试技术 Redis
Redis学习笔记之集群重启和遇到的坑
Redis学习笔记之集群重启和遇到的坑
4682 0
Redis学习笔记之集群重启和遇到的坑
|
机器学习/深度学习 人工智能 自然语言处理
人工智能应用领域有哪些
本文全面探讨了人工智能(AI)的应用领域和技术核心,涵盖医疗、交通、金融、教育、制造、零售等多个行业,并分析了AI技术的局限性及规避策略。同时,介绍了生成式人工智能认证项目的意义与展望。尽管AI发展面临数据依赖和算法可解释性等问题,但通过优化策略和经验验证,可推动其健康发展。未来,AI将在更多领域发挥重要作用,助力社会进步。
|
应用服务中间件 容器
【JavaWeb】知识总结Ⅹ(HttpServletRequest, HttpServletResponse)
请求行信息:可以使用getMethod()方法获取请求方法(如GET、POST等),使用getRequestURI()方法获取请求的URI(统一资源标识符),使用getProtocol()方法获取请求使用的协议(如HTTP/1.1)。 请求头信息:可以使用getHeader(String name)方法获取指定名称的请求头的值,使用getHeaderNames()方法获取所有请求头的名称的枚举。 请求参数:可以使用getParameter(String name)方法获取指定名称的请求参数的值,使用getParameterNames()方法获取所有请求参数的名称的枚举。
|
人工智能 缓存 自然语言处理
构建智能天气助手:基于大模型API与工具函数的调用实践
在人工智能快速发展的今天,大语言模型(LLM)已经成为构建智能应用的重要基础设施。本文将介绍如何利用大模型API和工具函数集成,构建一个能够理解自然语言并提供精准天气信息的智能助手。
5010 11
|
存储 SQL 关系型数据库
MySQL一张表最多能存多少数据?
MySQL一张表最多能存多少数据?
MySQL一张表最多能存多少数据?
|
10月前
|
存储 人工智能 Kubernetes
将CPFS智算版从Hostpath挂载迁移至PVC挂载
CPFS智算版是阿里云推出的高性能存储系统,适用于AI场景。早期通过Hostpath挂载,现支持PVC/PV方式,提升应用鲁棒性和数据持久性。本文介绍迁移背景、方案及操作步骤,助您顺利升级存储使用方式。
663 0
|
Web App开发 JavaScript 数据可视化
vue3扩展echart封装为组件库-快速复用
vue3扩展echart封装为组件库-快速复用
1067 7
|
Linux C语言 Python
perf_event_open 学习 —— 通过read的方式读取硬件技术器
perf_event_open 学习 —— 通过read的方式读取硬件技术器