## https://sploitus.com/exploit?id=KITPLOIT:TOOLS-GITHUB-CHUZHONGYUN-CVE-2026-53359-KERNEL-FIX
中文 | 英語
* * *
## 中文
# 升级 Linux Kernel 7.1.3 修复 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 可以有效修复此漏洞。
### 1\. 简介
本文档提供两种方式将 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 条目引用,引发内存安全问题。
**漏洞参考:**
* NVD - CVE-2026-53359
* Januscape - PoC
* * *
### 2\. 环境信息
项目| 信息
---|---
系统| CentOS Stream 8
升级前内核| 6.18.8-1.el8.elrepo.x86_64
升级后内核| 7.1.3
架构| x86_64
虚拟化| KVM Intel
**查看当前环境:**
root@kitploit:~
cat /etc/os-release
uname -r
* * *
### 3\. 升级方法
本教程提供两种升级方式,可根据环境选择:
#### 方法一:ELRepo RPM 安装(推荐)
适用于能正常访问 ELRepo 仓库的环境,无需编译,操作简单。
root@kitploit:~
# 导入 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 版本的环境。具体步骤见下方。
* * *
### 4\. 源码编译步骤
由于本人服务器环境中:
* ELRepo Kernel RPM 仓库无法稳定拉取;
* 未找到适合当前环境的 RPM 更新包;
* 需要直接使用 Linux Kernel 官方 stable 修复版本;
**因此采用:**
kernel.org 官方 stable 源码编译方式升级内核。
**说明:**
该方案仅为本人服务器环境下的解决方法,不代表所有环境必须使用源码编译。
* * *
### 5\. 下载源码
**官方下载:**
root@kitploit:~
https://cdn.kernel.org/pub/linux/kernel/v7.x/linux-7.1.3.tar.xz
**下载命令:**
root@kitploit:~
wget https://cdn.kernel.org/pub/linux/kernel/v7.x/linux-7.1.3.tar.xz
**上传位置(离线环境):**
root@kitploit:~
/root/linux-7.1.3.tar.xz
* * *
### 6\. 安装编译依赖
root@kitploit:~
dnf groupinstall "Development Tools" -y
dnf install -y \
ncurses-devel \
elfutils-libelf-devel \
openssl-devel \
bc \
bison \
flex \
perl \
dwarves
* * *
### 7\. 解压源码
root@kitploit:~
mkdir -p /usr/src
cd /usr/src
tar -xf /root/linux-7.1.3.tar.xz
cd linux-7.1.3
ls Makefile # 应显示: Makefile
* * *
### 8\. 使用现有配置
root@kitploit:~
# 复制当前配置
cp /boot/config-$(uname -r) .config
# 生成新配置
make olddefconfig
# 检查 KVM 配置
grep -E "CONFIG_KVM|CONFIG_KVM_INTEL" .config
**预期输出:**
root@kitploit:~
CONFIG_KVM=m
CONFIG_KVM_X86=m
CONFIG_KVM_INTEL=m
* * *
### 9\. 编译内核
root@kitploit:~
# 查看 CPU 线程数
nproc
# 编译(使用所有核心)
make -j$(nproc)
# 验证内核镜像
ls -lh arch/x86/boot/bzImage
> **注意:** 编译时间取决于 CPU 和存储性能。
* * *
### 10\. 安装内核模块
root@kitploit:~
# 安装模块
make modules_install
# 验证安装
ls /lib/modules/
# 检查 KVM 模块
find /lib/modules/7.1.3 -name "kvm*.ko*"
**预期输出:**
root@kitploit:~
kvm.ko
kvm-intel.ko
kvm-amd.ko
* * *
### 11\. 安装内核镜像
root@kitploit:~
# 安装内核
make install
# 验证安装
ls -lh /boot | grep 7.1.3
**预期输出:**
root@kitploit:~
vmlinuz-7.1.3
initramfs-7.1.3.img
System.map-7.1.3
* * *
### 12\. 更新启动项
root@kitploit:~
# 生成 GRUB 配置
grub2-mkconfig -o /boot/grub2/grub.cfg
# 设置默认内核
grubby --set-default /boot/vmlinuz-7.1.3
# 验证默认内核
grubby --default-kernel
**预期输出:**
root@kitploit:~
/boot/vmlinuz-7.1.3
* * *
### 13\. 重启
root@kitploit:~
reboot
* * *
### 14\. 验证
**查看内核版本:**
root@kitploit:~
uname -r
# 预期: 7.1.3
**查看 KVM 模块:**
root@kitploit:~
lsmod | grep kvm
# 预期: kvm_intel, kvm, irqbypass
**验证 KVM 模块位置:**
root@kitploit:~
modinfo kvm_intel | grep filename
# 预期: /lib/modules/7.1.3/kernel/arch/x86/kvm/kvm-intel.ko
* * *
### 15\. 回滚
> **重要:** 旧内核不应立即删除。
**列出可用内核:**
root@kitploit:~
grubby --info=ALL | grep kernel
**如果新内核有问题,设置旧内核:**
root@kitploit:~
grubby --set-default /boot/vmlinuz-6.18.8-1.el8.elrepo.x86_64
reboot
* * *
### 16\. 最终结果
项目| 升级前| 升级后
---|---|---
内核版本| 6.18.8-1.el8.elrepo.x86_64| 7.1.3
KVM 状态| N/A| 已启用
CVE-2026-53359| 受影响| 已修复
* * *
* * *
## 英語
# Linuxカーネルを7.1.3にアップグレードして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にアップグレードすることでこの脆弱性を効果的に修正できます。
### 1\. はじめに
このガイドでは、**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エントリによってまだ参照され、メモリ安全性の問題を引き起こす可能性があります。
**参考文献:**
* NVD - CVE-2026-53359
* Januscape - PoC
* * *
### 2\. 環境
項目
---
**現在の環境を確認:**
root@kitploit:~
cat /etc/os-release
uname -r
* * *
### 3\. アップグレード方法
このガイドでは2つのアップグレード方法を提供します。環境に応じて選択してください:
#### 方法A: ELRepo RPMインストール(推奨)
ELRepoリポジトリに確実にアクセスできる環境向け。コンパイルは不要です。
root@kitploit:~
# 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-*` で確認してください。
#### 方法B: ソースからのビルド
ELRepoにアクセスできない環境、または公式のkernel.org安定版リリースが必要な環境向け。詳細な手順は以下をご覧ください。
* * *
### 4\. ソースからのビルド手順
私の環境では:
* ELRepoカーネルRPMリポジトリに安定してアクセスできませんでした。
* 適切なRPM更新方法が見つかりませんでした。
* 公式のLinuxカーネル安定版リリースをデプロイする必要がありました。
**そのため:**
公式のkernel.org安定版ソースコードを使用して、カーネル7.1.3を手動でビルドしました。
**注意:**
これは私自身の環境での解決策であり、すべてのシステムで必須のアップグレード方法ではありません。
* * *
### 5\. カーネルソースのダウンロード
**公式ソース:**
root@kitploit:~
https://cdn.kernel.org/pub/linux/kernel/v7.x/linux-7.1.3.tar.xz
**ダウンロード:**
root@kitploit:~
wget https://cdn.kernel.org/pub/linux/kernel/v7.x/linux-7.1.3.tar.xz
**アップロード場所(オフラインの場合):**
root@kitploit:~
/root/linux-7.1.3.tar.xz
* * *
### 6\. ビルド依存関係のインストール
root@kitploit:~
dnf groupinstall "Development Tools" -y
dnf install -y \
ncurses-devel \
elfutils-libelf-devel \
openssl-devel \
bc \
bison \
flex \
perl \
dwarves \
tar \
xz
**コンパイラの確認:**
root@kitploit:~
gcc --version
* * *
### 7\. ソースコードの展開
root@kitploit:~
mkdir -p /usr/src
cd /usr/src
tar -xf /root/linux-7.1.3.tar.xz
cd linux-7.1.3
ls Makefile # 表示されるはず: Makefile
* * *
### 8\. 既存のカーネル設定のインポート
root@kitploit:~
# 現在のカーネル設定をコピー
cp /boot/config-$(uname -r) .config
# 新しい設定を生成
make olddefconfig
# KVM設定を確認
grep -E "CONFIG_KVM|CONFIG_KVM_INTEL" .config
**期待される出力:**
root@kitploit:~
CONFIG_KVM=m
CONFIG_KVM_X86=m
CONFIG_KVM_INTEL=m
* * *
### 9\. カーネルのコンパイル
root@kitploit:~
# CPUスレッド数を確認
nproc
# コンパイル(利用可能なすべてのコアを使用)
make -j$(nproc)
# カーネルイメージを確認
ls -lh arch/x86/boot/bzImage
> **注意:** コンパイル時間はCPUとストレージの性能に依存します。
* * *
### 10\. カーネルモジュールのインストール
root@kitploit:~
# モジュールをインストール
make modules_install
# インストールを確認
ls /lib/modules/
# KVMモジュールを確認
find /lib/modules/7.1.3 -name "kvm*.ko*"
**期待される出力:**
root@kitploit:~
kvm.ko
kvm-intel.ko
kvm-amd.ko
* * *
### 11\. カーネルイメージのインストール
root@kitploit:~
# カーネルをインストール
make install
# インストールを確認
ls -lh /boot | grep 7.1.3
**期待される出力:**
root@kitploit:~
vmlinuz-7.1.3
initramfs-7.1.3.img
System.map-7.1.3
* * *
### 12\. GRUBブートローダの設定
root@kitploit:~
# GRUB設定を生成
grub2-mkconfig -o /boot/grub2/grub.cfg
# デフォルトカーネルを設定
grubby --set-default /boot/vmlinuz-7.1.3
# デフォルトカーネルを確認
grubby --default-kernel
**期待される出力:**
root@kitploit:~
/boot/vmlinuz-7.1.3
* * *
### 13\. 再起動
root@kitploit:~
reboot
* * *
### 14\. 再起動後の確認
**カーネルバージョンの確認:**
root@kitploit:~
uname -r
# 期待される: 7.1.3
**KVMモジュールの確認:**
root@kitploit:~
lsmod | grep kvm
# 期待される: kvm_intel, kvm, irqbypass
**KVMモジュールの場所の確認:**
root@kitploit:~
modinfo kvm_intel | grep filename
# 期待される: /lib/modules/7.1.3/kernel/arch/x86/kvm/kvm-intel.ko
* * *
### 15\. ロールバック手順
> **重要:** 古いカーネルはすぐに削除しないでください。
**利用可能なカーネルを一覧表示:**
root@kitploit:~
grubby --info=ALL | grep kernel
**新しいカーネルに問題がある場合、古いカーネルを設定:**
root@kitploit:~
grubby --set-default /boot/vmlinuz-6.18.8-1.el8.elrepo.x86_64
reboot
* * *
### 16\. 最終結果
項目| アップグレード前| アップグレード後
---|---|---
カーネルバージョン| 6.18.8-1.el8.elrepo.x86_64| 7.1.3
KVMステータス| N/A| 有効
CVE-2026-53359| 影響あり| 修正済み
* * *
## ライセンス / License
MIT