This thesis developed an automated approach to detect known vulnerabilities in OT firmware binaries without source code access. Using CVE-2015-4590 (a buffer overflow in ArduinoJson library versions < 4.5) as a case study, I demonstrated two detection methods:
The goal: enable OT security teams to scan firmware for known CVEs before deployment, even when firmware updates are delayed or unavailable.
76.7% true positive rate (23 of 30 vulnerable builds detected) with 0% false positives on patched firmware
Reduced signature to 8 bytes with collision probability of ~1 in 1.8×10¹⁹, includes function size (84 bytes) as additional criterion
CFG-based graph isomorphism successfully identified vulnerable functions across ARM (STM32) and Xtensa (ESP8266) architectures
GCC 12.x and 13.x: Accurate detection | GCC 14.x: Not accurate (compiler optimization affects signature)
NSA's reverse engineering framework for firmware disassembly, decompilation, and machine code analysis
Pattern matching tool for malware analysis, used to create byte-signature detection rules
ARM Cortex-M4 and Xtensa LX106 microcontrollers used for cross-architecture validation
IDE for embedded development, used to compile vulnerable and patched firmware builds
The research proposes a fully automated YARA signature generation pipeline: CVE → Vulnerable Library → Architecture-Specific Signatures. This would enable security teams to automatically generate detection rules for new CVEs without manual reverse engineering, scaling vulnerability detection across thousands of OT devices.