
DigiExam è un software di sorveglianza per esami e proctoring. Il software è installato sui computer delle scuole (o degli studenti). Quando lo studente si unisce a un esame, DigiExam: verifica che non sia in esecuzione in una macchina virtuale, termina tutte le applicazioni, si porta a schermo intero e impedisce all'utente di andare ovunque tranne che nella finestra di DigiExam.
È stato riscontrato che i controlli di sicurezza sono deboli e possono essere facilmente aggirati semplicemente sostituendo un file (di proprietà dell'utente) nel file system. È stato confermato funzionante in DigiExam v14.0.2 e non è stato ritestato da allora (ho superato il mio esame :)).
Vulnerabilità: DigiExam (un'applicazione Electron) "esternalizza" il rilevamento delle macchine virtuali (insieme alla maggior parte delle funzionalità di sicurezza) a un modulo nativo chiamato dx-sec. La mancanza di un controllo di integrità sul modulo dx-sec consente di sostituire il modulo con una versione patchata. La patch può essenzialmente modificare qualsiasi funzionalità all'interno di dx-sec, inclusa la rilevazione delle macchine virtuali (e altre, come la whitelist dei processi illegali, ecc.).
Al primo avvio, l'applicazione DigiExam scarica i moduli nativi in %localappdata%\DigiExam\app-14.0.2\resources\app.asar.unpacked\node_modules\%modulename%\build\Release\%modulename.node%. Questi file .node sono (come indicato da file) PE32 executable (DLL) (GUI) Intel 80386, for MS Windows.
Aprendo il file dx-sec in Ghidra e cercando la stringa "Virtual Machine" si ottengono molti risultati che portano a FUN_10020370 - rinominata detect_virtual_machine (il che offre spunti piuttosto interessanti su ciò che viene esaminato per il rilevamento delle VM).

detect_virtual_machine ha un solo xref a FUN_10007ab0 - rinominata detect_virtual_machine_node_handler - che sembra essere il punto di ingresso della libreria per le cose di Node (costruttore e distruttore attorno alla nostra funzione 'principale' detect_virtual_machine).

detect_virtual_machine può essere patchata per restituire immediatamente il controllo. Il lato destro dello screenshot è la versione patchata.

Questo bypassa completamente la logica di rilevamento delle VM.
Come accennato nell'introduzione, DigiExam è spesso installato sui computer condivisi delle scuole. Invece di patchare la logica di rilevamento delle VM, un attaccante potrebbe sfruttare questo per ottenere l'esecuzione di codice nella sessione di qualsiasi studente non appena svolge un esame, consentendo attacchi più distruttivi su documenti e informazioni degli studenti. La persistenza dura finché DigiExam non viene aggiornato.