
Linuxカーネルアップグレードガイド - CVE-2026-53359の修正
声明: 本文仅记录本人服务器环境下的修复过程,并非安全专业分析。如有不当之处,欢迎指正。
验证说明: 经源码比对确认,Linux Kernel 7.1.3 已包含修复 commit
81ccda30b4e8("KVM: x86: Fix shadow paging use-after-free due to unexpected role"),该补丁在arch/x86/kvm/mmu/mmu.c的kvm_mmu_get_child_sp()函数中增加了role.word匹配条件,从根本上消除了因 role 不匹配导致的 shadow paging UAF。因此,升级至 7.1.3 可以有效修复此漏洞。
本文档提供两种方式将 Linux Kernel 升级至 7.1.3,用于修复 CVE-2026-53359:ELRepo RPM 安装(推荐)和源码编译。
| 项目 | 说明 |
|---|---|
| CVE 编号 | CVE-2026-53359 |
| 漏洞组件 | Linux Kernel KVM x86 Shadow MMU |
| 漏洞类型 | Use After Free (UAF) |
| 修复方式 | 升级 Linux Kernel 至 7.1.3(ELRepo RPM 或源码编译) |
漏洞影响:
KVM x86 Shadow Paging 场景中,异常情况下可能出现释放后的页面仍被 rmap 条目引用,引发内存安全问题。
漏洞参考:
| 项目 | 信息 |
|---|---|
| 系统 | CentOS Stream 8 |
| 升级前内核 | 6.18.8-1.el8.elrepo.x86_64 |
| 升级后内核 | 7.1.3 |
| 架构 | x86_64 |
| 虚拟化 | KVM Intel |
查看当前环境:
cat /etc/os-release
uname -r
本教程提供两种升级方式,可根据环境选择:
适用于能正常访问 ELRepo 仓库的环境,无需编译,操作简单。
# 导入 ELRepo GPG 密钥
rpm --import https://www.elrepo.org/RPM-GPG-KEY-elrepo.org
# 安装 ELRepo 仓库
dnf install https://www.elrepo.org/elrepo-release-8.el8.elrepo.noarch.rpm
# 安装最新主线内核
dnf --enablerepo=elrepo-kernel install kernel-ml
# 设置新内核为默认启动项
grubby --set-default /boot/vmlinuz-7.1.3-1.el8.elrepo.x86_64
# 重启生效
reboot
注意: 内核版本号可能因 ELRepo 更新而变化,请以实际安装的版本为准。安装后可用
ls /boot/vmlinuz-*查看。
适用于无法访问 ELRepo 仓库,或需要使用 kernel.org 官方 stable 版本的环境。具体步骤见下方。
由于本人服务器环境中:
因此采用:
kernel.org 官方 stable 源码编译方式升级内核。
说明:
该方案仅为本人服务器环境下的解决方法,不代表所有环境必须使用源码编译。
官方下载:
https://cdn.kernel.org/pub/linux/kernel/v7.x/linux-7.1.3.tar.xz
下载命令:
wget https://cdn.kernel.org/pub/linux/kernel/v7.x/linux-7.1.3.tar.xz
上传位置(离线环境):
/root/linux-7.1.3.tar.xz
dnf groupinstall "Development Tools" -y
dnf install -y \
ncurses-devel \
elfutils-libelf-devel \
openssl-devel \
bc \
bison \
flex \
perl \
dwarves
mkdir -p /usr/src
cd /usr/src
tar -xf /root/linux-7.1.3.tar.xz
cd linux-7.1.3
ls Makefile # 应显示: Makefile
# 复制当前配置
cp /boot/config-$(uname -r) .config
# 生成新配置
make olddefconfig
# 检查 KVM 配置
grep -E "CONFIG_KVM|CONFIG_KVM_INTEL" .config
预期输出:
CONFIG_KVM=m
CONFIG_KVM_X86=m
CONFIG_KVM_INTEL=m
# 查看 CPU 线程数
nproc
# 编译(使用所有核心)
make -j$(nproc)
# 验证内核镜像
ls -lh arch/x86/boot/bzImage
注意: 编译时间取决于 CPU 和存储性能。
# 安装模块
make modules_install
# 验证安装
ls /lib/modules/
# 检查 KVM 模块
find /lib/modules/7.1.3 -name "kvm*.ko*"
预期输出:
kvm.ko
kvm-intel.ko
kvm-amd.ko
# 安装内核
make install
# 验证安装
ls -lh /boot | grep 7.1.3
预期输出:
vmlinuz-7.1.3
initramfs-7.1.3.img
System.map-7.1.3
# 生成 GRUB 配置
grub2-mkconfig -o /boot/grub2/grub.cfg
# 设置默认内核
grubby --set-default /boot/vmlinuz-7.1.3
# 验证默认内核
grubby --default-kernel
预期输出:
/boot/vmlinuz-7.1.3
reboot
查看内核版本:
uname -r
# 预期: 7.1.3
查看 KVM 模块:
lsmod | grep kvm
# 预期: kvm_intel, kvm, irqbypass
验证 KVM 模块位置:
modinfo kvm_intel | grep filename
# 预期: /lib/modules/7.1.3/kernel/arch/x86/kvm/kvm-intel.ko
重要: 旧内核不应立即删除。
列出可用内核:
grubby --info=ALL | grep kernel
如果新内核有问题,设置旧内核:
grubby --set-default /boot/vmlinuz-6.18.8-1.el8.elrepo.x86_64
reboot
| 项目 | 升级前 | 升级后 |
|---|---|---|
| 内核版本 | 6.18.8-1.el8.elrepo.x86_64 | 7.1.3 |
| KVM 状态 | N/A | 已启用 |
| CVE-2026-53359 | 受影响 | 已修复 |
免責事項: このリポジトリは、特定のサーバー環境における私自身の修正プロセスを記録したものです。専門的なセキュリティ分析ではありません。訂正があれば歓迎します。
検証メモ: ソースコードの比較により、Linuxカーネル7.1.3には修正コミット
81ccda30b4e8("KVM: x86: Fix shadow paging use-after-free due to unexpected role")が含まれていることを確認しました。このパッチはarch/x86/kvm/mmu/mmu.cのkvm_mmu_get_child_sp()関数にrole.wordマッチング条件を追加し、ロールの不一致によるシャドウページングUAFを根本的に排除します。したがって、7.1.3にアップグレードすることでこの脆弱性を効果的に修正できます。
このガイドでは、CVE-2026-53359を修正するためにLinuxカーネルを7.1.3にアップグレードする2つの方法を提供します:ELRepo RPMインストール(推奨)およびソースからのビルド。
| 項目 | 説明 |
|---|---|
| CVE ID | CVE-2026-53359 |
| 影響を受けるコンポーネント | Linuxカーネル KVM x86 Shadow MMU |
| 脆弱性の種類 | Use After Free (UAF) |
この脆弱性はKVM x86シャドウページングに関連しています。特定の条件下では、解放されたページがrmapエントリによってまだ参照され、メモリ安全性の問題を引き起こす可能性があります。
参考文献:
| 項目 |
|---|
現在の環境を確認:
cat /etc/os-release
uname -r
このガイドでは2つのアップグレード方法を提供します。環境に応じて選択してください:
ELRepoリポジトリに確実にアクセスできる環境向け。コンパイルは不要です。
# ELRepo GPGキーをインポート
rpm --import https://www.elrepo.org/RPM-GPG-KEY-elrepo.org
# ELRepoリポジトリをインストール
dnf install https://www.elrepo.org/elrepo-release-8.el8.elrepo.noarch.rpm
# 最新のメインラインカーネルをインストール
dnf --enablerepo=elrepo-kernel install kernel-ml
# 新しいカーネルをデフォルトの起動エントリに設定
grubby --set-default /boot/vmlinuz-7.1.3-1.el8.elrepo.x86_64
# 再起動して適用
reboot
注意: カーネルのバージョン番号はELRepoの更新に伴い変更される可能性があります。実際にインストールされたバージョンは
ls /boot/vmlinuz-*で確認してください。
ELRepoにアクセスできない環境、または公式のkernel.org安定版リリースが必要な環境向け。詳細な手順は以下をご覧ください。
私の環境では:
そのため:
公式のkernel.org安定版ソースコードを使用して、カーネル7.1.3を手動でビルドしました。
注意:
これは私自身の環境での解決策であり、すべてのシステムで必須のアップグレード方法ではありません。
公式ソース:
https://cdn.kernel.org/pub/linux/kernel/v7.x/linux-7.1.3.tar.xz
ダウンロード:
wget https://cdn.kernel.org/pub/linux/kernel/v7.x/linux-7.1.3.tar.xz
アップロード場所(オフラインの場合):
/root/linux-7.1.3.tar.xz
dnf groupinstall "Development Tools" -y
dnf install -y \
ncurses-devel \
elfutils-libelf-devel \
openssl-devel \
bc \
bison \
flex \
perl \
dwarves \
tar \
xz
コンパイラの確認:
gcc --version
mkdir -p /usr/src
cd /usr/src
tar -xf /root/linux-7.1.3.tar.xz
cd linux-7.1.3
ls Makefile # 表示されるはず: Makefile
# 現在のカーネル設定をコピー
cp /boot/config-$(uname -r) .config
# 新しい設定を生成
make olddefconfig
# KVM設定を確認
grep -E "CONFIG_KVM|CONFIG_KVM_INTEL" .config
期待される出力:
CONFIG_KVM=m
CONFIG_KVM_X86=m
CONFIG_KVM_INTEL=m
# CPUスレッド数を確認
nproc
# コンパイル(利用可能なすべてのコアを使用)
make -j$(nproc)
# カーネルイメージを確認
ls -lh arch/x86/boot/bzImage
注意: コンパイル時間はCPUとストレージの性能に依存します。
# モジュールをインストール
make modules_install
# インストールを確認
ls /lib/modules/
# KVMモジュールを確認
find /lib/modules/7.1.3 -name "kvm*.ko*"
期待される出力:
kvm.ko
kvm-intel.ko
kvm-amd.ko
# カーネルをインストール
make install
# インストールを確認
ls -lh /boot | grep 7.1.3
期待される出力:
vmlinuz-7.1.3
initramfs-7.1.3.img
System.map-7.1.3
# GRUB設定を生成
grub2-mkconfig -o /boot/grub2/grub.cfg
# デフォルトカーネルを設定
grubby --set-default /boot/vmlinuz-7.1.3
# デフォルトカーネルを確認
grubby --default-kernel
期待される出力:
/boot/vmlinuz-7.1.3
reboot
カーネルバージョンの確認:
uname -r
# 期待される: 7.1.3
KVMモジュールの確認:
lsmod | grep kvm
# 期待される: kvm_intel, kvm, irqbypass
KVMモジュールの場所の確認:
modinfo kvm_intel | grep filename
# 期待される: /lib/modules/7.1.3/kernel/arch/x86/kvm/kvm-intel.ko
重要: 古いカーネルはすぐに削除しないでください。
利用可能なカーネルを一覧表示:
grubby --info=ALL | grep kernel
新しいカーネルに問題がある場合、古いカーネルを設定:
grubby --set-default /boot/vmlinuz-6.18.8-1.el8.elrepo.x86_64
reboot
| 項目 | アップグレード前 | アップグレード後 |
|---|---|---|
| カーネルバージョン | 6.18.8-1.el8.elrepo.x86_64 | 7.1.3 |
| KVMステータス | N/A | 有効 |
| CVE-2026-53359 | 影響あり | 修正済み |
| 修正方法 | Linuxカーネルを7.1.3にアップグレード(ELRepo RPMまたはソースからのビルド) |
| 値 |
|---|
| OS | CentOS Stream 8 |
| 旧カーネル | 6.18.8-1.el8.elrepo.x86_64 |
| 新カーネル | 7.1.3 |
| アーキテクチャ | x86_64 |
| 仮想化 | KVM Intel |
| コンパイラ | GCC 8.5 |