TY - GEN
T1 - TAILCHECK
T2 - 17th USENIX Symposium on Operating Systems Design and Implementation, OSDI 2023 Co-located with USENIX ATC 2023
AU - Shankaranarayana Gopal, Amogha Udupa
AU - Soori, Raveendra
AU - Ferdman, Michael
AU - Lee, Dongyoon
N1 - Publisher Copyright: © OSDI 2023.All rights reserved.
PY - 2023
Y1 - 2023
N2 - A heap overflow vulnerability occurs when a program written in an unmanaged language such as C or C++ accesses a memory location beyond an object allocation boundary. Malicious users may exploit this vulnerability to corrupt an adjacent object in memory, creating an entry point for a security attack. Despite decades of research, unfortunately, it still remains challenging to detect heap overflow vulnerabilities in real-world programs at a low cost. We present TAILCHECK, a new lightweight heap overflow detection scheme that leverages page protection and pointer tagging. When an object is created, TAILCHECK allocates an additional page-protected shadow object, called a TailObject, placing the distance from the object to its TailObject as a tag stored in the unused high-order bits of the object pointer. For every access to the original object, TAILCHECK performs an additional memory access to the TailObject, whose address is computed using the tag. Heap overflows are detected as page faults when an access occurs beyond the TailObject. We evaluated TAILCHECK with four server applications (apache, nginx, memcached, redis) and the SPEC CPU2017 and SPEC CPU2006 benchmarks, successfully finding heap overflows in SPEC CPU2017 gcc. TAILCHECK experiences 4% and 3% run-time overhead for the average and tail (99%) latencies for server applications; and only 33% and 29% runtime overhead for SPEC CPU2017 and SPEC CPU2006, respectively, less than the state-of-the-art solution.
AB - A heap overflow vulnerability occurs when a program written in an unmanaged language such as C or C++ accesses a memory location beyond an object allocation boundary. Malicious users may exploit this vulnerability to corrupt an adjacent object in memory, creating an entry point for a security attack. Despite decades of research, unfortunately, it still remains challenging to detect heap overflow vulnerabilities in real-world programs at a low cost. We present TAILCHECK, a new lightweight heap overflow detection scheme that leverages page protection and pointer tagging. When an object is created, TAILCHECK allocates an additional page-protected shadow object, called a TailObject, placing the distance from the object to its TailObject as a tag stored in the unused high-order bits of the object pointer. For every access to the original object, TAILCHECK performs an additional memory access to the TailObject, whose address is computed using the tag. Heap overflows are detected as page faults when an access occurs beyond the TailObject. We evaluated TAILCHECK with four server applications (apache, nginx, memcached, redis) and the SPEC CPU2017 and SPEC CPU2006 benchmarks, successfully finding heap overflows in SPEC CPU2017 gcc. TAILCHECK experiences 4% and 3% run-time overhead for the average and tail (99%) latencies for server applications; and only 33% and 29% runtime overhead for SPEC CPU2017 and SPEC CPU2006, respectively, less than the state-of-the-art solution.
UR - https://www.scopus.com/pages/publications/85180364962
M3 - Conference contribution
T3 - Proceedings of the 17th USENIX Symposium on Operating Systems Design and Implementation, OSDI 2023
SP - 535
EP - 552
BT - Proceedings of the 17th USENIX Symposium on Operating Systems Design and Implementation, OSDI 2023
PB - USENIX Association
Y2 - 10 July 2023 through 12 July 2023
ER -