记录 docker 和 Kubernetes 相关的 CVE 漏洞!
总的来说,建议用户及时升级内核版本和相关软件,以确保系统的安全性。
Docker CVE-2018-15664
- 表象
- 攻击的主要途径是
docker cp
相关的操作,攻击范围其实不算太大。 - 最主要可能被攻击的对象其实是公有云。对于普通用户而言,如果受此攻击,那前提是攻击者已经具备了机器的权限和
Docker
的操作权限。
- 攻击的主要途径是
- 解决
- Pass root to chroot to for chroot Tar/Untar
- 链接
Docker CVE-2019-5021
- 表象
- 自
Alpine Linux 3.3
版本开始的所有Docker
镜像中,root
用户包含一个空密码,这可能会导致攻击者获得root
权限,进而造成攻击。
- 自
- 解决
- 更新到最新版本或手动修改
Dockerfile
文件
- 更新到最新版本或手动修改
- 链接
# 漏洞表象
> docker run --rm -it alpine:3.9
> grep root /etc/passwd
root:x:0:0:root:/root:/bin/ash
operator:x:11:0:operator:/root:/bin/sh
> grep root /etc/shadow
root:::0:::::
# 修复方式
# 关于Alpine-Docker镜像漏洞CVE-2019-5021
RUN sed -ie 's/^root::/root:!:/' "$rootfs/etc/shadow"
Docker CVE-2020-13401
- 表象
- 通过使用
IPv6 RA
消息进行地址欺骗的安全漏洞
- 通过使用
- 解决
- 解决办法也很简单,直接将
/proc/sys/net/ipv6/conf/*/accept_ra
设置成0
,这样便可确保不接收RA
消息,从而避免遭受攻击。
- 解决办法也很简单,直接将
- 链接
Kubernetes CVE-2019-11245
- 表象
- 如果
Pod
中的容器,开始时是以某个非root
用户启动的,但是当它重启后,则会以root
(uid 0
) 的身份启动,或者是 Node 节点上已经存在了启动容器所需的镜像。 - 也存在例外,比如已经显式的通过
runAsUser
指定了运行用户,则不会受到此漏洞影响。
- 如果
- 解决
- 更新到最新版本或显式指定
runAsUser
参数
- 更新到最新版本或显式指定
- 链接
Kubernetes CVE-2019-11247
- 表象
- 影响就是可以访问单个命名空间中的自定义资源的用户可以访问具有集群范围的自定义资源。
- 解决
- 更新到最新版本
- 链接
// 修正主要是针对CRD,核心代码如下
var possiblyAcrossAllNamespacesVerbs = sets.NewString("list", "watch")
namespacedCRD, namespacedReq := crd.Spec.Scope == apiextensions.NamespaceScoped, len(requestInfo.Namespace) > 0
if !namespacedCRD && namespacedReq {
r.delegate.ServeHTTP(w, req)
return
}
if namespacedCRD && !namespacedReq && !possiblyAcrossAllNamespacesVerbs.Has(requestInfo.Verb) {
r.delegate.ServeHTTP(w, req)
return
}
Kubernetes CVE-2019-11249
- 表象
- 对于之前暴出来的使用
kubectl cp
可进行恶意目录浏览的漏洞CVE-2019-1002101
和CVE-2019-11246
的不完整修复。
- 对于之前暴出来的使用
- 解决
- 更新到最新版本来修复之前补丁
- 链接