漏洞原理、基础知识请阅读以下链接,不再展开:
https://medium.com/nttlabs/dont-use-host-network-namespace-f548aeeef575
或者中文的:
https://mp.weixin.qq.com/s/iNziquZJxcox9453jF8LOg
简要来说,containerd->containerd-shim->runc 的通信模型中,containerd-shim的接口作为abstract unix socket暴露,在docker使用net=host参数启动、与宿主机共享net namespace时,其中的unix socket可以被容器内部访问到,容器中攻击者通过该socket可以通过API控制下游runc进程启动新的恶意镜像,并通过该镜像逃逸。
POC
这个漏洞POC比较简单,只要探测到docker内部有containerd-shim启动的unix socket即可确认。