Skip to content
KitploitKITPLOIT
ToolsBlog
Einreichen
ToolsBlog
Einreichen

Hacking-, PenTest- und Cybersicherheits-Tools für Ihr Sicherheitsarsenal!

Kitploit ist ein Verzeichnis von Hacking-, Cybersicherheits- und Pentesting-Tools. Entdecken Sie die neuesten Projekt-Updates, um Schwachstellen zu finden, Systeme zu analysieren, Tests zu automatisieren und Ihre Sicherheit zu stärken.

··Feeds·Kontakt·Datenschutz·© 2026 Kitploit

Tool-Verzeichnis

Kategorien

Alle Kategorien anzeigen
Loading categories
KVM-Januscape — CVE-2026-53359漏洞补丁 | Kitploit
Tools/GitHubGitHub/xj2268-ta/kvm-januscape
Vulnerability AnalysisExploitationBinary Analysis
GitHubxj2268-ta/kvm-januscape

KVM-Januscape

CVE-2026-53359漏洞补丁

Repository anzeigen
2vor 1 MonatNoch nicht geprüft

Beliebteste

Alle anzeigen →

Entdecken Sie die meistgenutzten Tools unserer Community.

Alle Tools erkunden

Durchsuchen Sie unsere Tool-Sammlung

Alle Tools anzeigen →
Teilen

KVM-XJ Hotpatch

dump_tool.py sucht automatisch Offsets. Wie man es verwendet, steht im Code.

Schwachstellenübersicht

CVE-2026-53359 (Januscape) ist eine Use-After-Free (UAF) Schwachstelle im KVM Shadow MMU des Linux-Kernels.

  • Latenzzeit: 16 Jahre (August 2010 bis Juli 2026)
  • Betroffene Systeme: Alle Intel/AMD x86 Systeme mit aktivierter verschachtelter Virtualisierung
  • Schweregrad: Hoch. Ein Root-Benutzer innerhalb einer VM kann zum Host entkommen und Root-Rechte auf dem Host erlangen.
  • Auswirkung: Host-Kernel-Panic (DoS) oder vollständige VM-Escape (kein öffentlicher POC)

Schwachstellenprinzip

Die Funktion kvm_mmu_get_page() vergleicht bei der Suche nach wiederverwendbaren Schattenseitentabellen in der Hashtabelle nur die gfn (Gast-Physikalische-Seitenrahmennummer), aber nicht die role (Seitentabellen-Rolle/MMU-Rolle), was dazu führt, dass Seitentabellen mit nicht übereinstimmenden Rollen fälschlicherweise wiederverwendet werden, was einen UAF auslöst.

root@kitploit:~
Vor dem Patch (anfällig):
┌──────────────────────────────────────┐
│ kvm_mmu_get_page()                   │
│   Hashtabelle durchlaufen            │
│   if (child->gfn == gfn)             │
│       return child  ← nur gfn verglichen!│
│       Wiederverwendung auch bei      │
│       Rollenkonflikt → UAF!          │
│   Neue Seite zuweisen (sicher)       │
└──────────────────────────────────────┘

Im Upstream-Kernel-Commit 81ccda30b4e8 wurde eine Zeile zum Rollenvergleich hinzugefügt:

root@kitploit:~
// Vor dem Patch
if (... && spte_to_child_sp(*sptep)->gfn == gfn)

// Nach dem Patch
if (... && spte_to_child_sp(*sptep)->gfn == gfn
       && spte_to_child_sp(*sptep)->role.word == role.word)

Meine Reparaturmethode

Methode: text_poke binäres Hotpatch (NOP-Patch)

Es wird weder der Kernel-Quellcode geändert noch eine Funktion ersetzt, sondern direkt die anfällige Anweisung im laufenden Kernel-Speicher modifiziert.

Prinzip

root@kitploit:~
Auf Binärebene:
Offset 0x104: 49 39 47 28          cmp %rax, 0x28(%r15)   ← vergleicht gfn
Offset 0x108: 0f 84 9f 01 00 00    je   +0x19f            ← bei Treffer springen und wiederverwenden

Nach dem Patch:
Offset 0x108: 66 0f 1f 44 00 00    NOP × 6               ← tut nichts
root@kitploit:~
Nach dem Patch:
┌──────────────────────────────────────┐
│ kvm_mmu_get_page()                   │
│   Hashtabelle durchlaufen            │
│   if (child->gfn == gfn)             │
│       NOP (Sprung gelöscht, gleitet vorbei)│
│   Neue Seite zuweisen (erzwingt      │
│   sicheren Pfad)                     │
│   → Keine Wiederverwendung =         │
│     kein UAF = Schwachstelle behoben │
└──────────────────────────────────────┘

Technische Umsetzung

  1. Adresse der Funktion kvm_mmu_get_page über kallsyms_lookup_name finden
  2. text_poke Funktion über kallsyms_lookup_name finden (Kernel-Code-Hotpatch-API)
  3. Alle CPUs mit stop_machine anhalten, um sichere Änderung zu gewährleisten
  4. Mit text_poke die 6-Byte je-Anweisung durch 6-Byte NOP ersetzen
  5. Beim Entladen die ursprüngliche Anweisung mit text_poke wiederherstellen

Warum keine anderen Lösungen

Auswirkungsbewertung

Bereitstellungsanforderungen

BedingungBeschreibung
Kernel-VersionLinux 4.18+ (CentOS 8 / RHEL 8 / Rocky 8 usw.)
Build-Umgebungkernel-devel + gcc + make

Kompilieren und Laden

root@kitploit:~
# Kompilieren
make

# Hotpatch laden
insmod KVM-XJ.ko

# Status anzeigen
dmesg | grep KVM-XJ
cat /sys/module/kvm_intel/parameters/nested   # sollte immer noch 1 sein
lsmod | grep KVM_XJ

# Entladen (ursprünglichen Code wiederherstellen)
rmmod KVM_XJ

Anpassung an andere Kernel

Unterschiedliche Kernelversionen haben unterschiedliche Compileroptimierungen, daher variiert der Offset der je-Anweisung. Verwenden Sie dump_tool.py zur automatischen Analyse:

root@kitploit:~
# 1. kvm.ko vom Host herunterladen
scp root@Host:/lib/modules/.../kvm.ko.xz .
xz -d kvm.ko.xz

# 2. Analysetool ausführen
python dump_tool.py kvm.ko

# 3. Das Tool gibt den Patch-Offset aus; ändern Sie 0x108 in KVM-XJ.c

Verifizierte Kernel

Kernel-Versionje-OffsetStatus
4.18.0-496.el8.x86_640x108Getestet
4.18.0-358.el8.x86_640xe8Getestet

Hinweise

  1. Wenn Sie nicht wissen, wie man es verwendet oder den Code nicht verstehen, wird von der Nutzung abgeraten.
Tool herunterladen
LösungProblem
Kernel-Upgrade mit NeustartErfordert Host-Neustart, alle VMs werden gestoppt
nested=0 (Verschachtelte Virtualisierung deaktivieren)Verlust der verschachtelten Virtualisierung, keine Ausführung von VMs in VMs möglich
kpatch-MethodeBenötigt kernel-debuginfo, Kompilierung dauert 10-20 Minuten, komplexe Abhängigkeiten
ftrace Funktionsersetzungkvm_mmu_get_child_sp wird von GCC inline gesetzt, keine eigenständige Funktionseinsprungstelle
Meine text_poke-LösungKompilierung in 10 Sekunden, eine .c-Datei, direkte Modifikation der anfälligen Anweisung
FunktionAuswirkung
Host-NeustartNicht erforderlich
VM-Neustart/-MigrationNicht erforderlich
Verschachtelte Virtualisierung (VM in VM)Beibehalten, normale Nutzung
Erstellen/Starten von VMsNormal
KSM-SpeicherzusammenführungKeine Auswirkung, unabhängige Funktion
CPU-LeistungNahezu keine Auswirkung (NOP verbraucht keine CPU)
SpeicherSchattenseitentabellen werden nicht mehr wiederverwendet, jede Seite neu zugewiesen, geringer Speichermehrverbrauch
KVM-Modul entladenNormal (rmmod stellt ursprünglichen Code automatisch wieder her)
Host-NeustartNicht erforderlich
VM-StoppNicht erforderlich
Verschachtelte VirtualisierungBeibehalten