runC爆严重漏洞影响Kubernetes、Docker,阿里云修复runC漏洞的公告-程序员宅基地

runC 是 Docker,Kubernetes 等依赖容器的应用程序的底层容器运行时。此次爆出的严重安全漏洞可使攻击者以 root 身份在主机上执行任何命令。


容器的安全性一直是容器技术的一个短板。关于容器最大的安全隐患是攻击者可以使用恶意程序感染容器,更严重时可以攻击主机系统。


2019年2月11日,研究人员通过oss-security邮件列表

https://www.openwall.com/lists/oss-security/2019/02/11/2 

披露了runc容器逃逸漏洞的详情,根据OpenWall的规定EXP将在2019年2月18日公开。


2月12日,阿里云文档中心已经发布《修复runc漏洞CVE-2019-5736的公告》。

https://help.aliyun.com/document_detail/107320.html

阿里云容器服务已修复runc漏洞CVE-2019-5736。以下介绍该漏洞的影响范围及解决方法。


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


解决办法


  • 新建Kubernetes1.11或1.12集群。容器服务新创建的1.11或1.12版本的Kubernetes集群已经包含修复该漏洞的Docker版本。

  • 升级Docker。升级已有集群的Docker到18.09.2或以上版本。该方案会导致容器和业务中断。

  • 仅升级runc(针对Docker版本17.06)。为避免升级Docker引擎造成的业务中断,可以按照以下步骤,逐一升级集群节点上的runc二进制。


1.执行以下命令定位docker-runc。docker-runc通常位于/usr/bin/docker-runc路径下。

which docker-runc


2.执行以下命令备份原有的runc:

mv /usr/bin/docker-runc /usr/bin/docker-runc.orig.$(date -Iseconds)


3.执行以下命令下载修复的runc:

curl -o /usr/bin/docker-runc -sSL https://acs-public-mirror.oss-cn-hangzhou.aliyuncs.com/runc/docker-runc-17.06-amd64


4.执行以下命令设置docker-runc的可执行权限:

chmod +x /usr/bin/docker-runc


5.执行以下命令测试runc是否可以正常工作:

docker-runc -v

# runc version 1.0.0-rc3

#commit: fc48a25bde6fb041aae0977111ad8141ff396438

# spec: 1.0.0-rc5

docker run -it --rm ubuntu echo OK


6.如果是Kubernetes集群中的GPU节点,还需要完成以下步骤额外安装下nvidia-runtime。


a.执行以下命令定位nvidia-container-runtime。nvidia-container-runtime通常位于/usr/bin/nvidia-container-runtime路径下。

which nvidia-container-runtime


b.执行以下命令备份原有的nvidia-container-runtime:

mv 

/usr/bin/nvidia-container-runtime 

/usr/bin/nvidia-container-runtime.orig.$(date -Iseconds)


c.执行以下命令下载修复的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


d.执行以下命令设置nvidia-container-runtime的可执行权限:

chmod +x /usr/bin/nvidia-container-runtime


e.执行以下命令测试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型号会有区别。


点击左下角阅读原文查看更多!


640?wx_fmt=png

如果觉得本文还不错,点击好看一下!


版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/eo63y6pKI42Ilxr/article/details/87219784

智能推荐

使用Python Django开发web应用14 静态文件_在django项目开发中,不能像正常web开发一样通过 'imgs/bg.jpg' 访问本地静态文件-程序员宅基地

文章浏览阅读1.1k次。版本声明:转载请注明出处。未经允许,禁止商业用途。14 使用Python Django开发web应用 静态文件 讲师:刘一凡第一步:准备静态文件,制作图片OurBlog第二步:缺省配置下。静态文件放置在应用blog的static文件夹下。第三步:settings.py中修改为STATIC_URL = '/blog/static/'第四步:在template中引用图片..._在django项目开发中,不能像正常web开发一样通过 'imgs/bg.jpg' 访问本地静态文件

git 用命令下载代码到本地_命令行下载git-程序员宅基地

文章浏览阅读6.7w次,点赞11次,收藏56次。有的代码编辑工具里没有导入功能,可以用git命令导入第一步:创建一个本地的版本库(即新建一个文件夹)第二步:选中文件夹右键--Git bash here--进入控制面板,输入命令git init 初始化化文件夹,把这个文件夹变成Git可管理的仓库第三步:把gitee(码云)上的项目地址复过来,git clone "你的仓库地址",点击回车,如下图好了,到本地文件夹中就可以看到这..._命令行下载git

我想要把k8s集群中容器的文件挂载出来该怎么做-程序员宅基地

文章浏览阅读554次。要挂载Kubernetes集群中容器的文件,您需要在Pod定义中指定卷(Volumes)和容器中的挂载点(Mount Point)。以下是一个Pod定义的例子,其中包含一个名为"example-volume"的卷,它将被挂载到容器的"/data"目录:apiVersion: v1kind: Podmetadata: name: example-podspec: container..._pod如何加载容器中的文件

【持续更新】FFmpeg常用命令小结_ffmpeg 列出编解码-程序员宅基地

文章浏览阅读1.8k次,点赞2次,收藏8次。FFmpeg工具套件常用命令查看视频信息ffmpeg -i input.mp4或者ffprobe -i input.mp4输出信息如下:ffmpeg version 4.2.3 Copyright 2000-2020 the FFmpeg developersbuilt with Apple clang version 11.0.3 (clang-1103.0.32.59)configuration: --prefix=/usr/local/Cellar/ffmpeg/4._ffmpeg 列出编解码

AlphaPose测试运行效果_.halpe_26_det-程序员宅基地

文章浏览阅读1.1k次。简易命令:./scripts/inference.sh configs/halpe_26/resnet/256x192_res50_lr1e-3_1x.yaml pretrained_models/halpe26_fast_res50_256x192.pth test.mp4原装命令:python scripts/demo_inference.py --cfg configs/coco/resnet/256x192_res50_lr1e-3_1x.yaml --checkpoint pretrai..._.halpe_26_det

c++ cin.get()的用法小结-程序员宅基地

文章浏览阅读5.5k次,点赞3次,收藏13次。#include int main(){/****************** 1.cin.getline()与他相比,比较粗一些 举例:先定义字符数组 char a[20]; 然后 cin.getline(a,20);即把数组的内容 读入进来。它通过换行符来确定行尾,但不保存 换行符 2.cin.get()则将换行符留在输入队列中 举例:假设我们两次调用cin.get(): _c++ cin.get()的用法小结

随便推点

linux下,Android apk 反编译方法总结_apk转deb原理-程序员宅基地

文章浏览阅读3.5k次。总结网上分散的反编译方法,归类并亲测有效,其完整步骤如下:一、资源反编译(推荐工具apktool) 1. 下载apktool.jar以及相关文件: http://code.google.com/p/android-apktool/downloads/list 下载apktool1.4.3.bz2 和apktool-install-linux-r04-brut1.zip。_apk转deb原理

计算机要逻辑思维,学计算机专业需要逻辑思维强-程序员宅基地

文章浏览阅读229次。清华大学计算机科学与技术系在全国享有盛誉,本科只设计算机科学与技术专业,在人才培养过程中强调科学理论与实际应用的相互结合,培养适应研究、设计和应用开发的“复合型”人才。北航计算机科学与技术专业的定位是培养计算机领域的科学研究和工程技术性人才。该专业按一级学科招生和宽口径培养,二年级之后学生可以选择学科方向:计算机软件与理论、计算机系统结构、计算机应用和软件工程。三年级90%以上的学生可进入重点实验..._计算机强逻辑

汉森实现管程的实例_汉森管程设计-程序员宅基地

文章浏览阅读776次。一、管程来解决生产者/消费者问题 1) [objc] view plain copy 在CODE上查看代码片派生到我的代码片 Struct Monitor { condition NF,NE; int Buffer[n]; int k = 0,t = 0,count = 0; define Add(int),Remove(int); us_汉森管程设计

论Android Studio Intellij IDE 与 Android Eclipse Android ADT ------_intellij idea.eclipseadt,android studio三者优劣-程序员宅基地

文章浏览阅读4.1k次。对于Android 开发者来说,日常开发对于他们来说是干脆直接的。你只需要下载Eclipse并且安装Android Developer工具插件就可以了。Android的Eclipse插件为开发者完成了不少工作,而且或多或少能符合大多数开发者期望那样。但现在,Google最新发布的Android Studio 搅局了,这款Android IDE开发工具对任何Android 开发者而言,都是极大的飞跃_intellij idea.eclipseadt,android studio三者优劣

django_Forbidden (CSRF token missing or incorrect.):_views无法正常返回结果_django forbidden (csrf token missing or incorrect.-程序员宅基地

文章浏览阅读3.4k次。问题描述:写了个静态页面,可以正常访问,然后在静态页面加了form表单,输入用户名,密码,在views中获取并打印,点击提交时就报错403,特此再次补充下,之前写过一篇相同的问题。后台报错:Forbidden (CSRF token missing or incorrect.): /index/前端报错:Forbidden (403)CSRF verification ..._django forbidden (csrf token missing or incorrect.)

推荐文章

热门文章

相关标签