
深入理解 Linux Capabilitiescontainer-escape-check 如何识别 CAP_SYS_ADMIN 等高危权限【免费下载链接】container-escape-checkdocker container escape check || Docker 容器逃逸检测项目地址: https://gitcode.com/gh_mirrors/co/container-escape-checkDocker 容器逃逸检测是云原生安全中最关键的一环而 container-escape-check 正是一款专为此场景打造的开源检测工具。它由安全研究员 TeamsSix 开发能够在容器内一键扫描特权模式、高危挂载、已知内核漏洞以及 CAP_SYS_ADMIN、CAP_DAC_READ_SEARCH、CAP_SYS_PTRACE 等危险的 Linux Capabilities 权限帮你赶在攻击者之前发现逃逸风险。本文将以新手也能看懂的方式讲清 Linux Capabilities 机制并深入解析 container-escape-check 如何识别这些高危权限。什么是 Linux Capabilities容器 root 为何不等于安全很多新手会误以为容器里是 root权限就和宿主机 root 一样大。实际上Docker 容器通过 Namespace 与 Capabilities 双重隔离容器内的 rootUID 0只是一个被削弱的 root。Linux Capabilities 机制的巧妙之处在于它把 root 的全部权限拆分成几十种独立的小权限例如 CAP_NET_ADMIN 负责网络管理、CAP_SYS_TIME 负责修改系统时钟。容器默认只被授予少量 Capabilities攻击面因此大幅缩小。但一旦容器被赋予了过高权限就等于把越狱钥匙直接交给了攻击者——这正是容器逃逸检测需要重点盯防的对象。高危 Linux Capabilities 权限清单为什么 CAP_SYS_ADMIN 是重灾区在容器逃逸检测中以下三个 Capabilities 最为危险Capability作用逃逸风险CAP_SYS_ADMIN执行系统级管理操作如挂载文件系统、操作 Namespace极高可挂载宿主机文件系统直接逃逸CAP_DAC_READ_SEARCH绕过文件读写权限检查高可越权读取宿主任意文件CAP_SYS_PTRACE对任意进程进行调试与追踪高可注入并控制宿主机进程其中 CAP_SYS_ADMIN 常被安全圈称为最强逃逸权限持有它攻击者几乎可以操纵宿主机的大部分内核资源是容器逃逸检测中最需要优先发现的信号。container-escape-check 如何检测 CAP_SYS_ADMIN 等高危权限container-escape-check 的检测逻辑非常轻巧核心代码都在一个脚本container-escape-check.sh中。以 CAP_SYS_ADMIN 为例脚本中的CheckCAP_SYS_ADMIN()函数做了两件事检查容器内是否存在capsh命令来自 libcap2-bin / libcap 工具包不存在时自动联网安装执行capsh --print输出当前容器的权限集合从中检索cap_sys_admin字样一旦出现即判定存在该高危权限。核心判断逻辑只有几行cap_sys_adminNumcapsh --print | grep cap_sys_admin | wc -l if [ $cap_sys_adminNum -gt 0 ];then echo [] The current container has the CAP_SYS_ADMIN permission. fi同理CheckCAP_SYS_PTRACE()与ChekckCAP_DAC_READ_SEARCH()函数用完全一致的方式检测另外两个高危权限。值得一提的是特权模式的检测则更直接——脚本读取/proc/self/status中的 CapEff 掩码若匹配0000003fffffffff等特征值即判定容器运行在--privileged特权模式下。三步完成容器逃逸检测container-escape-check 快速使用教程脚本需要在 Docker 容器内运行。进入目标容器后克隆项目并执行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脚本会先通过CheckTheCurrentEnvironment()判断当前环境确认处于容器中才继续检测如果在宿主机上运行会直接提示 Not currently a container environment 并退出。随后脚本依次执行全部 15 类检测项最后汇总输出检测结果。一张图读懂检测结果高危容器的完整扫描报告上图是一次真实的容器逃逸检测输出。可以看到该容器同时存在特权模式、procfs 挂载、DirtyCow 漏洞CVE-2016-5195、CVE-2021-22555以及 CAP_DAC_READ_SEARCH、CAP_SYS_ADMIN、CAP_SYS_PTRACE 三个高危权限基本处于裸奔状态。结果解读很简单[]绿色输出检测到风险项需立即处理[!]黄色输出提示信息例如自动安装 capsh 的过程结尾的Check completed表示全部检测项执行完毕。检测到 CAP_SYS_ADMIN 后怎么办容器逃逸风险加固清单检测出高危权限只是第一步真正重要的是修复。建议按以下清单加固关闭特权模式不要使用--privileged启动容器权限白名单化用--cap-dropALL丢弃全部权限再按需--cap-add最小集合收紧挂载避免挂载 docker.sock、宿主机根目录与 procfs及时升级内核修复 DirtyPipe、CVE-2022-0492 等已知漏洞建立常态化自查机制定期运行 container-escape-check 复查。总结Linux Capabilities 是理解容器安全绕不开的核心概念而 CAP_SYS_ADMIN 等高危权限正是容器逃逸攻击的常见跳板。container-escape-check 用最简单的一键脚本把 CAP_SYS_ADMIN、CAP_SYS_PTRACE、CAP_DAC_READ_SEARCH 等权限检测与已知漏洞扫描集成在一起让普通用户也能快速完成一次专业的容器逃逸检测。掌握它你就为容器安全防线补上了一块重要的拼图。【免费下载链接】container-escape-checkdocker container escape check || Docker 容器逃逸检测项目地址: https://gitcode.com/gh_mirrors/co/container-escape-check创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考