$npx -y skills add aliyun/alibabacloud-ecs-troubleshoot-skills --skill alibabacloud-ecs-sec-kernelLinux 内核 CVE 漏洞检测与 PoC 验证工具。88 个内核漏洞检测器,CTF 挑战模式验证。需要 root 权限(sudo)运行。 务必在检测内核漏洞时使用此技能。每当需要验证 CVE 或执行 PoC 验证时,优先调用此技能。 当用户提到内核安全、CVE 检测、漏洞利用验证时,主动触发。
| 1 | # sec-kernel |
| 2 | |
| 3 | Linux 内核 CVE 漏洞检测与 PoC 验证工具。88 个内核漏洞检测器,CTF 挑战模式验证。 |
| 4 | |
| 5 | **Version**: 1.4.0 (JSON-driven architecture) |
| 6 | |
| 7 | ## 触发场景 |
| 8 | |
| 9 | 当以下场景出现时,务必主动调用此技能: |
| 10 | - 检测 Linux 内核漏洞 |
| 11 | - 验证特定 CVE 是否可利用 |
| 12 | - 执行 PoC 三阶段验证(Prepare → Run → Post) |
| 13 | - 内核安全评估或审计 |
| 14 | - 用户提到 "内核安全"、"CVE"、"提权漏洞"、"PoC" 等关键词 |
| 15 | - 需要判断当前内核版本是否存在已知漏洞 |
| 16 | - 执行本地提权(LPE)路径验证 |
| 17 | |
| 18 | ## ⚠️ 安全声明 |
| 19 | |
| 20 | > **PoC 验证可能导致 kernel crash (panic/hang/deadlock),建议在隔离的虚拟机/可快照环境中运行。** |
| 21 | > PoC 不会永久改写系统文件,不会进行持久化提权。所有临时修改均在 Post 阶段完整恢复。 |
| 22 | > 使用本工具即表示您同意遵守 [完整安全声明](references/SECURITY-DISCLAIMER.md) 中的所有条款。 |
| 23 | > 违规使用需承担全部法律责任。 |
| 24 | |
| 25 | ## 快速使用 |
| 26 | |
| 27 | ```bash |
| 28 | # 从 skill 根目录执行: |
| 29 | |
| 30 | # 需要 root 权限(sudo) |
| 31 | |
| 32 | # 全量检测与 PoC 验证(默认对所有 enabled 的 CVE 执行 PoC) |
| 33 | sudo python3 -m scripts --verbose |
| 34 | |
| 35 | # 单 CVE 验证 |
| 36 | sudo python3 -m scripts --cve-id CVE-2026-31431 -v |
| 37 | |
| 38 | # 列出所有检测器(无需 root) |
| 39 | python3 -m scripts --list-detectors |
| 40 | |
| 41 | # 自动编译缺失的 PoC 二进制 |
| 42 | sudo python3 -m scripts --compile-poc -v |
| 43 | |
| 44 | # 输出 JSON 格式报告 |
| 45 | sudo python3 -m scripts --format json -v |
| 46 | ``` |
| 47 | |
| 48 | ## CLI 参数 |
| 49 | |
| 50 | | 参数 | 类型 | 默认值 | 说明 | |
| 51 | |------|------|--------|------| |
| 52 | | `--mode` | choice | `host` | 运行模式(仅 `host`,Linux 服务器环境) | |
| 53 | | `--poc-output` | path | `./workspace` | PoC 证据输出目录 | |
| 54 | | `--poc-timeout` | int | `30` | PoC 执行超时时间(秒) | |
| 55 | | `--no-prepare` | flag | off | 跳过 Prepare 阶段 | |
| 56 | | `--no-post` | flag | off | 跳过 Post 阶段 | |
| 57 | | `--poc-user` | string | `nobody` | Run 阶段执行用户(降权执行) | |
| 58 | | `--no-force-demote` | flag | off | 不强制降权到非特权用户 | |
| 59 | | `--compile-poc` | flag | off | 自动编译缺失的 PoC 二进制文件(plain 模式) | |
| 60 | | `--output-dir` | path | `./workspace` | 报告输出目录 | |
| 61 | | `--format` | choice | `markdown` | 报告格式(`markdown` / `json`) | |
| 62 | | `--cve-id` | string | - | 仅检测指定 CVE | |
| 63 | | `--config` | path | - | 配置文件路径 | |
| 64 | | `--verbose` / `-v` | flag | off | 详细输出 | |
| 65 | | `--list-detectors` | flag | off | 列出所有检测器(无需 root) | |
| 66 | |
| 67 | ### 关键参数说明 |
| 68 | |
| 69 | **默认行为**: 所有在 `kernel_cves.yaml` 中 `enabled: true` 的 CVE 都会自动执行 PoC 验证,无需额外参数。唯一跳过 PoC 的条件是将 CVE 设置为 `enabled: false`。 |
| 70 | |
| 71 | **`--compile-poc`**: 当 `poc-bin/` 目录下缺少对应 ELF binary 时,自动调用 `poc-src/build.sh` 编译。仅在 plain 模式(源码部署)下生效。 |
| 72 | > **Why**: 本地编译确保 PoC 源码不出环境,源码仅存在于有 git 的开发机器上,编译产物才会同步到远程。 |
| 73 | |
| 74 | **`--no-prepare` / `--no-post`**: 跳过三阶段验证中的 Prepare 或 Post 阶段。用于调试目的,生产环境建议保留完整三阶段。 |
| 75 | |
| 76 | **`--poc-user`**: Run 阶段以指定用户身份执行 PoC binary,默认 `nobody`(uid=65534)。用于验证 LPE(本地提权)路径。 |
| 77 | |
| 78 | **`--no-force-demote`**: 默认情况下 PoC 执行会强制降权到 `--poc-user` 指定的非特权用户。此参数禁用强制降权。 |
| 79 | |
| 80 | ### 为什么需要 sudo(root 权限) |
| 81 | |
| 82 | PoC 三阶段验证需要 root 权限的原因: |
| 83 | - **Phase 1 (Prepare)**: 需要加载内核模块(`modprobe algif_aead`、`modprobe esp4` 等)、创建 root 拥有的目标文件、配置 xfrm SA/SP 等安全策略 |
| 84 | - **Phase 3 (Post)**: 需要读取 root 文件验证写入结果、卸载内核模块、清理 xfrm 状态、恢复系统状态 |
| 85 | - **权限分离**: Phase 2 (Run) 故意降权到 nobody,以验证漏洞是否能让非特权用户越权操作 |
| 86 | |
| 87 | ### 为什么使用 CTF 模式 |
| 88 | |
| 89 | CTF 挑战模式的设计理由: |
| 90 | - **客观验证**: 通过文件内容的读/写来客观证明漏洞是否触发,而非主观判断 |
| 91 | - **提权证据**: nobody 用户成功写入 root 文件 = 证明存在 LPE 路径 |
| 92 | - **安全约束**: PoC 不会真正执行 `setuid(0)`,只是通过文件操作证明漏洞可被利用 |
| 93 | - **可复现性**: CTF flag 每次随机生成,确保每次验证都是真实触发而非缓存结果 |
| 94 | |
| 95 | ## 检测器统计 |
| 96 | |
| 97 | | 指标 | 数量 | |
| 98 | |------|------| |
| 99 | | 总检测器数 | 88 | |
| 100 | | write_root_file 模式 | 84 | |
| 101 | | read_root_file 模式 | 24 | |
| 102 | | uaf 模式 | 5 | |
| 103 | |
| 104 | ## 新增功能 (v1.2.0) |
| 105 | |
| 106 | ### PoC 执行统计模块 |
| 107 | |
| 108 | 每次执行完成后自动输出详细统计报表,包含: |
| 109 | - SUCCESS(EXPLOITABLE / NOT_EXPLOITABLE)分类统计 |
| 110 | - FAILED(TIMEOUT / CRASH / MISSING_BIN / PARSE_ERROR / PERMISSION)细分 |
| 111 | - SKIPPED(NO_MODULE) |
| 112 | - 失败分析(root cause + recommendation + 是否为 PoC 实现问题) |
| 113 | |
| 114 | ### 三种 PoC 模式标准化 |
| 115 | |
| 116 | | 模式 | 目标文件权限 | 验证方式 | 数量 | |
| 117 | |------|-------------|---------|------| |
| 118 | | `write_root_file` | root:root 0644 | nobody 通过内核漏洞写入 root 文件 | 86 | |
| 119 | | `read_root_file` | root:root 0400 | nobody 通过内核漏洞读取 root 文件 | 24 | |
| 120 | | `uaf` | N/A | Use-After-Free 利用验证 | 5 | |
| 121 | |
| 122 | ### 增强的证据展示 |
| 123 | |
| 124 | - CTF flag 验证(write 模式:写入并回读确认;read 模式:读取受保护内容) |
| 125 | - 失败分析引擎(自动判定 root cause 并给出修复建议) |
| 126 | - PoC 实现问题标记(`[PoC-IMPL]` 标签区分环境问题和代码问题) |
| 127 | - 三阶段完整证据链输出 |
| 128 | |
| 129 | ## 输出格式 |
| 130 | |
| 131 | ### 检测摘要 |
| 132 | |
| 133 | ``` |
| 134 | ============================================================== |
| 135 | sec-kernel v1.4.1 - Linux Kernel CVE Detection |
| 136 | ============================================================== |
| 137 | Kernel: 5.15.0-91-generic (x86_64) |
| 138 | Mode: host (Linux Server) |
| 139 | ============================================================== |
| 140 | |
| 141 | ============================================================== |
| 142 | Detection Summary |
| 143 | ============================================================== |
| 144 | Total CVEs checked: 88 |
| 145 | Vulnerable: 3 |
| 146 | Not Vulnerable: 80 |
| 147 | Uncertain: 2 |
| 148 | PoC Exploitable: 2 |
| 149 | Execution time: 45.32s |
| 150 | ============================================================== |
| 151 | ``` |
| 152 | |
| 153 | ### PoC 执行统计 |
| 154 | |
| 155 | ``` |
| 156 | ================================================================ |
| 157 | sec-kernel PoC Execution Statistics |
| 158 | ================================================================ |
| 159 | Total Detectors: 88 (with PoC capability) |
| 160 | PoC Executed: 83 |
| 161 | ------------------------------------------------------------ |
| 162 | SUCCESS (ran correctly): 78 |
| 163 | +- EXPLOITABLE: 2 (vulnerability confirmed) |
| 164 | +- NOT_EXPLOITABLE: 76 (kernel pat |