Memory-unsafe programming languages such as C and C++ are the preferred languages for systems programming, embedded systems, and performance-critical applications. The widespread use of these languages makes the risk of memory-related attacks very high. There are well-known detection mechanisms, but they do not address software resilience. An earlier approach proposes the Secure Domain Rewind and Discard (SDRaD) of isolated domains as a method to enhance the resilience of software targeted by runtime attacks on x86 architecture, based on hardware-enforced Memory Protection Key (MPK). In this work, SDRaD has been adapted to work with the Capability Hardware Enhanced RISC Instructions (CHERI) architecture to be more lightweight and performant. The results obtained in this thesis show that CHERI-SDRaD, the prototype adaption that leverages the memory-safety properties inherent to the CHERI architecture, results in a solution with less performance degradation (2.2% in Nginx benchmarks) compared to earlier results obtained with the original SDRaD prototype on an Intel-based architecture. The adaption to CHERI additionally allowed limitations inherent to the MPK-based approach to be resolved.
翻译:内存不安全的编程语言(如C和C++)是系统编程、嵌入式系统和性能关键型应用的首选语言。这些语言的广泛使用使得内存相关攻击的风险极高。虽然存在已知的检测机制,但它们并未解决软件弹性问题。早期研究基于硬件强制的内存保护密钥(MPK)提出了隔离域的安全域倒带与丢弃(SDRaD)机制,作为增强x86架构上运行时攻击目标软件弹性的方法。本研究将SDRaD适配至能力硬件增强RISC指令(CHERI)架构,使其更为轻量且性能更优。本论文结果表明:CHERI-SDRaD——这一利用CHERI架构固有内存安全特性的原型适配方案——与早期在Intel架构上原始SDRaD原型的测试结果相比,实现了更低的性能损耗(Nginx基准测试中为2.2%)。对CHERI的适配还解决了基于MPK方法固有的局限性。