TY - GEN
T1 - Protecting COTS binaries from disclosure-guided code reuse attacks
AU - Zhang, Mingwei
AU - Sekar, R.
PY - 2017/12/4
Y1 - 2017/12/4
N2 - Code diversification, combined with execute-only memory, provides an effective defense against just-in-Time code reuse attacks. However, existing techniques for combining code diversification and hardware-Assisted memory protections typically require compiler support, as well as the deployment or modification of a hypervisor. These requirements often cannot be met, either because source code is not available, or because the required hardware features may not be available on the target system. In this paper we present SECRET, a software hardening technique tailored to legacy and closed-source software that provides equivalent protection to execute-only memory without relying on hardware features or recompilation. This is achieved using two novel techniques, code space isolation and code pointer remapping, which prevent read accesses to the executable memory of the protected code. Furthermore, SECRET thwarts code pointer harvesting attacks on ELF files by remapping existing code pointers to use random values. SECRET has been implemented on 32-bit Linux systems. Our evaluation shows that it introduces just 2% additional runtime overhead on top of a stateof-the-Art CFI implementation, bringing the total average overhead to about 16%. In addition, it achieves better protection coverage compared to compiler-based techniques, as it can handle low-level machine code such as inline assembly or extra code introduced by the linker and loader.
AB - Code diversification, combined with execute-only memory, provides an effective defense against just-in-Time code reuse attacks. However, existing techniques for combining code diversification and hardware-Assisted memory protections typically require compiler support, as well as the deployment or modification of a hypervisor. These requirements often cannot be met, either because source code is not available, or because the required hardware features may not be available on the target system. In this paper we present SECRET, a software hardening technique tailored to legacy and closed-source software that provides equivalent protection to execute-only memory without relying on hardware features or recompilation. This is achieved using two novel techniques, code space isolation and code pointer remapping, which prevent read accesses to the executable memory of the protected code. Furthermore, SECRET thwarts code pointer harvesting attacks on ELF files by remapping existing code pointers to use random values. SECRET has been implemented on 32-bit Linux systems. Our evaluation shows that it introduces just 2% additional runtime overhead on top of a stateof-the-Art CFI implementation, bringing the total average overhead to about 16%. In addition, it achieves better protection coverage compared to compiler-based techniques, as it can handle low-level machine code such as inline assembly or extra code introduced by the linker and loader.
UR - https://www.scopus.com/pages/publications/85038907408
U2 - 10.1145/3134600.3134634
DO - 10.1145/3134600.3134634
M3 - Conference contribution
AN - SCOPUS:85038907408
T3 - ACM International Conference Proceeding Series
SP - 128
EP - 140
BT - Proceedings - 33rd Annual Computer Security Applications Conference, ACSAC 2017
PB - Association for Computing Machinery
T2 - 33rd Annual Computer Security Applications Conference, ACSAC 2017
Y2 - 4 December 2017 through 8 December 2017
ER -