RK35xx CopyFail 热修复:适用于 Joshua Riek 的 Ubuntu 24.04 的 CVE-2026-31431 补丁

一个由社区提供的、预编译的内核补丁,适用于运行 Joshua Riek 的 Ubuntu 24.04(内核 6.1.0-1025-rockchip)的所有 RK35xx 单板计算机(Rock 5、Orange Pi 5、NanoPC 等)。
2026 年 4 月 29 日,一个名为 “Copy Fail”(CVE-2026-31431) 的高危本地权限提升(LPE)漏洞被公开披露。
该缺陷位于内核的加密子系统(crypto/algif_aead.c)中。通过将 AF_ALG 套接字操作与 splice() 系统调用串联使用,非特权本地用户可以强制将零拷贝写入直接注入内核的页缓存,从而允许他们在内存中覆盖 setuid-root 二进制文件并立即获得 root 访问权限。
由于内核配置(CONFIG_CRYPTO_USER_API_AEAD=y),标准的 modprobe 缓解策略在此构建版本上无效。
需要应用源码级内核补丁。
由于上游 Joshua Riek 仓库目前处于不活跃状态,用户只能停留在存在漏洞的内核版本上。
作为 SBC 和边缘 AI 社区的长期支持者,Qengineering 手动移植了主线 Linux 修复(提交 a664bf3d603d),从确切的 Ubuntu-rockchip-6.1.0-1025.25 源码标签重新编译了内核,并将其打包在此处以供立即部署。
所有原始的 NPU、VPU 和网络硬件加速功能均 100% 保留。
Joshua Riek 的 Ubuntu 镜像使用严格定制的 U-Boot 环境,该环境要求使用原始(未压缩)内核镜像和特定的设备树映射。我们已经完成了编译工作;您只需运行以下命令即可安装补丁。
1. 下载所需文件: 将以下三个文件下载到您的开发板上:
linux-image-6.1.75-copyfail-patched_*.deblinux-headers-6.1.75-copyfail-patched_*.debImage(原始、未压缩的内核)git clone https://github.com/Qengineering/RK35xx-CopyFail-Hotfix.git
2. 在包含下载文件的文件夹中打开终端,并运行以下命令块:
cd RK35xx-CopyFail-Hotfix
# 1. 安装 Debian 软件包(这将配置模块和 initramfs)
sudo dpkg -i linux-image-6.1.75-copyfail-patched_*.deb
sudo dpkg -i linux-headers-6.1.75-copyfail-patched_*.deb
# 2. 用 U-Boot 所需的原始、未压缩 Image 覆盖压缩内核
sudo cp Image /boot/vmlinuz-6.1.75-copyfail-patched
# 3. 移植您现有的硬件设备树
sudo mkdir -p /lib/firmware/6.1.75-copyfail-patched/
sudo cp -r /lib/firmware/6.1.0-1025-rockchip/device-tree /lib/firmware/6.1.75-copyfail-patched/
# 4. 重新生成引导加载程序配置
sudo u-boot-update
# 5. 重启您的系统
sudo reboot
对于不希望安装预编译二进制文件的用户,您可以在自己的开发板上复现此确切构建。
由于 Rockchip SDK 的修改,上游主线补丁无法通过 git 干净地应用。它需要手动编辑代码。
# 1. 克隆仓库并检出特定标签
git clone [https://github.com/Joshua-Riek/linux-rockchip.git](https://github.com/Joshua-Riek/linux-rockchip.git)
cd linux-rockchip
git checkout Ubuntu-rockchip-6.1.0-1025.25
git switch -c copyfail-patch-build
# 2. 手动修补漏洞
wget "[https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/patch/?id=a664bf3d603dc3bdcf9ae47cc21e0daec706d7a5](https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/patch/?id=a664bf3d603dc3bdcf9ae47cc21e0daec706d7a5)" -O copy-fail.patch
# 打开 copy-fail.patch,并仔细实施代码修改。
# 3. 复制您当前的硬件配置
cp /boot/config-6.1.0-1025-rockchip .config
make olddefconfig
# 4. 编译软件包(在 Rock 5C 上大约需要 45-60 分钟)
make -j$(nproc) bindeb-pkg LOCALVERSION=-copyfail-patched
# 5. 按照上述安装说明操作,使用您新编译的 .deb 文件
# 以及位于 arch/arm64/boot/Image 的未压缩 Image。