System software serves as the core component of computing systems, responsible for managing and controlling system resources. When severe vulnerabilities exist in system software, an attacker can exploit them to maliciously control the entire system. ...
System software serves as the core component of computing systems, responsible for managing and controlling system resources. When severe vulnerabilities exist in system software, an attacker can exploit them to maliciously control the entire system. To prevent this, anticipating and addressing bugs and vulnerabilities in system software through detection, patching, and correction is one of the core aspects of system security.
Fuzzing, a dynamic vulnerability searching technique, is widely used as an approach to find bugs in software. Fuzzing's effectiveness depends on its key components: the input generation strategy and bug detection capability. Dependencies exist where ineffective input generation limits the fuzzing code exploration coverage, and insufficient bug detection capability restricts the ability to determine bugs and provide analysis information in the explored code.
These dependency issues tend to become more pronounced when fuzzing is applied to system software. This is because system software, due to its importance and role, processes input across various layers and types, including device inputs, and is often required to operate in specialized environments such as mobile devices, embedded systems, or Trusted Execution Environments (TEEs). The diverse range of inputs complicates the input generation strategy, while specialized execution environments make bug detection challenging.
This paper addresses two representative case studies corresponding to these problems encountered during fuzzing and dynamic vulnerability detection in system software and proposes solutions for them.
The PCIconfuzz introduces an input generation strategy and testing framework for the PCIe configuration space input, one of the device inputs processed by system software. Through this research, we introduce a customized strategy for specialized inputs handled by system software and empirically demonstrate its effectiveness through experiments on code detection coverage and bug discovery likelihood.
The TAsanitizer proposes a method for validating and improving bug detection capability within the ARM TrustZone Secure World, a specialized execution environment for system software. Through this research, we demonstrate the difficulty of bug detection arising from unique execution environments, show the effectiveness of an environment-appropriate approach, and prove its necessity.
This dissertation shows the effectiveness of the proposed research and approaches in strengthening potential system security, and through these studies, suggest that input and environment considerations are necessary for effective bug and vulnerability detection targeting system software.