Linux提权漏洞二进制版CVE-2026-31431

admin 2026-05-01 05:52:20 网络安全文章 来源:ZONE.CI 全球网 0 阅读模式

文章总结: 本文分析了Linux内核AF_ALG子系统的提权漏洞CVE-2026-31431。该漏洞利用sendmsg与splice触发内核状态混乱导致越界读写或UAF,影响多个主流发行版。作者用Golang重写利用代码并编译为多架构二进制文件,便于生产环境测试。建议通过升级内核、seccomp限制及异常行为监控进行缓解。 综合评分: 80 文章分类: 漏洞分析,漏洞POC,二进制安全


cover_image

Linux提权漏洞二进制版CVE-2026-31431

原创

zngeek zngeek

蓝极战队

2026年4月30日 13:52 贵州

在小说阅读器读本章

去阅读

用golang重写该漏洞exp,直接编译成二进制文件,方便在各种生产环境进行直接测试。

编译了amd64和arm64两个二进制文件

#

Copy Fail – CVE-2026-31431

Linux 内核 AF_ALG 加密 Socket 子系统漏洞的概念验证利用代码。

技术分析

受影响的发行版

| 发行版 | 内核版本 | | — | — | | Ubuntu 24.04 LTS | 6.17.0-1007-aws | | Amazon Linux 2023 | 6.18.8-9.213.amzn2023 | | RHEL 10.1 | 6.12.0-124.45.1.el10_1 | | SUSE 16 | 6.12.0-160000.9-default |

漏洞原理

该漏洞位于 Linux 内核加密子系统的 AF_ALG(Algorithm)Socket 接口中。当使用 AEAD(带认证的数据加密)算法时,通过 sendmsg(2) 发送控制消息配合 splice(2) 进行数据传输,内核会错误处理内部加密请求状态,导致越界读/写或使用后释放(UAF)条件。

核心机制

  1. 创建 AF_ALG Socket 并绑定到 authencesn(hmac(sha256),cbc(aes)) 算法
  2. 通过 setsockopt 设置构造的密钥结构和认证标签大小
  3. 使用 sendmsg(2) 发送包含三条控制消息(IV、关联数据、认证大小)的数据包
  4. 通过 splice(2) 将目标文件数据经管道传入 Socket,触发内核状态混乱
  5. 分块迭代完成利用后执行提权操作

项目结构

├── copy_fail_exp.go          # Go 语言实现(主文件)
├── pybak/
│   ├── copy_fail_exp.py      # 原始 Python 实现(10 行压缩版)
│   └── README.md             # 原始项目说明
├── build/                    # 编译产物
│   ├── CVE-2026-31431_linux_amd64
│   └── CVE-2026-31431_linux_arm64
├── Makefile                  # 构建脚本
├── go.mod                    # Go 模块定义
└── README.md                 # 本文件

构建

环境要求

  • Go 1.22+
  • Linux 内核(支持 AF_ALG crypto API)

编译命令

# 编译当前平台
go build -o CVE-2026-31431 .

# 交叉编译所有 Linux 平台(amd64, arm64, 386)
make build-linux

# 直接运行
make run
# 或
go run .

# 清理
make clean

构建产物输出到 build/ 目录,二进制文件经过 strip 裁剪。

技术参考

关键常量

| 常量 | 值 | 说明 | | — | — | — | | AF_ALG | 38 | 算法 Socket 族 | | SOL_ALG | 279 | ALG Socket 选项级别 | | ALG_SET_KEY | 1 | 设置密钥 | | ALG_SET_AEAD_AUTHSIZE | 5 | 设置 AEAD 认证大小 | | MSG_MORE | 32768 | 发送标志:后续还有数据 |

控制消息

每次 sendmsg 发送三条 cmsghdr 控制消息(level 279):

| 类型 | 数据 | 用途 | | — | — | — | | 3 | 4 字节零 | IV | | 2 | 0x10 + 19 字节零 | 关联数据 (AAD) | | 4 | 0x08 + 3 字节零 | 认证标签大小 |

缓解措施

  • 升级到已修复此漏洞的内核版本
  • 通过 seccomp 或 LSM 限制 AF_ALG Socket 访问
  • 监控加密 Socket 上的异常 splice(2) 行为

免责声明

本代码及程序仅供安全研究和教育目的使用,仅应在授权的安全测试环境中运行。作者不对任何滥用行为负责。

下载地址:

关注本公众号回复 CVE-2026-31431 即可下载


免责声明:

本文所载程序、技术方法仅面向合法合规的安全研究与教学场景,旨在提升网络安全防护能力,具有明确的技术研究属性。

任何单位或个人未经授权,将本文内容用于攻击、破坏等非法用途的,由此引发的全部法律责任、民事赔偿及连带责任,均由行为人独立承担,本站不承担任何连带责任。

本站内容均为技术交流与知识分享目的发布,若存在版权侵权或其他异议,请通过邮件联系处理,具体联系方式可点击页面上方的联系我

本文转载自:蓝极战队 zngeek zngeek《Linux提权漏洞二进制版CVE-2026-31431》

评论:0   参与:  0