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

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

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

··订阅源·联系·隐私·© 2026 Kitploit

工具目录

分类

查看所有分类
Loading categories
linux-kernel-zero-day-mitigation-zero-downtime-kernel-defense- — 通过现代 eBPF、模块解除武装以及 containerd 用户命名空间来消除 CISA 活跃的 Linux 内核 CVE(CVE-2025-39964、CVE-2026-53266、CVE-2025-39682)。 | Kitploit
工具/GitHubGitHub/mc493/linux-kernel-zero-day-mitigation-zero-downtime-kernel-defense-
防御工具容器安全漏洞分析DevSecOps事件响应
GitHubmc493/linux-kernel-zero-day-mitigation-zero-downtime-kernel-defense-

linux-kernel-zero-day-mitigation-zero-downtime-kernel-defense-

通过现代 eBPF、模块解除武装以及 containerd 用户命名空间来消除 CISA 活跃的 Linux 内核 CVE(CVE-2025-39964、CVE-2026-53266、CVE-2025-39682)。

查看仓库

最受欢迎

查看全部 →

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

探索所有工具

浏览我们的工具集合

查看所有工具 →
分享
51天前尚未审核

零停机 Linux 内核零日防御:通过 eBPF 遥测、模块解除武装和用户命名空间实现分层补偿控制

当网络安全和基础设施安全局(CISA)将关键 Linux 内核漏洞添加到其 已知被利用漏洞(KEV) 目录时,基础设施团队和 SRE 负责人就开始了紧迫的运营倒计时:

上游补丁缺口:
从在野零日漏洞被公开武器化,到企业发行版(Ubuntu HWE、Debian、RHEL)提供经过测试的签名二进制内核包,这段时间通常为 7 到 21 天。

在生产 Kubernetes 集群中,被动等待供应商软件包会使系统暴露于主动利用之下,而过早的内核升级或紧急重启则可能导致运营中断。

本案例研究记录了一个 纵深防御补偿控制框架,旨在无需重启主机的情况下,在用户空间、内核加载器和运行时层管理三个并发的 Linux 内核漏洞(CVE-2025-39964、CVE-2026-53266、CVE-2025-39682)。


威胁矩阵与防御分类

为确保运营准确性,防御措施严格按其安全属性(预防、运行时检测和遏制)进行分类:

漏洞子系统攻击机制严重性防御模式实现机制
CVE-2026-53266Netfilter 桥接(ebtables)桥接 ARP 表重写规则中的算术溢出高(内存破坏)预防(解除武装)RAM 驱逐(modprobe -r)+ 加载器覆盖(/bin/true)
CVE-2025-39964加密 Netlink(AF_ALG)netlink 加密套接字分配中的整数截断高(LPE / 逃逸)检测(eBPF)/ 门控现代 eBPF(sys_enter_socket,domain 38)+ SECCOMP
CVE-2025-39682内核 TLS(kTLS)TCP ULP 中的零长度记录处理缺陷高(内核恐慌 / 堆)检测(eBPF)现代 eBPF(sys_enter_setsockopt,TCP_ULP 31 和 SOL_TLS 282)

分层纵深防御架构

root@kitploit:~
flowchart TD
    subgraph Ring3 ["User Space / Container Pod (Ring 3)"]
        Workload["Container Workload / Untrusted Process"]
        Probe["Exploit Vectors: socket(AF_ALG) or setsockopt(TCP_ULP)"]
        Workload --> Probe
    end

    subgraph Ring0 ["Linux Kernel (Ring 0)"]
        SyscallTrap["Syscall Trap (sysenter)"]
        Probe --> SyscallTrap
        
        Tracepoint["Kernel Tracepoint: sys_enter"]
        SyscallTrap --> Tracepoint
        
        subgraph eBPFEngine ["Modern eBPF Detection (CO-RE Ring Buffer)"]
            Filter{"Syscall Gating:\n- domain == 38 (AF_ALG)\n- SOL_TCP + TCP_ULP\n- SOL_TLS (282)"}
            Tracepoint --> Filter
        end
        
        Disarmed["Modprobe Hook: /bin/true\n(ebtables evicted & blocked)"]
        UserNS["containerd v2.2.4 User Namespace Remap\nContainer UID 0 -> Host UID 4050714624\n(Bounded Credential Containment)"]
        
        Filter -- "Match (<1ms)" --> AlertRingBuf["Ring Buffer Emission"]
        Filter -- "Pass" --> KernelExec["Normal Execution Path"]
        KernelExec --> UserNS
    end

    subgraph SecurityPipeline ["Reactive Event Pipeline"]
        Falcosidekick["Falco Daemon & Sidekick (:2801)"]
        Forwarder["Event Forwarder Daemon (:9876)"]
        NATSBus["NATS Security Bus (sovereign.security.alert)"]
        
        AlertRingBuf --> Falcosidekick
        Falcosidekick --> Forwarder
        Forwarder --> NATSBus
    end

    subgraph Enforcement ["Automated Remediation & Audit"]
        Remediator["Dynamic Bouncer (CrowdSec / nftables Drop)"]
        AuditLedger["Cryptographically Tamper-Evident Hash Chain\n(SHA-256 Chaining & Cross-Node Replication)"]
        
        NATSBus --> Remediator
        NATSBus --> AuditLedger
    end

    classDef danger fill:#ffdddd,stroke:#ff0000,stroke-width:2px;
    classDef safe fill:#ddffdd,stroke:#00aa00,stroke-width:2px;
    classDef arch fill:#f0f4f8,stroke:#0066cc,stroke-width:1px;
    class Probe danger;
    class Disarmed,UserNS,AuditLedger safe;

第 1 层:内核模块解除武装(预防性)

1. 运营细节:活动内存与未来探测

/etc/modprobe.d/ 覆盖的一个常见陷阱是,install /bin/true 仅阻止后续的模块加载尝试。如果桥接网络(Docker、旧版 CNI)在主机生命周期早期加载了 ebtables,则易受攻击的代码仍在内核 RAM 中处于活动状态。

零停机解除武装需要两步序列:

  1. 驱逐: 从内核内存中卸载当前驻留的模块。
  2. 密封: 配置 /bin/true 加载器覆盖以防止重新加载。

2. 实现

root@kitploit:~
# Step A: Evict active ebtables modules from running kernel RAM
sudo modprobe -r ebtable_nat ebtable_filter ebtable_broute ebt_snat ebt_dnat ebt_arpreply ebtables 2>/dev/null || true

# Step B: Seal the loader via /etc/modprobe.d/blacklist-ebtables.conf
sudo tee /etc/modprobe.d/blacklist-ebtables.conf << 'EOF'
# Mitigation for CVE-2026-53266: Netfilter ARP table corruption
install ebtables /bin/true
install ebtable_nat /bin/true
install ebtable_broute /bin/true
install ebtable_filter /bin/true
install ebt_snat /bin/true
install ebt_dnat /bin/true
install ebt_arpreply /bin/true

blacklist ebtables
blacklist ebtable_nat
blacklist ebt_snat
blacklist ebt_arpreply
EOF

3. 验证

root@kitploit:~
# Test explicit loading:
$ sudo modprobe ebt_snat
$ lsmod | grep ebt
# Output: (Empty - 0 modules resident in kernel memory)

第 2 层:eBPF 系统调用遥测与行为门控(检测)

1. 检测与内联预防

  • Falco eBPF(异步 EDR): 通过现代 eBPF 环形缓冲区挂钩 sys_enter,提供亚毫秒级告警到 SIEM/NATS。它针对零开销可见性进行了优化,无需修改内核控制流。
  • 内联阻断(同步 LSM): 对于需要同步拒绝(-EACCES)的环境,eBPF LSM 探针或 SECCOMP 配置文件可以在执行前丢弃系统调用。

2. 修正后的 kTLS 系统调用机制(两阶段门控)

在 TCP 连接上启用内核 TLS 发生在两个不同的阶段:

  1. 阶段 1(附加): setsockopt(fd, SOL_TCP=6, TCP_ULP=31, "tls", 4) 附加上层协议。
  2. 阶段 2(配置): setsockopt(fd, SOL_TLS=282, TLS_TX/TLS_RX, ...) 初始化加密密钥。

仅过滤 SOL_TLS (282) 会遗漏 ULP 附加阶段。该规则评估两个阶段:

root@kitploit:~
# falco-rules-kernel-cve.yaml
customRules:
  rules-kernel-cve.yaml: |-
    - rule: Detect AF_ALG Crypto Socket Creation (CVE-2025-39964)
      desc: Detects creation of Crypto API Netlink sockets used in local privilege escalation
      condition: evt.type = socket and evt.rawarg.domain = 38
      output: "Active Exploit Probe: AF_ALG socket requested (domain=%evt.rawarg.domain type=%evt.rawarg.type user=%user.name proc=%proc.name container=%container.id)"
      priority: WARNING
      tags: [cve, zero-day, cve-2025-39964, crypto, container_escape]

    - rule: Detect Container Kernel TLS Activation (CVE-2025-39682)
      desc: Detects container workloads attaching kTLS TCP_ULP or configuring SOL_TLS
      condition: container.id != host and evt.type = setsockopt and 
                 ((evt.rawarg.level = 6 and evt.rawarg.optname = 31) or (evt.rawarg.level = 282))
      output: "Container kTLS Activation Detected (level=%evt.rawarg.level optname=%evt.rawarg.optname user=%user.name proc=%proc.name container=%container.name)"
      priority: WARNING
      tags: [cve, zero-day, cve-2025-39682, ktls, tcp_ulp]

3. 生产稳定性:Linux 7.0 ABI 过滤器不变量

在现代 Linux 内核(Linux 7.0+ HWE)上,Falco 的用户空间检查器引擎(sinsp)在 openat 参数上遇到寄存器解析不匹配(sinsp_exception: could not parse param 2 (name))。

为确保 DaemonSet 持续稳定而不出现崩溃循环:

root@kitploit:~
falco:
  base_syscalls:
    custom_set: ['!openat']

4. (可选)通过 SECCOMP 实现同步内联阻断

如果必须严格禁止容器内工作负载调用 AF_ALG,请应用返回 SCMP_ACT_ERRNO 的 SECCOMP 配置文件:

root@kitploit:~
{
  "defaultAction": "SCMP_ACT_ALLOW",
  "syscalls": [
    {
      "names": ["socket"],
      "action": "SCMP_ACT_ERRNO",
      "args": [
        {
          "index": 0,
          "value": 38,
          "op": "SCMP_CMP_EQ"
        }
      ]
    }
  ]
}

第 3 层:用户命名空间隔离(遏制)

1. 有界提权与任意 Ring-0 写入

  • 有界权限提升: 大多数 Netlink/套接字 LPE 利用内核逻辑缺陷在进程凭据结构(current->cred)中获取 root。
  • UserNS 防御: 在 containerd v2.2.4 与 Kubernetes CRI v1.30(hostUsers: false)中,容器 root(UID 0)被映射到非特权主机范围(主机 UID 4050714624)。有界凭据提升仍被限制在非 root 命名空间内。
  • 现实边界: 完全任意 ring-0 写入漏洞(直接控制内核指令指针或页表)可以绕过用户命名空间边界;此类威胁需要 microVM 或虚拟机监控程序级隔离(例如 Firecracker、Kata)。

2. 工作负载配置

root@kitploit:~
apiVersion: v1
kind: Pod
metadata:
  name: hardened-workload
spec:
  runtimeClassName: runc
  hostUsers: false  # Remaps container root away from host root
  containers:
  - name: app
    image: app:latest

3. 主机验证

root@kitploit:~
$ cat /proc/$(pgrep -f hardened-workload)/uid_map
         0 4050714624      65536

第 4 层:加密防篡改审计链

1. 防篡改与硬件 WORM

如果攻击者获得不受限制的 ring-0 执行权限,理论上可以修改受损主机上的本地日志文件。真正的不可变性需要一次写入物理介质或加密分发:

  1. 顺序 SHA-256 链: 每条记录都提交前一条记录的哈希: $$\text{Hash}n = \mathcal{H}\left(n \parallel \text{Timestamp} \parallel \text{Topic} \parallel \text{Payload} \parallel \text{Hash}{n-1}\right)$$
  2. 跨节点复制: 日志通过 NATS 流式传输并复制到独立的证明节点(192.0.2.52),防止单个受损主机单方面重写日志。

2. 示例链记录

root@kitploit:~
{
  "index": 386200,
  "timestamp": "2026-09-22T08:58:36.564478+00:00",
  "topic": "sovereign.security.alert",
  "prev_hash": "b2f6ef1e467cf8402da283f58e470ee64993a479a957a0914ec8c351be7fa83d",
  "hash": "cece8f9bd8839d3753232dd7e504c538a0f58fe0bcf2e260fbefb7d27e77b8cf",
  "data": {
    "output": "Active Exploit Probe: AF_ALG socket requested (domain=38 type=5 user=root ...)",
    "priority": "Warning",
    "rule": "Detect AF_ALG Crypto Socket Creation (CVE-2025-39964)"
  }
}

实证验证与遥测

验证是在非特权测试容器中使用合成的 AF_ALG 套接字分配进行的:

root@kitploit:~
import socket
# Requests AF_ALG Netlink family (domain 38, SOCK_SEQPACKET 5)
s = socket.socket(38, socket.SOCK_SEQPACKET, 0)

事件生命周期:

  1. 内核系统调用: socket(38, 5, 0) 调用 sys_enter_socket。
  2. eBPF 评估(< 1ms): 现代 eBPF 跟踪点评估 domain == 38 并将事件提交到环形缓冲区。
  3. 管道分发(2ms): Falco 向 Falcosidekick webhook(:9876)发出告警。
  4. NATS 分发(4ms): 转发器守护进程将事件广播到 sovereign.security.alert。
  5. 账本密封(12ms): 审计守护进程将记录追加到 SHA-256 加密链。
  6. 加密验证:
    root@kitploit:~
    $ python3 fsm_audit_vault.py --verify
    # Verified 386,213 records. Zero tampering detected.
    

仓库结构与可部署工件

本仓库包含可立即部署的生产就绪配置:

root@kitploit:~
|-- etc/
|   \-- modprobe.d/
|       \-- blacklist-ebtables.conf     # Modprobe loader override
|-- helm/
|   |-- falco-rules-kernel-cve.yaml     # Falco modern eBPF rules (CO-RE)
|   \-- README.md                       # One-line Helm deployment guide
|-- k8s/
|   \-- pod-userns-hardened.yaml        # containerd v2.2.4 UserNS manifest
|-- scripts/
|   |-- evict-and-harden.sh             # Two-step module eviction & sealing
|   \-- verify-mitigation.sh            # Automated verification & CI test suite
|-- seccomp/
|   \-- seccomp-block-af-alg.json       # Inline SECCOMP blocking profile (EACCES)
|-- vault/
|   \-- audit_vault.py                  # Cryptographic SHA-256 hash-chain engine
|-- README.md
\-- LICENSE

SRE 与系统架构师要点

  1. 补偿控制弥合补丁缺口: 当活动内核零日漏洞被武器化时,在等待上游发行版包验证期间,立即部署加载器和运行时控制。
  2. 活动模块驱逐是强制性的: Modprobe 覆盖仅影响未来的加载器请求;始终通过 lsmod 验证运行内存,并显式驱逐驻留模块(modprobe -r)。
  3. kTLS 的两阶段门控: kTLS 的安全规则必须同时评估 TCP_ULP 附加(SOL_TCP=6、optname=31)和选项初始化(SOL_TLS=282)。
  4. 用户命名空间限制权限提升: 将 Kubernetes 工作负载与 containerd 用户命名空间(hostUsers: false)配对,可阻止容器级权限提升轻易获取主机 ring-0 root。
  5. 将 EDR 与内联执行解耦: 使用异步 eBPF(Falco)实现低开销集群可观测性,并在必须零微秒终止时使用同步 LSM / SECCOMP。

由 Sovereign Systems & Security Architecture Team 维护。
已在 Linux HWE 和 Kubernetes CRI v1.30(containerd v2.2+)上进行生产测试。

下载工具