仅用于教育目的。未经明确授权,请勿在系统上使用。
| 字段 | 值 |
|---|---|
| CVE | CVE-2026-31431 |
| 别名 | Copy Fail |
| CVSS | 7.8 (高) |
| 类型 | 本地权限提升 (LPE) |
| 受影响内核 | 2017 – 2026 (commit 72548b093ee3 及之后) |
| 上游修复 | commit a664bf3d603d (2017年的回退) |
| 披露日期 | 2026年4月29日 (Theori / Xint Code) |
Copy Fail 是一个逻辑性的确定性漏洞(不需要条件竞争)存在于Linux内核的加密子系统中。它允许无权限用户在系统的任何可读文件的页缓存中写入4个可控字节,包括像su或sudo这样的setuid二进制文件。
与先前类似的漏洞相比:
Linux kernel — crypto/authencesn.c
└── algif_aead (módulo AF_ALG)
└── in-place optimization (commit 72548b093ee3, 2017)
└── AEAD scratch write → cruza boundary del scatterlist
└── escribe 4 bytes en page cache de archivo externo
受影响发行版: Ubuntu、Debian、RHEL、Amazon Linux、SUSE、Fedora、Arch、AlmaLinux — 任何内核版本≥2017的发行版。
2017年引入了一项优化,使得req->src和req->dst指向同一个组合的scatterlist。这导致来自splice()的页缓存页面直接链入到可写的目标scatterlist中。
1. 使用authencesn算法打开AF_ALG socket
2. 使用splice()将目标二进制文件的页缓存页面喂入AF_ALG socket(例如:/usr/bin/sudo)
3. 执行AEAD解密操作
4. authencesn使用目标缓冲区作为草稿空间 → 将seqno_hi(4个可控字节)写入合法输出之外,跨越scatterlist边界
5. 这4个字节落在目标二进制文件的页缓存页面中
6. 磁盘上的文件未改变 → 完整性检查未检测到任何内容
7. 内存中修改的二进制文件执行payload → root
写入操作绕过了正常的VFS写入路径。磁盘上的文件保持完整。像sha256sum、aide、tripwire或inotify这样的工具无法检测到更改,因为它们操作的是磁盘上的文件或inode,而不是内存中的页缓存。
本实验室使用易受攻击的内核来演示页缓存损坏。在Docker环境中,完整的权限提升取决于主机的配置(共享内核)。
# Clonar el repo
cd cve-2026-31431
# Construir la imagen vulnerable
docker build -t copyfail-lab -f docker/Dockerfile.vulnerable .
# Ejecutar el lab
docker run --rm -it \
--cap-add=NET_ADMIN \
--security-opt seccomp=unconfined \
copyfail-lab bash
# Dentro del contenedor:
cd /lab
python3 exploit/poc.py
os.splice)参见 exploit/poc.py 和 exploit/README.md。
PoC 展示了:
有关详细说明,请参见 mitigation/README.md。
TL;DR — 立即缓解(无需重启):
# Deshabilitar el módulo afectado
echo "install algif_aead /bin/false" | sudo tee /etc/modprobe.d/disable-algif.conf
sudo modprobe -r algif_aead 2>/dev/null || true
最终修复: 将内核更新到已修补的版本(a664bf3d603d之后)。
cve-2026-31431/
├── README.md ← este archivo
├── docs/
│ ├── technical-analysis.md ← análisis técnico profundo
│ └── affected-kernels.md ← tabla de versiones afectadas/parcheadas
├── exploit/
│ ├── README.md ← documentación del PoC
│ └── poc.py ← proof of concept (Python 3.10+)
├── mitigation/
│ ├── README.md ← guía de mitigación
│ ├── disable-algif.conf ← modprobe config
│ └── check-vulnerable.sh ← script de detección
├── docker/
│ ├── Dockerfile.vulnerable ← lab vulnerable
│ └── Dockerfile.patched ← lab con mitigación aplicada
└── scripts/
└── setup-lab.sh ← automatización del lab
a664bf3d603d| 漏洞 | 类型 | 需要竞争? | 可移植? | 利用大小 |
|---|
| Dirty Cow (CVE-2016-5195) | CoW race | 是 | 部分 | ~KB |
| Dirty Pipe (CVE-2022-0847) | pipe buffer | 否 | 受限 | ~KB |
| Copy Fail (CVE-2026-31431) | 逻辑 | 否 | 完全 | 732 bytes |
| 日期 | 事件 |
|---|
| 2017 | Commit 72548b093ee3 在内核中引入了该漏洞 |
| ~2025 | Theori/Xint Code 开始分析加密子系统 |
| 2026年4月28日 | 与发行商协调 |
| 2026年4月29日 | 公开披露 + PoC发布 |
| 2026年5月1日 | 补丁内核在生产仓库中可用 |
| 2026年5月1日 | 添加到CISA KEV目录 |