Skip to content
KitploitKITPLOIT
工具漏洞利用博客
Log in
提交
工具漏洞利用博客
提交

黑客、渗透测试和网络安全工具,武装您的安全武器库!

Kitploit 是一个黑客、网络安全和渗透测试工具的目录。发现最新的项目更新,查找漏洞、分析系统、自动化测试并加强你的安全。

订阅源联系隐私© 2026 Kitploit

工具目录

分类

查看所有分类
Loading categories
cfDr — 用于检测和修复 CVE-2026-31431(Copy Fail)的 Ansible playbook - Linux 内核本地权限提升漏洞 | Kitploit
工具/GitHubGitHub/parmstro/cfdr
漏洞扫描器配置审计DevSecOps
GitHubparmstro/cfdr

cfDr

用于检测和修复 CVE-2026-31431(Copy Fail)的 Ansible playbook - Linux 内核本地权限提升漏洞

查看仓库
2185个月前尚未审核

最受欢迎

查看全部 →

发现我们社区最常用的工具。

探索所有工具

浏览我们的工具集合

查看所有工具 →
分享

cfDr - 复制故障医生

Copy Fail Detection and Remediation(复制故障检测与修复)

一套用于检测和修复 CVE-2026-31431(复制故障)的 Ansible 角色和剧本套件,该漏洞是 Linux 内核 algif_aead 模块中的一个严重本地权限提升漏洞。

仓库

🔗 GitHub: https://github.com/parmstro/cfDr

cfDr 这个名称是 "Copy Fail Doctor"(复制故障医生)的谐音——它是您应对 CVE-2026-31431 的可靠良方。


目录

  1. 了解 CVE-2026-31431
  2. 可用的修复方案
  3. 检测方法
  4. cfDr 的工作原理
  5. 对系统加密的影响
  6. 推荐工作流程
  7. 其他资源
  8. 监控补丁发布
  9. 快速开始
  10. 高级配置

了解 CVE-2026-31431

什么是复制故障?

CVE-2026-31431(CVSS 7.8)是 2026 年发现的 Linux 内核 AEAD 套接字接口(AF_ALG)中的一个逻辑缺陷。该漏洞允许任何非特权本地用户在数秒内将权限提升至 root。

技术细节

  • 受影响组件:algif_aead 内核模块(AF_ALG 加密接口)
  • 漏洞类型:复制操作处理中的逻辑缺陷
  • 攻击向量:本地
  • 所需权限:无(非特权用户)
  • 用户交互:无
  • 影响:系统完全沦陷(获得 root 权限)

受影响系统

内核版本:Linux 内核 >= 4.10(2017 年发布)

受影响的发行版:

  • Red Hat Enterprise Linux 7、8、9
  • CentOS 7、8、9(及 Stream)
  • Fedora(所有当前支持的版本)
  • Ubuntu 17.04 及更高版本
  • Debian 9(Stretch)及更高版本
  • SUSE Linux Enterprise 12、15

注意:任何使用内核 4.10 或更高版本的 Linux 发行版都可能存在漏洞。

为何此漏洞至关重要

该漏洞特别危险,原因如下:

  1. 无需任何权限 - 任何用户账户均可利用
  2. 即时提权 - 数秒内获得 root 权限
  3. 影响范围广泛 - 影响 7 年以上的内核版本
  4. 本地执行 - 无需远程访问,但获得初始立足点的攻击者可立即提权
  5. 已被积极利用 - 公开漏洞利用代码已可用

现实影响

一旦攻击者获得任何形式的本地访问权限(SSH、Web Shell、容器逃逸等),他们就可以:

  • 完全控制系统
  • 安装持久性后门
  • 访问敏感数据
  • 横向移动至网络中的其他系统
  • 部署勒索软件或加密货币挖矿程序

可用的修复方案

在等待厂商提供内核补丁期间,有多种缓解策略可供使用。cfDr 实现了所有这些策略,并根据您的系统配置提供智能推荐。

了解防护级别

并非所有修复方案效果相同。以下内容您需要了解:

方法Root 能否绕过?覆盖范围企业级 Linux 支持
模块黑名单✅ 可以(通过 insmod)阻止 modprobe 加载所有版本
SELinux 策略❌ 不能(LSM 层)仅限已配置的域所有版本(默认)
systemd seccomp❌ 不能(系统调用过滤器)仅限已配置的服务所有版本
eBPF LSM❌ 不能(LSM 层)系统范围(若已配置)RHEL 9+、Fedora 34+

推荐方法:纵深防御

cfDr 的默认推荐:标志 3(模块黑名单 + SELinux)

这提供了两个独立的防护层:``` ┌─────────────────────────────────────────────────┐ │ Layer 1: Module Blacklist │ │ • Prevents modprobe algif_aead │ │ • Persists across reboots │ │ • CAN be bypassed by malicious root (insmod) │ ├─────────────────────────────────────────────────┤ │ Layer 2: SELinux Policy │ │ • Blocks AF_ALG socket() at syscall level │ │ • Works even if module is loaded │ │ • CANNOT be bypassed from userspace │ │ • Covers user_t, unconfined_t (majority cases) │ └─────────────────────────────────────────────────┘

Result: If either layer fails, the other still protects

### 为什么仅靠模块黑名单是不够的

拥有 root 权限的坚定攻击者可以绕过模块黑名单:```bash
# Module blacklist DOES NOT prevent:
insmod /lib/modules/$(uname -r)/kernel/crypto/algif_aead.ko.xz

然而,这是可以接受的,因为:

  1. 该漏洞针对的是权限提升(非特权 → root)
  2. 如果攻击者已经拥有 root 权限,他们可以直接利用,无需加载模块
  3. 模块黑名单可防范主要攻击向量

完整防护策略

要实现完整、不可绕过的防护,你需要:

模块黑名单 + 以下至少一项:

  • SELinux 策略(推荐用于 Enterprise Linux)
  • systemd seccomp 过滤器(按服务防护)
  • eBPF LSM 程序(仅限 RHEL 9+,系统级)

缓解标志参考

cfDr 使用位标志来启用多种缓解措施:

标志值已启用的缓解措施使用场景
1仅模块黑名单最低防护,适用于没有 SELinux 的系统
2仅 SELinux仅 SELinux 环境
3模块黑名单 + SELinux推荐默认值
5模块黑名单 + seccomp非 SELinux 环境,带服务加固
7模块黑名单 + SELinux + seccomp增强防护
15所有缓解措施最高防护(仅限 RHEL 9+)

计算标志:1(黑名单)+ 2(SELinux)+ 4(seccomp)+ 8(eBPF)= 总和

需要注意的覆盖缺口

SELinux 防护:

  • 仅覆盖策略中指定的域:user_t、unconfined_t、httpd_t、postgresql_t、mysqld_t
  • 在其他 SELinux 域中运行的进程可能不受保护
  • 实际上,user_t 和 unconfined_t 覆盖了绝大多数攻击场景

systemd seccomp 防护:

  • 仅保护显式配置的服务
  • 默认配置覆盖:httpd、nginx、postgresql、mariadb、redis、memcached
  • 这些服务之外的进程不受保护

eBPF LSM 防护:

  • 需要内核 5.7+(RHEL 9、Fedora 34+)
  • 复杂性要求具备专业知识才能正确实施
  • 如果配置得当,可以提供全面的系统级防护

检测方法

cfDr 如何检测漏洞

cfDr 在多个维度上执行全面评估:

1. 内核版本检查```bash

uname -r

- 判断内核版本是否 >= 4.10(受影响范围)
- 识别内核发行版本及发行版信息

#### 2. 模块可用性检查```bash
modinfo algif_aead
  • 验证内核中是否存在 algif_aead 模块
  • 检查模块位置和元数据

3. 模块加载状态```bash

lsmod | grep algif_aead

- 确定模块当前是否已加载
- **关键**:已加载模块 = 可主动利用

#### 4. 活动套接字检测```bash
lsof -U | grep AF_ALG
  • 识别活跃的 AF_ALG 套接字
  • 指示潜在的活动利用

5. 现有缓解措施检测

模块黑名单:```bash grep -E "blacklist algif_aead|install algif_aead" /etc/modprobe.d/*.conf

**SELinux 策略**:```bash
semodule -l | grep cve_2026_31431_af_alg_deny

systemd seccomp:```bash systemctl show | grep RestrictAddressFamilies

#### 6. 分类状态判定

cfDr 将每台主机归类为以下状态之一:

| 状态 | 条件 | 所需操作 |
|--------|-----------|-----------------|
| **易受攻击 - 模块已加载** | 内核 >= 4.10,模块存在且已加载 | **立即处理** - 可主动利用 |
| **易受攻击 - 模块存在** | 内核 >= 4.10,模块存在但未加载 | **高优先级** - 可加载并利用 |
| **已缓解 - 模块被列入黑名单** | 检测到黑名单 | **低优先级** - 监控,应用额外防护层 |
| **已防护 - 纵深防御** | 黑名单 + SELinux/seccomp/eBPF | **无需处理** - 完全防护 |
| **不易受攻击 - 内核过旧** | 内核 < 4.10 | **无需处理** - 早于漏洞出现时间 |
| **不易受攻击 - 无模块** | 内核中无 algif_aead 模块 | **无需处理** - 模块不可用 |

### 评估输出

每台主机将获得:
1. **控制台输出**:简短的单行状态
2. **详细文件**:`/root/cve-2026-31431-assessment-<hostname>.txt`
3. **JSON 报告**:`/tmp/cve-2026-31431-<hostname>.json`

简短输出示例:```
webserver1.example.com: VULNERABLE - Module exists and can be loaded
dbserver2.example.com: PROTECTED - Defense-in-depth (Module Blacklist + SELinux)
appserver3.example.com: NOT VULNERABLE - Module not available

cfDr 的工作原理

架构

cfDr 是一个现代的 Ansible 角色,包含多个 playbook 入口点:``` cfDr/ ├── roles/ │ └── cve_2026_31431/ # Main role │ ├── tasks/ │ │ ├── main.yml # Role orchestration │ │ ├── assessment.yml # Vulnerability detection │ │ ├── remediation_module_blacklist.yml │ │ ├── remediation_selinux.yml │ │ ├── remediation_seccomp.yml │ │ ├── remediation_ebpf.yml │ │ ├── reporting.yml # Status reporting │ │ └── inventory_update.yml # Inventory generation │ ├── templates/ # Config file templates │ ├── defaults/ # Default variables │ └── handlers/ # Service restarts, etc. ├── quickstart.yml # Simplest usage ├── sample_playbook.yml # Multiple examples └── cve_2026_31431_playbook.yml # Full-featured playbook

### 执行流程

#### 评估模式(默认)```
1. Pre-flight checks
   ↓
2. Gather system facts
   ↓
3. Detect kernel version
   ↓
4. Check module availability
   ↓
5. Check current load status
   ↓
6. Check existing mitigations
   ↓
7. Determine vulnerability status
   ↓
8. Flag vulnerable hosts
   ↓
9. Generate reports
   ↓
10. Create summary
   ↓
11. [Optional] Generate inventory

修复模式(apply_remediation=true)```

1-8. [Same as Assessment Mode] ↓ 9. Apply Module Blacklist (if flag 1) • Unload module if loaded • Create blacklist config • Update initramfs/initrd • Verify blacklist works ↓ 10. Apply SELinux Policy (if flag 2) • Install policy packages • Compile policy module • Install policy • Verify policy active ↓ 11. Apply systemd seccomp (if flag 4) • Create drop-in files • Reload systemd • Restart services • Verify filters active ↓ 12. Apply eBPF LSM (if flag 8) • Compile eBPF program • Load into kernel • Verify program attached ↓ 13. Re-assess protection status ↓ 14. Generate reports ↓ 15. Create summary

### 修复详情

#### 模块黑名单(标志 1)

**功能说明**:
1. 如果 `algif_aead` 模块当前已加载,则将其卸载(`rmmod algif_aead`)
2. 创建 `/etc/modprobe.d/blacklist-algif_aead-cve-2026-31431.conf`:   ```
   blacklist algif_aead
   install algif_aead /bin/true
  1. 更新 initramfs/initrd 以在重启后保持持久化:
    • Debian/Ubuntu:update-initramfs -u
    • RHEL/Fedora:dracut -f
  2. 验证模块无法通过 modprobe 加载

防护:即时生效,无需重启 持久性:在重启和内核更新后仍然有效

SELinux 策略(标志 2)

下载工具