Docker组件runc安全漏洞(CVE-2024-21626)解决记录。

363 阅读3分钟

又是新的一天,眼看就要五一假期了,而我的候补订单还没分配车票。想回家的心稀碎稀碎的。

登陆阿里云控制台,检查其中一个账号下的资源时,注意到有新增一个应用漏洞。

runc 文件描述符泄漏导致容器逃逸漏洞(CVE-2024-21626)

漏洞详情

在 runc 1.1.11 及之前的版本中,由于内部文件描述符泄露的问题,攻击者可以让新生成的容器进程在宿主文件系统命名空间中拥有工作目录,从而允许通过访问宿主文件系统实现容器逃逸等。漏洞利用需要具体的环境,例如允许攻击者提供自定义镜像等。官方已于202421日发布安全更新,建议相关受影响用户升级。

阿里云产品关于 runc的安全问题(CVE-2024-21626)影响声明 https://help.aliyun.com/noticelist/articleid/1069353299.html

阿里云ACK runc版本影响范围:
1.1.0 <= runc <= 1.1.11

社区版本影响范围:
1.0.0-rc93 <= runc <= 1.1.11

社区在下列版本中修复了该问题:
runc 1.1.12

漏洞详情:github.com/opencontain…

查看现有版本

连接到服务器上,查看docker版本信息即可查看到相关信息。

docker version
Client: Docker Engine - Community
 Version:           24.0.5
 API version:       1.43
 Go version:        go1.20.6
 Git commit:        ced0996
 Built:             Fri Jul 21 20:35:18 2023
 OS/Arch:           linux/amd64
 Context:           default

Server: Docker Engine - Community
 Engine:
  Version:          24.0.5
  API version:      1.43 (minimum version 1.12)
  Go version:       go1.20.6
  Git commit:       a61e2b4
  Built:            Fri Jul 21 20:35:18 2023
  OS/Arch:          linux/amd64
  Experimental:     false
 containerd:
  Version:          1.6.21
  GitCommit:        3dce8eb055cbb6872793272b4f20ed16117344f8
 runc:
  Version:          1.1.7  #是它是它就是它
  GitCommit:        v1.1.7-0-g860f061
 docker-init:
  Version:          0.19.0
  GitCommit:        de40ad0

手动解决

#先查看当前系统中这个runc在哪里
which runc
/usr/bin/runc
ls -hl /usr/bin/runc
-rwxr-xr-x 1 root root 9.4M May  6  2023 /usr/bin/runc*
知道了版本,知道了位置,接下来我们就要从官方仓库中下载符合安全版本替换即可。

下载文件

github.com/opencontain…

#由于阿里云服务器连不上github仓库,那我采取在工作笔记本下载后,通过终端上传到服务器节点上。
#wget https://github.com/opencontainers/runc/releases/download/v1.1.12/runc.amd64
#总是连不上,这很`和谐`
下载完成后上传到服务器中

备份原文件

mv /usr/bin/runc /usr/bin/runcbak

移动新版本到指定目录

mv /root/runc.amd64 /usr/bin/runc && chmod +x /usr/bin/runc

验证版本

docker version
....
 runc:
  Version:          1.1.12
  GitCommit:        v1.1.12-0-g51d5e946
 docker-init:
  Version:          0.19.0
  GitCommit:        de40ad0
....
这一步并没有重启docker,docker服务一直在运行中。后续观察是否有不当影响。

控制台验证

最后一步就是回到阿里云控制台 云安全中心 应急漏洞 选择该漏洞,验证。

image.png 最终完成该漏洞处理。撒花完结。💐

最后的怨念(我的火车票啊😭)