文章总结: CVE-2026-31431是Linux内核crypto子系统中algifaead模块的高危逻辑漏洞(CVSS7.8),源于in-place操作处理缺陷。攻击者可通过AFALG套接字结合splice()实现对页面缓存的受控写入,本地普通用户可精准修改setuid二进制文件完成权限提升。漏洞影响2017年后多数主流Linux发行版,利用门槛低且已有公开PoC。建议立即升级内核或临时禁用algif_aead模块阻断利用路径。 综合评分: 87 文章分类: 漏洞预警,漏洞分析,Linux,应急响应,解决方案
【漏洞预警】CVE-2026-31431 Linux内核crypto:algif_aead逻辑漏洞 本地权限提升分析
Ots安全
2026年4月30日 18:19 广东
在小说阅读器读本章
去阅读
威胁简报
恶意软件
漏洞攻击
CVE-2026-31431 是Linux内核加密子系统(crypto)中algif_aead模块的一个逻辑漏洞,CVSS v3基础评分为7.8(High)。该漏洞源于内核对AEAD(Authenticated Encryption with Associated Data)套接字接口中in-place操作处理的复杂性引入的问题,攻击者可利用AF_ALG接口结合splice()实现对页面缓存(page cache)的受控写入,从而在本地未授权情况下完成权限提升。
受影响范围广泛,涵盖2017年以来发布的大多数主流Linux发行版(包括Ubuntu、RHEL、Amazon Linux、SUSE等)的未打补丁内核版本。漏洞利用门槛较低,已有公开的短小PoC脚本,可在数秒内完成从普通用户到root的提权。
漏洞概况与影响
- 漏洞类型:逻辑错误(Logic Bug),页面缓存写原语(page cache write primitive)
- 触发路径:AF_ALG套接字(algif_aead) + authencesn模板 + splice()操作
- 核心成因:内核早期引入的in-place操作优化(commit 72548b093ee3)在源和目的处于不同内存映射时未提供实际收益,反而增加了内存处理复杂度,导致可控的4字节页面缓存写入。
- 影响:本地普通用户可针对任意可读文件(如setuid-root二进制)的页面缓存进行精确修改,实现后门植入或权限劫持。
该漏洞被社区称为“Copy Fail”,其显著特点是利用代码极简(部分PoC仅10余行Python),且跨多个发行版有效。
漏洞成因简要分析
Linux内核crypto子系统的algif_aead接口原本尝试支持in-place操作以优化性能。但由于AF_ALG套接字的源数据和目的数据通常来自不同映射,in-place路径并无明显优势,反而引入了scatterlist处理中的边界条件问题。
攻击者可通过构造特定的sendmsg()和splice()调用,利用authencesn模板的scratch write行为,将攻击者控制的字节写入目标文件的页面缓存页。该写操作具有确定性和可控性,可精准修改目标二进制文件的特定偏移处内容。
公开利用过程(中性技术描述)
公开的利用路径主要依赖以下步骤(基于公开技术分析,非完整攻击代码):
- 初始化AF_ALG套接字:创建AF_ALG类型套接字,绑定到“aead”类型和特定加密模板(如authencesn(hmac(sha256),cbc(aes)))。
- 构造关联数据(AAD):利用AAD字段携带攻击者希望写入的受控字节。
- 结合splice()操作:通过splice()将数据映射到目标文件的页面缓存,实现从用户态到内核页面缓存的定向写入。
- 针对setuid二进制修改:常见利用目标为/usr/bin/su等setuid-root文件,在其页面缓存中修改关键指令或数据,实现执行时提权。
整个过程利用内核页面缓存机制的特性,无需传统内存破坏或ROP链,属于纯逻辑利用。公开PoC通常以Python脚本形式呈现,可快速修改目标二进制并触发root shell。
注意:本文不提供可直接编译运行的完整EXP代码。公开仓库中存在短小脚本示例,研究人员可自行在隔离测试环境中参考其原理进行分析。
受影响产品与版本
- 受影响内核:包含漏洞引入commit且未应用修复补丁的版本(大致2017年后内核)。
- 主流发行版:Ubuntu、Debian、RHEL、CentOS、Amazon Linux、SUSE等多数长期支持版本。
- 检测建议:检查内核是否加载algif_aead模块,或通过uname -r确认内核版本并对比上游修复状态。
检测规则参考(YARA/Sigma思路)
可关注以下行为模式:
- 对AF_ALG套接字的异常创建与bind操作(尤其是aead类型 + authencesn模板)
- 高频splice()与sendmsg()组合调用
- 对setuid二进制文件的页面缓存修改痕迹(可通过文件完整性监控或内存异常写检测)
修复建议与缓解措施(优先级排序)
立即升级内核:应用上游修复补丁(已回滚至out-of-place操作,移除不必要的in-place复杂度)。
临时禁用模块(缓解措施):
echo "install algif_aead /bin/false" > /etc/modprobe.d/disable-algif.conf
rmmod algif_aead 2>/dev/null || true
此配置可阻止algif_aead模块加载,有效阻断利用路径。
总结
CVE-2026-31431再次提醒我们,内核中看似简单的优化变更也可能引入高危逻辑漏洞。该漏洞的低门槛利用特性使其在共享主机、多租户环境中的风险尤为突出。建议所有运行受影响内核的系统尽快完成补丁部署或启用缓解配置。
本文基于公开情报与技术分析整理,仅供学习与研究交流。实际环境中请以官方补丁为准,严格遵循合规要求进行安全加固。
EXP:
https://github.com/rootsecdev/cve_2026_31431
END
公众号内容都来自国外平台-所有文章可通过点击阅读原文到达原文地址或参考地址
排版 编辑 | Ots 小安
采集 翻译 | Ots Ai牛马
公众号 | AnQuan7 (Ots安全)
免责声明:
本文所载程序、技术方法仅面向合法合规的安全研究与教学场景,旨在提升网络安全防护能力,具有明确的技术研究属性。
任何单位或个人未经授权,将本文内容用于攻击、破坏等非法用途的,由此引发的全部法律责任、民事赔偿及连带责任,均由行为人独立承担,本站不承担任何连带责任。
本站内容均为技术交流与知识分享目的发布,若存在版权侵权或其他异议,请通过邮件联系处理,具体联系方式可点击页面上方的联系我。
本文转载自:Ots安全 《【漏洞预警】CVE-2026-31431 Linux内核crypto:algif_aead逻辑漏洞 本地权限提升分析》
版权声明
本站仅做备份收录,仅供研究与教学参考之用。
读者将信息用于其他用途的,全部法律及连带责任由读者自行承担,本站不承担任何责任。









评论