
Proporciona un parche de kernel precompilado para CVE-2026-31431 (Copy Fail) en SBCs RK35xx que ejecutan Ubuntu 24.04, con instrucciones de instalación y transparencia de compilación.
Hotfix RK35xx CopyFail: Parche CVE-2026-31431 para Ubuntu 24.04 de Joshua Riek

Un parche de kernel precompilado y proporcionado por la comunidad para todas las placas de un solo chip RK35xx (Rock 5, Orange Pi 5, NanoPC, etc.) que ejecutan Ubuntu 24.04 de Joshua Riek (Kernel 6.1.0-1025-rockchip).
El 29 de abril de 2026, se reveló una vulnerabilidad de escalada de privilegios local (LPE) de alta gravedad conocida como "Copy Fail" (CVE-2026-31431).
El fallo reside en el subsistema criptográfico del kernel (crypto/algif_aead.c). Al encadenar una operación de socket AF_ALG con la llamada al sistema splice(), un usuario local sin privilegios puede forzar una escritura de copia cero directamente en la caché de páginas del kernel, lo que les permite sobrescribir binarios setuid-root en memoria y obtener acceso root instantáneo.
Debido a la configuración del kernel (CONFIG_CRYPTO_USER_API_AEAD=y), las estrategias estándar de mitigación con modprobe no funcionan en esta compilación.
Se requiere un parche del kernel a nivel de código fuente.
Con el repositorio upstream de Joshua Riek actualmente inactivo, los usuarios quedan atrapados en un kernel vulnerable.
Como seguidores de larga data de la comunidad de SBC y IA perimetral, Qengineering ha adaptado manualmente el parche mainline de Linux (commit a664bf3d603d), recompilado el kernel desde la etiqueta de fuente exacta Ubuntu-rockchip-6.1.0-1025.25, y lo ha empaquetado aquí para su implementación inmediata.
Todas las funciones originales de aceleración de hardware NPU, VPU y red están 100% preservadas.
Las imágenes de Ubuntu de Joshua Riek utilizan un entorno U-Boot estrictamente personalizado que requiere imágenes de kernel sin comprimir (raw) y un mapeo específico de device tree. Nosotros hemos manejado la compilación; solo necesitas ejecutar los siguientes comandos para instalar el parche.
1. Descarga los archivos requeridos: Descarga estos tres archivos a tu placa:
linux-image-6.1.75-copyfail-patched_*.deblinux-headers-6.1.75-copyfail-patched_*.debImage (El kernel sin comprimir, raw)git clone https://github.com/Qengineering/RK35xx-CopyFail-Hotfix.git
2. Abre una terminal en la carpeta que contiene tus descargas y ejecuta este bloque de comandos:
cd RK35xx-CopyFail-Hotfix
# 1. Instala los paquetes Debian (Esto configura módulos e initramfs)
sudo dpkg -i linux-image-6.1.75-copyfail-patched_*.deb
sudo dpkg -i linux-headers-6.1.75-copyfail-patched_*.deb
# 2. Sobrescribe el kernel comprimido con la imagen raw sin comprimir requerida por U-Boot
sudo cp Image /boot/vmlinuz-6.1.75-copyfail-patched
# 3. Transfiere tus device trees de hardware existentes
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. Regenera la configuración del bootloader
sudo u-boot-update
# 5. Reinicia tu sistema
sudo reboot
Para los usuarios que prefieren no instalar binarios precompilados, puedes reproducir esta compilación exacta en tu propia placa.
Debido a las modificaciones del SDK de Rockchip, el parche mainline upstream no se aplica limpiamente mediante git. Requiere una edición manual del código.
# 1. Clona el repositorio y haz checkout de la etiqueta específica
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. Parchea manualmente la vulnerabilidad
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
# Abre copy-fail.patch e implementa cuidadosamente los cambios de código.
# 3. Copia tu configuración de hardware activa
cp /boot/config-6.1.0-1025-rockchip .config
make olddefconfig
# 4. Compila los paquetes (Tarda ~45-60 minutos en la Rock 5C)
make -j$(nproc) bindeb-pkg LOCALVERSION=-copyfail-patched
# 5. Sigue las Instrucciones de Instalación anteriores, usando tus archivos .deb recién compilados
# y la Image sin comprimir que se encuentra en arch/arm64/boot/Image.