Review of Kernel-level ASLR protection in the context of ACPI
Review of Kernel-level ASLR protection in the context of ACPI
Supervisor(s): | Bruno Bierbaumer |
Status: | finished |
Topic: | Others |
Author: | Bogad Katharina |
Submission: | 2018-05-15 |
Type of Thesis: | Bachelorthesis |
DescriptionTraditionally, malware is easily removable by re-installing the operating system and starting from scratch. If an attacker wants to persist his malware, a storage outside of the operating systems has to be found. To access the operating system from this point, kernel-level address space layout randomization has to be overcome. In this thesis, we explore the feasibility of hiding malware in ACPI bytecode by finding the kernel ASLR slide. First, we sketch a proof that ASL, the programming language of ACPI, is turing-complete. Furthermore, we demonstrate that because ACPI uses physical addresses, the kernel can be found via brute force. Additionally, we show that this holds true in any kASLR configuration offered by the Linux kernel on x86, x86 64 and AArch64 machines. Thus, we conclude that kASLR is fundamentally flawed once address translation can be overcome, by using either direct bus access or remapping like ACPI. This shows that kASLR of physical addresses offers no security benefits. Additionally, we demonstrate a proof-of-concept backdoor against current Linux kernels using our technique to break kASLR. To mitigate our attack, we recommend that the ACPI specification should introduce a blacklist of disallowed memory regions, effectively prohibiting writes to the kernel memory region and thus preventing exploitation. |