
Technische Analyse und Proof-of-Concept-Umgehung für CVE-2023-33668 in der DigiExam-Überwachungssoftware, die schwache VM-Erkennung und Prüfungen der Integrität nativer Module demonstriert.
DigiExam ist eine Überwachungs-Prüfungs- und Proctoring-Software. Die Software wird auf Schulcomputern (oder Schülercomputern) installiert. Wenn der Schüler einer Prüfung beitritt, wird DigiExam: sicherstellen, dass es nicht in einer virtuellen Maschine läuft, alle Anwendungen beenden, sich selbst im Vollbildmodus anzeigen und den Benutzer daran hindern, woanders hinzugehen als das DigiExam-Fenster.
Es wurde festgestellt, dass die Sicherheitserkennungen schwach sind und leicht umgangen werden können, indem einfach eine Datei (die dem Benutzer gehört) im Dateisystem ersetzt wird. Dies wurde in DigiExam v14.0.2 bestätigt und seitdem nicht erneut getestet (ich habe meine Prüfung bestanden :)).
Schwachstelle: DigiExam (eine Electron-Anwendung) "lagert" die Erkennung virtueller Maschinen (zusammen mit den meisten Sicherheitsfunktionen) an ein natives Modul namens dx-sec aus. Das Fehlen einer Integritätsprüfung des dx-sec-Moduls ermöglicht es, das Modul durch eine gepatchte Version zu ersetzen. Der Patch kann im Wesentlichen alle Funktionen innerhalb von dx-sec modifizieren, einschließlich der Erkennung virtueller Maschinen (und anderer, wie der Whitelist illegaler Prozesse usw.).
Beim ersten Start lädt die DigiExam-Anwendung native Module in %localappdata%\DigiExam\app-14.0.2\resources\app.asar.unpacked\node_modules\%modulename%\build\Release\%modulename.node% herunter. Diese .node-Dateien sind (wie von file angegeben) .
PE32 executable (DLL) (GUI) Intel 80386, for MS WindowsDas Öffnen der dx-sec-Datei in Ghidra und die Suche nach der Zeichenkette „Virtual Machine“ liefert viele Ergebnisse und führt zu FUN_10020370 – umbenannt in detect_virtual_machine (was ziemlich interessante Einblicke in die untersuchten Aspekte der VM-Erkennung gibt).

detect_virtual_machine hat einen Querverweis auf FUN_10007ab0 – umbenannt in detect_virtual_machine_node_handler – was scheinbar der Bibliothekseinstiegspunkt für Node-Dinge ist (Konstruktor und Destruktor um unsere 'Hauptfunktion' detect_virtual_machine herum).

detect_virtual_machine kann so gepatcht werden, dass es sofort zurückkehrt. Die rechte Seite des Screenshots zeigt die gepatchte Version.

Dies umgeht die VM-Erkennungslogik vollständig.
Wie in der Einleitung erwähnt, wird DigiExam oft auf gemeinsam genutzten Schulcomputern installiert. Anstatt die VM-Erkennungslogik zu patchen, könnte ein Angreifer dies ausnutzen, um bei jeder Prüfungsteilnahme eines Schülers Code auf dessen Sitzung auszuführen, was destruktivere Angriffe auf die Dokumente und Informationen der Schüler ermöglicht. Die Persistenz besteht bis zur Aktualisierung von DigiExam.