{'fraction_non_alphanumeric': 0.030234315948601664, 'fraction_numerical': 0.003779289493575208, 'mean_word_length': 5.274881516587678, 'pattern_counts': {'":': 0, '<': 0, '<?xml version=': 0, '>': 0, 'https://': 0, 'lorem ipsum': 0, 'www.': 0, 'xml': 0}, 'pii_count': 0, 'substrings_counts': 0, 'word_list_counts': {'cursed_substrings.json': 0, 'profanity_word_list.json': 0, 'sexual_word_list.json': 0, 'zh_pornsignals.json': 0}}
IskiOS: Lightweight Defense Against Kernel-Level Code-Reuse Attacks

Commodity operating systems such as Windows, Linux, and MacOS X form the Trusted Computing Base (TCB) of today's computing systems. However, since they are written in C and C++, they have memory safety errors and are vulnerable to kernel-level code reuse attacks. This paper presents IskiOS: a system that helps to thwart such attacks by providing both execute-only memory and an efficient shadow stack for operating system kernels on the x86 processor. Execute-only memory hides the code segment from buffer overread attacks, strengthening code randomization techniques. Shadow stacks protect return addresses from corruption. IskiOS leverages Intel's Memory Protection Keys (MPK, a.k.a. PKU) and Kernel Page Table Isolation (KPTI) to protect kernel memory from buffer overwrite and overread attacks and to prevent corruption of the shadow stack. Unlike previous work, IskiOS places no restrictions on virtual address space layout, allowing the operating system to achieve higher diversification entropy by placing kernel stacks and kernel code in arbitrary locations within the virtual address space. IskiOS incurs virtually no performance overhead for execute-only memory. Its shadow stacks incur a geometric mean slowdown of 12.3% in our experiments.