
# CVE-2023-33668 DigiExam 우회 기술 분석 DigiExam 감독 소프트웨어의 CVE-2023-33668에 대한 기술 분석 및 개념 증명 우회로, 취약한 VM 탐지 및 네이티브 모듈 무결성 검사를 입증합니다.
DigiExam은 감시 시험 및 감독(proctoring) 소프트웨어입니다. 이 소프트웨어는 학교(또는 학생) 컴퓨터에 설치됩니다. 학생이 시험에 참가하면 DigiExam은 다음을 수행합니다: 가상 머신에서 실행 중인지 확인하고, 모든 애플리케이션을 종료하며, 자신을 전체 화면으로 전환하고, 사용자가 DigiExam 창 외의 다른 곳으로 이동하지 못하게 합니다.
보안 탐지 기능이 취약하여 파일 시스템에서 (사용자가 소유한) 파일 하나를 교체하는 것만으로 쉽게 우회할 수 있다는 사실이 발견되었습니다. 이 방법은 DigiExam v14.0.2에서 작동하는 것이 확인되었으며 그 이후로는 다시 테스트되지 않았습니다(저는 시험에 합격했습니다 :))).
취약점: DigiExam(Electron 애플리케이션)은 가상 머신 탐지(및 대부분의 보안 기능)를 dx-sec이라는 네이티브 모듈에 "아웃소싱"합니다. dx-sec 모듈에 대한 무결성 검사가 없기 때문에 해당 모듈을 패치된 버전으로 교체할 수 있습니다. 패치는 기본적으로 dx-sec 내에 있는 모든 기능을 수정할 수 있으며, 가상 머신 탐지(및 불법 프로세스 화이트리스트 등 다른 기능)가 여기에 포함됩니다.
DigiExam 애플리케이션은 첫 실행 시 %localappdata%\DigiExam\app-14.0.2\resources\app.asar.unpacked\node_modules\%modulename%\build\Release\%modulename.node%에 네이티브 모듈을 다운로드합니다. 이 .node 파일들은 (file 명령에 따르면) PE32 executable (DLL) (GUI) Intel 80386, for MS Windows 유형입니다.
Ghidra에서 dx-sec 파일을 열고 "Virtual Machine" 문자열을 검색하면 많은 결과가 나오며 FUN_10020370 - 이름을 바꾸면 detect_virtual_machine - 으로 이어집니다(이 함수는 VM 탐지를 위해 검사하는 대상에 대한 매우 흥미로운 통찰을 제공합니다).

detect_virtual_machine에는 FUN_10007ab0 - 이름을 바꾸면 detect_virtual_machine_node_handler - 로의 xref가 하나 있는데, 이는 Node 관련 항목의 라이브러리 진입점으로 보입니다(우리의 'main' 함수 detect_virtual_machine 주변의 생성자와 소멸자).

detect_virtual_machine은 즉시 반환하도록 패치할 수 있습니다. 스크린샷의 오른쪽이 패치된 버전입니다.

이렇게 하면 VM 탐지 로직이 완전히 우회됩니다.
서문에서 언급했듯이, DigiExam은 공용 학교 컴퓨터에 자주 설치됩니다. 공격자는 VM 탐지 로직을 패치하는 대신 이를 활용하여 학생이 시험을 치르는 즉시 모든 학생의 세션에서 코드 실행을 얻을 수 있으며, 이를 통해 학생의 문서와 정보에 대한 더 파괴적인 공격이 가능합니다. 지속성은 DigiExam이 업데이트될 때까지 유지됩니다.