
Demonstration von CVE-2021-3656, einer KVM-Nested-Virtualisierungssicherheitslücke, die es einem L2-Gast ermöglicht, VMLOAD/VMSAVE-Intercepts zu umgehen und den physischen Speicher des Hosts zu lesen/schreiben. Enthält eine Einrichtungsanleitung zum Testen.
CVE-2021-3656:
Dieses Problem wird durch eine fehlende Validierung des virt_ext VMCB-Feldes verursacht und ermöglicht es einem böswilligen L1-Gast, sowohl die VMLOAD/VMSAVE-Intercepts als auch VLS (Virtual VMLOAD/VMSAVE) für den L2-Gast zu deaktivieren. Unter diesen Umständen kann der L2-Gast VMLOAD/VMSAVE ohne Intercept ausführen und somit Teile des physischen Speichers des Hosts lesen/schreiben.
Einrichtung der Umgebung für den Zugriff auf den Linux-Kernel:
Sie können einen Docker-Container oder eine virtuelle Maschine verwenden. Ich werde mein Bestes mit einem Docker-Container geben.
Sie möchten Docker Desktop auf MAC oder Windows eingerichtet haben. Wenn Sie standardmäßig einen Linux-Rechner haben, können Sie alle diese Schritte ignorieren.
Als nächstes möchten Sie ein Ubuntu-Image von ubuntu - Official Image | Docker Hub ziehen.
a. Unter Windows können Sie „docker pull ubuntu“ in PowerShell oder CMD eingeben
b. Gleiches für MAC i. Hinweis: Dies zieht die neueste Version von Ubuntu. Möglicherweise möchten Sie eine ältere Version ziehen, um eine ältere Version des Kernels zu haben. ii. Erstellen Sie ein Verzeichnis mit einer Dockerfile darin. Die Datei muss mindestens Folgendes enthalten: „From ubuntu:16.04“ iii. Um eine ältere Version zu erhalten, geben Sie zum Beispiel „docker build -t ubuntu-xenial“ ein. iv. Um Ihre aktuellen Images zu überprüfen, geben Sie „docker image ls“ ein.
c. Sobald Sie den Befehl aus iii ausführen, erhalten Sie eine Container-ID. i. Sie können „docker container ls“ eingeben, um sicherzustellen, dass der Container verfügbar ist
d. Um auf diesen Container zuzugreifen, geben Sie Folgendes ein: „docker exec -it “
e. Sie sollten sich nun in Ihrem Container im Verzeichnis „/“ befinden.
f. Dieser Exploit wurde in Kernelversion 4.13 gefunden; wir müssen sicherstellen, dass dies die Version ist, die unser Arbeitsplatz verwendet. i. Zur Überprüfung geben Sie ein: uname -r
g. Von hier aus finden Sie das Kernel-Verzeichnis, indem Sie „cd sys/kernel“ eingeben.
h. Von hier aus habe ich nicht viel erreicht, da ich keinen Weg fand, auf Kernel 4.13 zurückzustufen. i. Ich habe auch versucht, mit virtuellen Maschinen zurückzustufen, aber das hat auch nicht funktioniert.
REFERENCES:
● oss-security - [CVE-2021-3653, CVE-2021-3656] SVM nested virtualization issues in KVM (openwall.com) ○ Dies ist eine Übersicht über zwei Schwachstellen, die im AMD-Code von KVM für unterstützte Nested Virtualization gefunden wurden.
● This is the PATCH: kvm/kvm.git - kernel-based virtual machine - kvm
● KVM: SVM: Enable Virtual VMLOAD VMSAVE feature · torvalds/linux@89c8a49 (github.com) ○ Dies ist der anfällige Code.
● RHSA-2021:3676 - Security Advisory - Red Hat Customer Portal
● CVE-2021-3656- Red Hat Customer Portal ○ Red Hat-Beschreibung des Exploits.
● 1983988 – (CVE-2021-3656) CVE-2021-3656 kernel: SVM nested virtualization issue in KVM (VMLOAD/VMSAVE) (redhat.com)
● What is KVM? (redhat.com) ○ Erklärung, was ein KVM ist.
● How to Check Linux Kernel Version in Command Line (4 Easy Options) (phoenixnap.com)
● How to downgrade the Linux Kernel articles/videos
○ How to Downgrade the Kernel in Linux - Make Tech Easier ○ How to Downgrade from WSL Version 2 to WSL Version 1 - MSSQL DBA Blog (peter-whyte.com) ○ Linux Series - 2.1.5 Upgrading/Downgrading the Linux Kernel - YouTube
● How to check KVM is installed in Ubuntu Linux - Linux Shout (how2shout.com) ○ Sie benötigen KVM für diesen Exploit.
● How to install QEMU/KVM on Ubuntu 22.04 | 20.04 LTS - Linux Shout (how2shout.com)
● How To Install Linux Kernel 4.13 In Ubuntu And Linux Mint? (fossbytes.com) ○ So installieren Sie den Linux-Kernel 4.13