
DigiExam es un software de vigilancia exámenes y supervisión (proctoring). El software se instala en los ordenadores de las escuelas (o de los estudiantes). Cuando el estudiante se une a un examen, DigiExam: se asegura de que no se esté ejecutando en una máquina virtual, termina todas las aplicaciones, se pone en pantalla completa e impide que el usuario vaya a cualquier otro lugar que no sea la ventana de DigiExam.
Se ha descubierto que las detecciones de seguridad son débiles y se pueden evadir fácilmente con solo reemplazar un archivo (propiedad del usuario) en el sistema de archivos. Esto se ha confirmado que funciona en DigiExam v14.0.2 y no se ha vuelto a probar desde entonces (aprobé mi examen :)).
Vulnerabilidad: DigiExam (una aplicación Electron) "externaliza" la detección de máquinas virtuales (junto con la mayoría de las funciones de seguridad) a un módulo nativo llamado dx-sec. La falta de verificación de integridad en el módulo dx-sec permite reemplazar el módulo por una versión parcheada. El parche puede modificar esencialmente cualquier funcionalidad ubicada dentro de dx-sec, incluida la detección de máquinas virtuales (y otras, como la lista blanca de procesos ilegales, etc.).
En su primer lanzamiento, la aplicación DigiExam descarga módulos nativos en %localappdata%\DigiExam\app-14.0.2\resources\app.asar.unpacked\node_modules\%modulename%\build\Release\%modulename.node%. Estos archivos .node son (según indica file) PE32 executable (DLL) (GUI) Intel 80386, for MS Windows.
Al abrir el archivo dx-sec en Ghidra y buscar la cadena "Virtual Machine" se obtienen muchos resultados y se llega a FUN_10020370, renombrada como detect_virtual_machine (lo que ofrece información bastante interesante sobre qué se examina para la detección de VM).

detect_virtual_machine tiene una xref a FUN_10007ab0, renombrada como detect_virtual_machine_node_handler, que parece ser el punto de entrada de la biblioteca para cosas de Node (constructor y destructor alrededor de nuestra función 'principal' detect_virtual_machine).

detect_virtual_machine se puede parchear para que retorne inmediatamente. El lado derecho de la captura de pantalla es la versión parcheada.

Esto evita por completo la lógica de detección de VM.
Como se mencionó en la introducción, DigiExam suele estar instalado en ordenadores compartidos de las escuelas. En lugar de parchear la lógica de detección de VM, un atacante podría aprovechar esto para obtener ejecución de código en la sesión de cualquier estudiante en cuanto realice un examen, lo que permitiría ataques más destructivos sobre los documentos e información de los estudiantes. La persistencia se mantiene hasta que DigiExam se actualice.