Sploitus

Exploit for CVE-2026-53359-Kernel-Fix

kitploit · 2026-09-07

Exploit Code

MARKDOWN744 lines
## 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