
# Guia de Atualização do Kernel Linux - Correção do CVE-2026-64561
Aviso: Este artigo documenta apenas o processo de correção no meu ambiente de servidor; não é uma análise profissional de segurança. Se houver algo inadequado, correções são bem-vindas.
Este documento apresenta duas maneiras de atualizar o Linux Kernel para corrigir a CVE-2026-64561: instalação via RPM do ELRepo (recomendada) e compilação a partir do código-fonte.
| Item | Descrição |
|---|
| ID da CVE | CVE-2026-64561 |
| Componente afetado | Linux Kernel KVM/x86 |
| Método de correção | Atualizar o Linux Kernel (RPM do ELRepo ou compilação do código-fonte) |
Este tutorial oferece duas formas de atualização; escolha de acordo com o seu ambiente:
Indicado para ambientes com acesso estável ao repositório ELRepo; não requer compilação e é simples de operar.
Referência original do Método A: 魔方云商家可将CentOS系宿主机内核升级至7.1.6以避免CVE-2026-64561漏洞(Autor: 欢-Huan)
Ambiente do sistema:
| Item | Informação |
|---|---|
| Sistema operacional | CentOS Stream 8 |
| Kernel original | 4.18.0-552.el8.x86_64 |
| Kernel de destino | 7.1.6-1.el8.elrepo.x86_64 |
| Origem do kernel | ELRepo kernel-ml |
Ambiente de hardware (ambiente do autor deste artigo, apenas para referência):
| Item | Informação |
|---|---|
| CPU | AMD Ryzen 9 9950X |
| Finalidade | Host KVM / LXD |
| Placa de rede | Realtek r8126 (driver de terceiros) |
Nota: Este é o driver da placa de rede de uma placa-mãe MSI. Máquinas que já se conectam à rede sem a necessidade de drivers especiais não precisam desta etapa. Procure o driver correspondente para a sua placa de rede.
Verificar o ambiente atual:
cat /etc/os-release
uname -r
Rota de atualização:
4.18.0-552.el8
↓
7.1.6-1.el8.elrepo
Se o ELRepo já estiver instalado no sistema, pule esta etapa.
# 导入 ELRepo GPG 密钥
rpm --import https://www.elrepo.org/RPM-GPG-KEY-elrepo.org
# 安装 ELRepo 仓库
dnf install -y https://www.elrepo.org/elrepo-release-8.el8.elrepo.noarch.rpm
Verificação:
# 检查 ELRepo 仓库是否已添加
dnf repolist | grep elrepo
# 查看可用的 kernel-ml 版本列表
dnf --enablerepo=elrepo-kernel list kernel-ml --showduplicates
Confirmar que existe:
kernel-ml.x86_64 7.1.6-1.el8.elrepo
# 安装内核本体、核心和模块
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 drivers de terceiros (se necessário):
# 安装内核开发包用于编译第三方驱动
dnf --enablerepo=elrepo-kernel install -y \
kernel-ml-devel-7.1.6-1.el8.elrepo.x86_64
# 查看已安装的 kernel-ml 包
rpm -qa | grep kernel-ml
Verificar o grub:
# 查看 grub 中的内核列表
grubby --info=ALL | grep title
# 查看所有可用内核
grubby --info=ALL | grep kernel
Definir:
# 设置默认启动内核
grubby --set-default /boot/vmlinuz-7.1.6-1.el8.elrepo.x86_64
Confirmar:
# 验证默认内核
grubby --default-kernel
# 检查 grub 环境保存状态
grub2-editenv list
# 重启服务器
reboot
Verificação:
# 查看当前内核版本
uname -r
Saída esperada:
7.1.6-1.el8.elrepo.x86_64
Nota: Este é o driver da placa de rede de uma placa-mãe MSI. Máquinas que já se conectam à rede sem a necessidade de drivers especiais não precisam desta etapa. Procure o driver correspondente para a sua placa de rede.
# 查看 r8126 驱动版本信息
modinfo r8126 | grep vermagic
Se não for:
7.1.6-1.el8.elrepo.x86_64
será necessário recompilar.
Nota: Este é o driver da placa de rede de uma placa-mãe MSI. Máquinas que já se conectam à rede sem a necessidade de drivers especiais não precisam desta etapa. Procure o driver correspondente para a sua placa de rede.
# 进入驱动源码目录
cd /root/qudong_backup/r8126-10.016.00
# 清理旧编译产物
make clean
# 编译驱动
make
# 安装驱动
make install
# 重新生成模块依赖
depmod -a
# 加载驱动
modprobe r8126
Verificação:
# 确认驱动已加载
lsmod | grep r8126
O kernel 7.1.x inclui o novo 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
# 查看所有可用内核
grubby --info=ALL | grep kernel
Restaurar o kernel antigo:
# 设置旧内核为默认启动项
grubby --set-default /boot/vmlinuz-4.18.0-552.el8.x86_64
Rota de atualização:
CentOS Stream 8
↓
Linux 4.18
↓
ELRepo kernel-ml 7.1.6
Resultado:
✅ 升级到 Linux 7.1.6
✅ KVM/MMU 子系统更新
✅ 支持更多新硬件
✅ 保留旧内核回滚能力
Notas:
Indicado para ambientes sem acesso ao repositório ELRepo ou que precisem usar a versão estável (stable) oficial do kernel.org. Veja as etapas detalhadas abaixo.
| Item | Informação |
|---|---|
| Sistema | CentOS Stream 8 |
| Arquitetura | x86_64 |
| Virtualização | KVM Intel |
| Kernel original | 6.18.8-1.el8.elrepo.x86_64 |
| Kernel em execução | 7.1.3 |
| Kernel final | 7.1.7 |
Verificar o ambiente atual:
cat /etc/os-release
uname -r
No meu ambiente de servidor:
Portanto, adotei:
a compilação do código-fonte estável (stable) oficial do kernel.org para atualizar o kernel.
Observação:
Esta solução se aplica apenas ao meu ambiente de servidor; não significa que todos os ambientes devam compilar a partir do código-fonte.
# 进入源码目录
cd /usr/src
# 下载 Linux 7.1.7 源码
wget https://cdn.kernel.org/pub/linux/kernel/v7.x/linux-7.1.7.tar.xz
# 解压源码
tar -xf linux-7.1.7.tar.xz
# 进入源码目录
cd /usr/src/linux-7.1.7
# 确认源码完整
ls Makefile
Saída esperada:
Makefile
Como o kernel 7.1.3 instalado via compilação do código-fonte não gerou:
/boot/config-7.1.3
Portanto, use a configuração salva durante a compilação anterior:
# 检查旧配置是否存在
ls -lh /usr/src/linux-7.1.3/.config
Confirmado que existe:
/usr/src/linux-7.1.3/.config
# 复制旧配置到新内核目录
cp /usr/src/linux-7.1.3/.config /usr/src/linux-7.1.7/.config
# 进入新内核源码目录
cd /usr/src/linux-7.1.7
# 基于旧配置生成新配置
make olddefconfig
Saída esperada:
#
# configuration written to .config
#
# 检查 KVM 相关配置项
grep -E "CONFIG_KVM|CONFIG_KVM_INTEL" .config
Saída esperada:
CONFIG_KVM_X86=m
CONFIG_KVM=m
CONFIG_KVM_INTEL=m
Explicação:
Atende aos requisitos do ambiente KVM Intel atual.
# 查看 CPU 核心数
nproc
# 使用全部 CPU 编译(根据实际核心数调整)
make -j$(nproc)
# 编译完成后验证内核镜像
ls -lh arch/x86/boot/bzImage
Saída esperada:
-rw-r--r-- 1 root root xxM arch/x86/boot/bzImage
Indica que a imagem do kernel foi gerada com sucesso.
# 安装内核模块
make modules_install
# 验证模块安装
ls /lib/modules/
Saída esperada:
7.1.7
# 检查 KVM 模块
find /lib/modules/7.1.7 -name "kvm*"
Saída 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:
# 安装内核
make install
# 检查安装结果
ls -lh /boot | grep 7.1.7
Saída esperada:
initramfs-7.1.7.img
System.map-7.1.7
vmlinuz-7.1.7
# 生成 GRUB 配置
grub2-mkconfig -o /boot/grub2/grub.cfg
# 设置默认启动内核
grubby --set-default /boot/vmlinuz-7.1.7
# 验证默认内核
grubby --default-kernel
Saída esperada:
/boot/vmlinuz-7.1.7
# 重启服务器
reboot
# 查看当前内核版本
uname -r
Saída esperada:
7.1.7
✅ Executando Linux 7.1.7
# 查看 KVM 模块
lsmod | grep kvm
Saída esperada:
kvm_intel
kvm
irqbypass
✅ KVM Intel carregado normalmente
# 查看 KVM 模块来源
modinfo kvm_intel | grep filename
Saída esperada:
filename: /lib/modules/7.1.7/kernel/arch/x86/kvm/kvm-intel.ko
✅ Usando o módulo KVM Intel compilado com o 7.1.7
Importante: Kernels antigos não devem ser removidos imediatamente.
# 列出可用内核
grubby --info=ALL | grep kernel
Se o novo kernel apresentar problemas, defina o kernel antigo:
# 设置旧内核为默认启动项
grubby --set-default /boot/vmlinuz-7.1.3
# 重启生效
reboot
| Item | Antes da correção | Depois da correção |
|---|---|---|
| Linux Kernel | 7.1.3 | 7.1.7 |
| Módulo KVM Intel | 7.1.3 | 7.1.7 |
| CVE-2026-64561 | Em risco | Corrigida via atualização do kernel |
| Funcionalidade KVM | Normal | Normal |
Estado final em execução:
CentOS Stream 8
x86_64
Kernel:
7.1.7
KVM:
kvm_intel
kvm
irqbypass
Correção concluída.
Manter temporariamente:
7.1.3
6.18.8-1.el8.elrepo.x86_64
4.18.x
Para reversão em caso de problemas.
# 查看可用内核
grubby --info=ALL | grep kernel
Para futuras atualizações, é recomendado salvar:
# 保存当前内核配置
cp /usr/src/linux-7.1.7/.config /boot/config-7.1.7
Para atualizações futuras:
# 复制配置到新内核目录
cp /boot/config-7.1.7 新内核源码目录/.config
Assim, a configuração poderá ser reutilizada.
Aviso: Este repositório documenta apenas o meu processo pessoal de correção em um ambiente de servidor específico. Não é uma análise profissional de segurança. Correções são bem-vindas.
Este guia fornece dois métodos para atualizar o Linux Kernel e corrigir a CVE-2026-64561: instalação via RPM do ELRepo (recomendada) e compilação a partir do código-fonte.
| Item | Descrição |
|---|---|
| ID da CVE | CVE-2026-64561 |
| Componente afetado | Linux Kernel KVM/x86 |
| Método de correção | Atualizar o Linux Kernel (RPM do ELRepo ou compilação a partir do código-fonte) |
Este guia fornece dois métodos de atualização. Escolha de acordo com o seu ambiente:
Indicado para ambientes com acesso confiável ao repositório ELRepo. Não requer compilação.
Referência do Método A: 魔方云商家可将CentOS系宿主机内核升级至7.1.6以避免CVE-2026-64561漏洞(Autor: 欢-Huan)
Ambiente do sistema:
| Item | Informação |
|---|---|
| Sistema operacional | CentOS Stream 8 |
| Kernel original | 4.18.0-552.el8.x86_64 |
| Kernel de destino | 7.1.6-1.el8.elrepo.x86_64 |
| Origem do kernel | ELRepo kernel-ml |
Ambiente de hardware (configuração do autor, apenas para referência):
| Item | Informação |
|---|---|
| CPU | AMD Ryzen 9 9950X |
| Finalidade | Host KVM / LXD |
| Placa de rede | Realtek r8126 (driver de terceiros) |
Nota: Este é o driver da placa de rede de uma placa-mãe MSI. Máquinas que se conectam à rede sem drivers especiais não precisam desta etapa. Procure o driver correspondente para a sua placa de rede.
Rota de atualização:
4.18.0-552.el8
↓
7.1.6-1.el8.elrepo
Se o ELRepo já estiver instalado, pule esta etapa.
# Import ELRepo GPG key
rpm --import https://www.elrepo.org/RPM-GPG-KEY-elrepo.org
# Install ELRepo repository
dnf install -y https://www.elrepo.org/elrepo-release-8.el8.elrepo.noarch.rpm
Verificação:
# Check if ELRepo repository is added
dnf repolist | grep elrepo
# List available kernel-ml versions
dnf --enablerepo=elrepo-kernel list kernel-ml --showduplicates
Confirmar que existe:
kernel-ml.x86_64 7.1.6-1.el8.elrepo
# Install kernel body, core, and modules
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 drivers de terceiros (se necessário):
# Install kernel development package for third-party drivers
dnf --enablerepo=elrepo-kernel install -y \
kernel-ml-devel-7.1.6-1.el8.elrepo.x86_64
# View installed kernel-ml packages
rpm -qa | grep kernel-ml
Verificar o grub:
# View kernel list in grub
grubby --info=ALL | grep title
# View all available kernels
grubby --info=ALL | grep kernel
Definir:
# Set default boot kernel
grubby --set-default /boot/vmlinuz-7.1.6-1.el8.elrepo.x86_64
Confirmar:
# Verify default kernel
grubby --default-kernel
# Check grub environment save status
grub2-editenv list
# Reboot server
reboot
Verificação:
# Check current kernel version
uname -r
Saída esperada:
7.1.6-1.el8.elrepo.x86_64
Nota: Este é o driver da placa de rede de uma placa-mãe MSI. Máquinas que se conectam à rede sem drivers especiais não precisam desta etapa. Procure o driver correspondente para a sua placa de rede.
# View r8126 driver version info
modinfo r8126 | grep vermagic
Se não for:
7.1.6-1.el8.elrepo.x86_64
Será necessária uma recompilação.
Nota: Este é o driver da placa de rede de uma placa-mãe MSI. Máquinas que se conectam à rede sem drivers especiais não precisam desta etapa. Procure o driver correspondente para a sua placa de rede.
# Enter driver source directory
cd /root/qudong_backup/r8126-10.016.00
# Clean old build artifacts
make clean
# Compile driver
make
# Install driver
make install
# Regenerate module dependencies
depmod -a
# Load driver
modprobe r8126
Verificação:
# Confirm driver is loaded
lsmod | grep r8126
O kernel 7.1.x inclui o novo 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
# View all available kernels
grubby --info=ALL | grep kernel
Restaurar o kernel antigo:
# Set old kernel as default boot entry
grubby --set-default /boot/vmlinuz-4.18.0-552.el8.x86_64
Rota de atualização:
CentOS Stream 8
↓
Linux 4.18
↓
ELRepo kernel-ml 7.1.6
Resultado:
✅ Upgraded to Linux 7.1.6
✅ KVM/MMU subsystem updated
✅ Better new hardware support
✅ Old kernel rollback capability retained
Notas:
Indicado para ambientes sem acesso ao ELRepo ou quando for necessária a versão estável oficial do kernel.org. Veja as etapas detalhadas abaixo.
| Item | Informação |
|---|---|
| Sistema | CentOS Stream 8 |
| Arquitetura | x86_64 |
| Virtualização | KVM Intel |
| Kernel original | 6.18.8-1.el8.elrepo.x86_64 |
| Kernel em execução | 7.1.3 |
| Kernel final | 7.1.7 |
Verificar o ambiente atual:
cat /etc/os-release
uname -r
No meu ambiente:
Portanto:
Usei o código-fonte estável oficial do kernel.org e compilei o Kernel 7.1.7 manualmente.
Observação:
Esta é uma solução para o meu próprio ambiente, não um método de atualização obrigatório para todos os sistemas.
# Enter source directory
cd /usr/src
# Download Linux 7.1.7 source
wget https://cdn.kernel.org/pub/linux/kernel/v7.x/linux-7.1.7.tar.xz
# Extract source
tar -xf linux-7.1.7.tar.xz
# Enter source directory
cd /usr/src/linux-7.1.7
# Verify source integrity
ls Makefile
Saída esperada:
Makefile
Como o kernel 7.1.3 compilado a partir do código-fonte não gerou:
/boot/config-7.1.3
Use a configuração salva durante a compilação anterior:
# Check if old config exists
ls -lh /usr/src/linux-7.1.3/.config
Confirmado que existe:
/usr/src/linux-7.1.3/.config
# Copy old config to new kernel directory
cp /usr/src/linux-7.1.3/.config /usr/src/linux-7.1.7/.config
# Enter new kernel source directory
cd /usr/src/linux-7.1.7
# Generate new config based on old config
make olddefconfig
Saída esperada:
#
# configuration written to .config
#
# Check KVM related config items
grep -E "CONFIG_KVM|CONFIG_KVM_INTEL" .config
Saída esperada:
CONFIG_KVM_X86=m
CONFIG_KVM=m
CONFIG_KVM_INTEL=m
Explicação:
Atende aos requisitos do ambiente KVM Intel atual.
# Check CPU core count
nproc
# Compile using all CPUs (adjust based on your core count)
make -j$(nproc)
# Verify kernel image after compilation
ls -lh arch/x86/boot/bzImage
Saída esperada:
-rw-r--r-- 1 root root xxM arch/x86/boot/bzImage
Indica que a imagem do kernel foi gerada com sucesso.
# Install kernel modules
make modules_install
# Verify module installation
ls /lib/modules/
Saída esperada:
7.1.7
# Check KVM modules
find /lib/modules/7.1.7 -name "kvm*"
Saída 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:
# Install kernel
make install
# Check installation result
ls -lh /boot | grep 7.1.7
Saída esperada:
initramfs-7.1.7.img
System.map-7.1.7
vmlinuz-7.1.7
# Generate GRUB configuration
grub2-mkconfig -o /boot/grub2/grub.cfg
# Set default boot kernel
grubby --set-default /boot/vmlinuz-7.1.7
# Verify default kernel
grubby --default-kernel
Saída esperada:
/boot/vmlinuz-7.1.7
# Reboot server
reboot
# Check current kernel version
uname -r
Saída esperada:
7.1.7
✅ Executando Linux 7.1.7
# Check KVM modules
lsmod | grep kvm
Saída esperada:
kvm_intel
kvm
irqbypass
✅ KVM Intel carregado normalmente
# Check KVM module source
modinfo kvm_intel | grep filename
Saída esperada:
filename: /lib/modules/7.1.7/kernel/arch/x86/kvm/kvm-intel.ko
✅ Usando o módulo KVM Intel compilado com o 7.1.7
Importante: Kernels antigos não devem ser removidos imediatamente.
# List available kernels
grubby --info=ALL | grep kernel
Se o novo kernel apresentar problemas, defina o kernel antigo:
# Set old kernel as default boot entry
grubby --set-default /boot/vmlinuz-7.1.3
# Reboot to apply
reboot
| Item | Antes da correção | Depois da correção |
|---|---|---|
| Linux Kernel | 7.1.3 | 7.1.7 |
| Módulo KVM Intel | 7.1.3 | 7.1.7 |
| CVE-2026-64561 | Em risco | Corrigida via atualização do kernel |
| Funcionalidade KVM | Normal | Normal |
Estado final em execução:
CentOS Stream 8
x86_64
Kernel:
7.1.7
KVM:
kvm_intel
kvm
irqbypass
Correção concluída.
Manter temporariamente:
7.1.3
6.18.8-1.el8.elrepo.x86_64
4.18.x
Para reversão em caso de problemas.
# View available kernels
grubby --info=ALL | grep kernel
Para futuras atualizações, é recomendado salvar:
# Save current kernel config
cp /usr/src/linux-7.1.7/.config /boot/config-7.1.7
Para atualizações subsequentes:
# Copy config to new kernel directory
cp /boot/config-7.1.7 /new-kernel-source-directory/.config
Isso permite continuar reutilizando a configuração.