Abstract
A lack of temporal safety in low-level languages has led to an epidemic of use-after-free exploits. These have surpassed in number and severity even the infamous buffer-overflow exploits violating spatial safety. Capability addressing can directly enforce spatial safety for the C language by enforcing bounds on pointers and by rendering pointers unforgeable. Nevertheless, an efficient solution for strong temporal memory safety remains elusive.
CHERI is an architectural extension to provide hardware capability addressing that is seeing significant commercial and open-source interest. We show that CHERI capabilities can be used as a foundation to enable low-cost heap temporal safety by facilitating out-of-date pointer revocation, as capabilities enable precise and efficient identification and invalidation of pointers, even when using unsafe languages such as C. We develop CHERIvoke, a technique for deterministic and fast sweeping revocation to enforce temporal safety on CHERI systems. CHERIvoke quarantines freed data before periodically using a small shadow map to revoke all dangling pointers in a single sweep of memory, and provides a tunable trade-off between performance and heap growth. We evaluate the performance of such a system using high-performance x86 processors, and further analytically examine its primary overheads. When configured with a heap-size overhead of 25%, we find that CHERIvoke achieves an average execution-time overhead of under 5%, far below the overheads associated with traditional garbage collection, revocation, or page-table systems.
CHERI is an architectural extension to provide hardware capability addressing that is seeing significant commercial and open-source interest. We show that CHERI capabilities can be used as a foundation to enable low-cost heap temporal safety by facilitating out-of-date pointer revocation, as capabilities enable precise and efficient identification and invalidation of pointers, even when using unsafe languages such as C. We develop CHERIvoke, a technique for deterministic and fast sweeping revocation to enforce temporal safety on CHERI systems. CHERIvoke quarantines freed data before periodically using a small shadow map to revoke all dangling pointers in a single sweep of memory, and provides a tunable trade-off between performance and heap growth. We evaluate the performance of such a system using high-performance x86 processors, and further analytically examine its primary overheads. When configured with a heap-size overhead of 25%, we find that CHERIvoke achieves an average execution-time overhead of under 5%, far below the overheads associated with traditional garbage collection, revocation, or page-table systems.
Original language | English |
---|---|
Title of host publication | Proceedings of the 52nd Annual IEEE/ACM International Symposium on Microarchitecture |
Place of Publication | New York, NY, USA |
Publisher | ACM Association for Computing Machinery |
Pages | 545–557 |
Number of pages | 13 |
ISBN (Print) | 9781450369381 |
DOIs | |
Publication status | Published - 12 Oct 2019 |
Event | 52nd IEEE/ACM International Symposium on Microarchitecture - Columbus, United States Duration: 12 Oct 2019 → 16 Oct 2019 https://www.microarch.org/micro52/index.html |
Publication series
Name | MICRO ’52 |
---|---|
Publisher | Association for Computing Machinery |
ISSN (Electronic) | 1072-4451 |
Conference
Conference | 52nd IEEE/ACM International Symposium on Microarchitecture |
---|---|
Abbreviated title | MICRO 2019 |
Country/Territory | United States |
City | Columbus |
Period | 12/10/19 → 16/10/19 |
Internet address |
Keywords / Materials (for Non-textual outputs)
- use-after-free
- temporal safety
- security
- architecture