ARTICLE DETAIL

资讯详情

深耕网站建设与运营推广的一线实战洞察。

从内核版本到漏洞判定:container-escape-check 如何精准识别 DirtyPipe 与 DirtyCow

从内核版本到漏洞判定:container-escape-check 如何精准识别 DirtyPipe 与 DirtyCow 从内核版本到漏洞判定container-escape-check 如何精准识别 DirtyPipe 与 DirtyCow【免费下载链接】container-escape-checkdocker container escape check || Docker 容器逃逸检测项目地址: https://gitcode.com/gh_mirrors/co/container-escape-check在云原生时代Docker 容器逃逸检测是每个安全团队绕不开的课题。container-escape-check 是一款开源的 Docker 容器逃逸检测脚本只需要在容器内执行一行命令它就能自动扫描特权模式、敏感挂载、高危 Capabilities以及 DirtyCow、DirtyPipe 等经典内核提权漏洞。它最巧妙的地方在于仅凭一个 Linux 内核版本号就能对漏洞是否存在做出精准判断。这篇文章将带你拆解 container-escape-check 的检测原理重点剖析它如何从内核版本精准识别 DirtyPipe 与 DirtyCow。为什么内核漏洞是容器逃逸的高发地带容器与宿主机共享 Linux 内核这意味着一旦内核出现提权漏洞如 DirtyCow、DirtyPipe容器内的攻击者就可能借机突破隔离边界拿到宿主机的控制权。这类漏洞往往影响面广、利用门槛低因此在容器逃逸检测中优先级极高。不过内核漏洞的判定有一个天然难点同一个漏洞在不同内核版本上影响范围完全不同而且某些漏洞如 DirtyPipe还存在多个修复版本。要精准识别必须对内核版本做精细的区间比对这正是 container-escape-check 的核心设计。container-escape-check 支持检测哪些逃逸路径作为一个纯 Shell 实现的轻量检测脚本container-escape-check 覆盖了配置型逃逸与内核漏洞两大类别类别检测项配置型 特权模式、Docker Socket 挂载、宿主机 procfs 挂载、宿主机根目录/var/log 挂载、Docker 远程 API权限型 CAP_DAC_READ_SEARCH、CAP_SYS_ADMIN、CAP_SYS_PTRACE内核漏洞 CVE-2016-5195 DirtyCow、CVE-2022-0847 DirtyPipe、CVE-2020-14386、CVE-2017-1000112、CVE-2021-22555、CVE-2022-0492检测第一步如何从容器内解析 Linux 内核版本所有内核漏洞判定都建立在版本号解析之上。脚本首先通过uname -r拿到内核版本再按-和.做两级拆分得到 KernelVersion主版本、MajorRevision次版本和 MinorRevision修订号三个基准变量LinuxKernelVersionuname -r | awk -F - {print $1} KernelVersionecho -e $LinuxKernelVersion | awk -F . {print $1} MajorRevisionecho -e $LinuxKernelVersion | awk -F . {print $2} MinorRevisionecho -e $LinuxKernelVersion | awk -F . {print $3}比如内核版本5.10.102-1.el7.x86_64会被解析为5、10、102三个数字之后所有漏洞判定函数都围绕这三个数字做区间比较。完整的解析逻辑见 container-escape-check.sh。DirtyCowCVE-2016-5195如何精准判定DirtyCow 是 Linux 内核经典的内存子系统提权漏洞影响范围从 2.6.22 一直延续到 4.8.3。由于影响区间是一个连续版本段脚本的判定逻辑相对直接——只要内核版本落在下面任意一个区间内就判定存在漏洞判定区间说明2.6.22 ≤ 版本 ≤ 2.6.x2.6 系列修复前的全部版本2.7 ~ 2.x2.7 及以上3.x整个 3.x 系列4.0 ~ 4.74.8 修复之前的版本4.8.0 ~ 4.8.34.8 系列修复前的版本可以看到DirtyCow 的判定覆盖了 2.6.22 到 4.8.3 的完整区间这部分逻辑位于 container-escape-check.sh。DirtyPipeCVE-2022-0847如何精准判定DirtyPipe 比 DirtyCow 复杂得多。它影响 5.8 到 5.16.11 之间的内核但修复工作分三批完成5.10.102、5.15.25、5.16.11 三个版本各自封堵了对应分支的漏洞。也就是说不能简单地用大于某个版本来判断必须逐段比较判定区间说明5.8 ≤ 版本 5.105.8、5.9 全受影响5.10.0 ~ 5.10.1015.10 分支在 5.10.102 修复前均受影响5.11 ~ 5.14中间分支全部受影响5.15.0 ~ 5.15.245.15 分支在 5.15.25 修复前受影响5.16.0 ~ 5.16.105.16 分支在 5.16.11 修复前受影响脚本用主版本 次版本 修订号的多重 if 分支逐段命中只要命中任意一段就输出存在漏洞的结论具体实现见 container-escape-check.sh。这里也顺带提一句由于部分发行版内核存在定制补丁脚本在个别边界版本上会采取宁多勿漏的扩大判定策略可能产生少量误报这与作者在 README_ZH.md 中可能存在误检或漏检的说明一致使用时结合实际情况判断即可。如何在容器中一键运行 container-escape-check检测脚本的使用非常轻量把项目克隆到容器内即可执行git clone https://gitcode.com/gh_mirrors/co/container-escape-check cd container-escape-check chmod x container-escape-check.sh ./container-escape-check.sh脚本会先确认当前环境是否为容器然后依次执行 15 项检测。输出中绿色[]表示检测项命中存在风险黄色[!]为过程中的提示信息最后会汇总给出检测完成的结论。上方的截图就是一次真实运行的输出可以看到特权模式、DirtyCow、高危 Capabilities 等多项风险被同时命中。总结从uname -r一行命令到 DirtyCow 的连续区间比对再到 DirtyPipe 的多修复版本分段判定container-escape-check 用最朴素的方式把内核版本号 → 漏洞是否存在这条判定链路做得清晰而完整。对于安全运维人员和容器使用者来说它既是一把趁手的容器逃逸检测扫描利器也是一份很好的内核漏洞版本影响范围速查手册值得放进你的安全工具箱。【免费下载链接】container-escape-checkdocker container escape check || Docker 容器逃逸检测项目地址: https://gitcode.com/gh_mirrors/co/container-escape-check创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
返回列表