
# Guía de actualización del kernel de Linux - Corrección de CVE-2026-64561
Aviso: Este repositorio solo documenta mi proceso personal de corrección en un entorno de servidor específico. No es un análisis de seguridad profesional. Se aceptan correcciones.
Esta guía ofrece dos métodos para actualizar el kernel de Linux y corregir CVE-2026-64561: instalación de RPM desde ELRepo (recomendada) y compilación desde el código fuente.
| Elemento | Descripción |
|---|
| ID de CVE | CVE-2026-64561 |
| Componente afectado | Linux Kernel KVM/x86 |
| Método de corrección | Actualizar el kernel de Linux (RPM de ELRepo o compilación desde el código fuente) |
Esta guía ofrece dos métodos de actualización. Elija según su entorno:
Para entornos con acceso fiable al repositorio ELRepo. No se requiere compilación.
Referencia del método A: 魔方云商家可将CentOS系宿主机内核升级至7.1.6以避免CVE-2026-64561漏洞(Autor: 欢-Huan)
Entorno del sistema:
| Elemento | Información |
|---|---|
| SO | CentOS Stream 8 |
| Kernel original | 4.18.0-552.el8.x86_64 |
| Kernel objetivo | 7.1.6-1.el8.elrepo.x86_64 |
| Fuente del kernel | ELRepo kernel-ml |
Entorno de hardware (configuración del autor, solo como referencia):
| Elemento | Información |
|---|---|
| CPU | AMD Ryzen 9 9950X |
| Propósito | Host KVM / LXD |
| NIC | Realtek r8126 (controlador de terceros) |
Nota: Este es un controlador de NIC para placas base MSI. Las máquinas que puedan conectarse a la red sin controladores especiales no necesitan este paso. Busque el controlador correspondiente para su NIC.
Ruta de actualización:
4.18.0-552.el8
↓
7.1.6-1.el8.elrepo
Si ELRepo ya está instalado, omita este paso.
# Importar la clave GPG de ELRepo
rpm --import https://www.elrepo.org/RPM-GPG-KEY-elrepo.org
# Instalar el repositorio ELRepo
dnf install -y https://www.elrepo.org/elrepo-release-8.el8.elrepo.noarch.rpm
Comprobar:
# Comprobar si el repositorio ELRepo se ha añadido
dnf repolist | grep elrepo
# Listar las versiones disponibles de kernel-ml
dnf --enablerepo=elrepo-kernel list kernel-ml --showduplicates
Confirmar que existe:
kernel-ml.x86_64 7.1.6-1.el8.elrepo
# Instalar el cuerpo, el núcleo y los módulos del kernel
dnf --enablerepo=elrepo-kernel install -y \
kernel-ml-7.1.6-1.el8.elrepo.x86_64 \
kernel-ml-core-7.1.6-1.el8.elrepo.x86_64 \
kernel-ml-modules-7.1.6-1.el8.elrepo.x86_64
Compilar controladores de terceros (si es necesario):
# Instalar el paquete de desarrollo del kernel para controladores de terceros
dnf --enablerepo=elrepo-kernel install -y \
kernel-ml-devel-7.1.6-1.el8.elrepo.x86_64
# Ver los paquetes kernel-ml instalados
rpm -qa | grep kernel-ml
Comprobar grub:
# Ver la lista de kernels en grub
grubby --info=ALL | grep title
# Ver todos los kernels disponibles
grubby --info=ALL | grep kernel
Establecer:
# Establecer el kernel de arranque predeterminado
grubby --set-default /boot/vmlinuz-7.1.6-1.el8.elrepo.x86_64
Confirmar:
# Verificar el kernel predeterminado
grubby --default-kernel
# Comprobar el estado guardado del entorno de grub
grub2-editenv list
# Reiniciar el servidor
reboot
Comprobar:
# Ver la versión actual del kernel
uname -r
Salida esperada:
7.1.6-1.el8.elrepo.x86_64
Nota: Este es un controlador de NIC para placas base MSI. Las máquinas que puedan conectarse a la red sin controladores especiales no necesitan este paso. Busque el controlador correspondiente para su NIC.
# Ver la información de versión del controlador r8126
modinfo r8126 | grep vermagic
Si no es:
7.1.6-1.el8.elrepo.x86_64
Es necesario recompilar.
Nota: Este es un controlador de NIC para placas base MSI. Las máquinas que puedan conectarse a la red sin controladores especiales no necesitan este paso. Busque el controlador correspondiente para su NIC.
# Entrar en el directorio de código fuente del controlador
cd /root/qudong_backup/r8126-10.016.00
# Limpiar los artefactos de compilación antiguos
make clean
# Compilar el controlador
make
# Instalar el controlador
make install
# Regenerar las dependencias de módulos
depmod -a
# Cargar el controlador
modprobe r8126
Comprobar:
# Confirmar que el controlador está cargado
lsmod | grep r8126
El kernel 7.1.x incluye el nuevo KVM/MMU:
CONFIG_KVM_GUEST_MEMFD=y
CONFIG_KVM_GENERIC_MMU_NOTIFIER=y
CONFIG_KVM_MM_U_LOCKLESS_AGING=y
CONFIG_KVM_EXTERNAL_WRITE_TRACKING=y
CONFIG_KVM_MAX_NR_VCPUS=4096
# Ver todos los kernels disponibles
grubby --info=ALL | grep kernel
Restaurar el kernel anterior:
# Establecer el kernel anterior como entrada de arranque predeterminada
grubby --set-default /boot/vmlinuz-4.18.0-552.el8.x86_64
Ruta de actualización:
CentOS Stream 8
↓
Linux 4.18
↓
ELRepo kernel-ml 7.1.6
Resultado:
✅ Actualizado a Linux 7.1.6
✅ Subsistema KVM/MMU actualizado
✅ Mejor soporte de hardware nuevo
✅ Se conserva la capacidad de reversión al kernel anterior
Notas:
Para entornos sin acceso a ELRepo, o cuando se requiera la versión estable oficial de kernel.org. Consulte los pasos detallados a continuación.
| Elemento | Información |
|---|---|
| SO | CentOS Stream 8 |
| Arquitectura | x86_64 |
| Virtualización | KVM Intel |
| Kernel original | 6.18.8-1.el8.elrepo.x86_64 |
| Kernel en ejecución | 7.1.3 |
| Kernel final | 7.1.7 |
Comprobar el entorno actual:
cat /etc/os-release
uname -r
En mi entorno:
Por lo tanto:
Utilicé el código fuente estable oficial de kernel.org y compilé el kernel 7.1.7 manualmente.
Nota:
Esta es una solución para mi propio entorno, no un método de actualización obligatorio para todos los sistemas.
# Entrar en el directorio de código fuente
cd /usr/src
# Descargar el código fuente de Linux 7.1.7
wget https://cdn.kernel.org/pub/linux/kernel/v7.x/linux-7.1.7.tar.xz
# Extraer el código fuente
tar -xf linux-7.1.7.tar.xz
# Entrar en el directorio de código fuente
cd /usr/src/linux-7.1.7
# Verificar la integridad del código fuente
ls Makefile
Salida esperada:
Makefile
Dado que el kernel 7.1.3 compilado desde el código fuente no generó:
/boot/config-7.1.3
Utilice la configuración guardada de la compilación anterior:
# Comprobar si existe la configuración anterior
ls -lh /usr/src/linux-7.1.3/.config
Se confirmó que existe:
/usr/src/linux-7.1.3/.config
# Copiar la configuración anterior al directorio del nuevo kernel
cp /usr/src/linux-7.1.3/.config /usr/src/linux-7.1.7/.config
# Entrar en el directorio de código fuente del nuevo kernel
cd /usr/src/linux-7.1.7
# Generar una nueva configuración basada en la anterior
make olddefconfig
Salida esperada:
#
# configuration written to .config
#
# Comprobar los elementos de configuración relacionados con KVM
grep -E "CONFIG_KVM|CONFIG_KVM_INTEL" .config
Salida esperada:
CONFIG_KVM_X86=m
CONFIG_KVM=m
CONFIG_KVM_INTEL=m
Explicación:
Cumple con los requisitos actuales del entorno KVM Intel.
# Comprobar el número de núcleos de CPU
nproc
# Compilar usando todas las CPU (ajuste según su número de núcleos)
make -j$(nproc)
# Verificar la imagen del kernel tras la compilación
ls -lh arch/x86/boot/bzImage
Salida esperada:
-rw-r--r-- 1 root root xxM arch/x86/boot/bzImage
Indica que la imagen del kernel se generó correctamente.
# Instalar los módulos del kernel
make modules_install
# Verificar la instalación de los módulos
ls /lib/modules/
Salida esperada:
7.1.7
# Comprobar los módulos de KVM
find /lib/modules/7.1.7 -name "kvm*"
Salida esperada:
/lib/modules/7.1.7/kernel/arch/x86/kvm/kvm.ko
/lib/modules/7.1.7/kernel/arch/x86/kvm/kvm-intel.ko
/lib/modules/7.1.7/kernel/arch/x86/kvm/kvm-amd.ko
Confirmado:
# Instalar el kernel
make install
# Comprobar el resultado de la instalación
ls -lh /boot | grep 7.1.7
Salida esperada:
initramfs-7.1.7.img
System.map-7.1.7
vmlinuz-7.1.7
# Generar la configuración de GRUB
grub2-mkconfig -o /boot/grub2/grub.cfg
# Establecer el kernel de arranque predeterminado
grubby --set-default /boot/vmlinuz-7.1.7
# Verificar el kernel predeterminado
grubby --default-kernel
Salida esperada:
/boot/vmlinuz-7.1.7
# Reiniciar el servidor
reboot
# Ver la versión actual del kernel
uname -r
Salida esperada:
7.1.7
✅ Ejecutando Linux 7.1.7
# Comprobar los módulos de KVM
lsmod | grep kvm
Salida esperada:
kvm_intel
kvm
irqbypass
✅ KVM Intel cargado correctamente
# Comprobar el origen del módulo KVM
modinfo kvm_intel | grep filename
Salida esperada:
filename: /lib/modules/7.1.7/kernel/arch/x86/kvm/kvm-intel.ko
✅ Usando el módulo KVM Intel compilado con 7.1.7
Importante: Los kernels antiguos no deben eliminarse de inmediato.
# Listar los kernels disponibles
grubby --info=ALL | grep kernel
Si el nuevo kernel presenta problemas, establezca el kernel anterior:
# Establecer el kernel anterior como entrada de arranque predeterminada
grubby --set-default /boot/vmlinuz-7.1.3
# Reiniciar para aplicar los cambios
reboot
| Elemento | Antes de la corrección | Después de la corrección |
|---|---|---|
| Linux Kernel | 7.1.3 | 7.1.7 |
| Módulo KVM Intel | 7.1.3 | 7.1.7 |
| CVE-2026-64561 | Existe riesgo | Corregido mediante actualización del kernel |
| Funcionalidad de KVM | Normal | Normal |
Estado final en ejecución:
CentOS Stream 8
x86_64
Kernel:
7.1.7
KVM:
kvm_intel
kvm
irqbypass
Corrección completada.
Conserve temporalmente:
7.1.3
6.18.8-1.el8.elrepo.x86_64
4.18.x
Para poder revertir en caso de problemas.
# Ver los kernels disponibles
grubby --info=ALL | grep kernel
Para futuras actualizaciones, se recomienda guardar:
# Guardar la configuración actual del kernel
cp /usr/src/linux-7.1.7/.config /boot/config-7.1.7
Para actualizaciones posteriores:
# Copiar la configuración al directorio del nuevo kernel
cp /boot/config-7.1.7 /new-kernel-source-directory/.config
Esto permite reutilizar la configuración en el futuro.