The Unlink attack is a way of attacking the heap overflow vulnerability
under the Linux platform. However, because the heap overflow data seldom
directly leads to program control flow hijacking and related protection
mechanism limitations, the existing detection technology is difficult to judge whether
the program meets the heap overflow attack condition. There are certain
inspection measures in the existing unlink mechanism, but with carefully
constructing the contents of the heap, you can bypass the inspection measures.
The unlink mechanism must be triggered with the free function, and this
principle is similar to function-exit of stacks.The
paper obtains the inspiration through the canary protection mechanism in the
stack, adds it to the chunk structure, encrypts the canary value, and defends the
unlink attack from the fundamental structure. The experimental results show
that this method can effectively prevent the occurrence of unlink attacks and
has the ability to detect common heap overflows.
References
[1]
von Hagen, W. (2006) Building and Installing Glibc. In: The Definitive Guide to GCC, Apress, Berkeley, CA, 247-279. https://doi.org/10.1007/978-1-4302-0219-6_12
[2]
Conover, M. (1999) w00w00 on Heap Overflows.
[3]
Sumi, A. (2003) Bounds Checking for C and C++. Social Science Japan Journal, 1, 165-168.
[4]
Dinakar, D. and Vikram, A. (2006) Backwards-Compatible Array Bounds Checking for C with Very Low Overhead. In: Proceedings of the 28th International Conference on Software Engineering, ACM, New York, 162-171. https://doi.org/10.1145/1134285.1134309
[5]
Lhee, K. and Chapin, S.J. (2002) Type-Assisted Dynamic Buffer Overflow Detection. In: USENIX Security Symposium, San Francisco, CA, 81-88.
[6]
Robertson, W.K., Kruegel, C., Mutz, D. and Valeur, F. (2003) Run-Time Detection of Heap Based Overflows. In: 2003 Large Installation Systems Administration Conference, San Diego, CA, 51-60.
[7]
Zeng, Q., Wu, D. and Liu, P. (2011) Cruiser: Concurrent Heap Buffer Overflow Monitoring Using Lock-Free Data Structures. In: ACM SIGPLAN Notices, ACM, New York, 367-377. https://doi.org/10.1145/1993316.1993541
[8]
Kharbutli, M., Jiang, X., Solihin, Y., Venkataramani, G. and Prvulovic, M. (2006) Comprehensively and Efficiently Protecting the Heap. ACM SIGOPS Operating Systems Review, 40, 207-218. https://doi.org/10.1145/1168917.1168884
[9]
Miller, C., Caballero, J., et al. (2010) Crash Analysis with BitBlaze. Revista Mexicana De Sociología, 44, 81-117.
[10]
Heelan, S. (2009) Automatic Generation of Control Flow Hijacking Exploits for Software Vulnerabilities. University of Oxford, Oxford.
[11]
Zhu, J. (2017) Research on Enhanced Stack Protection Technology Based on Canary. Nanjing University, Nanjing.
Wang, Y., Cao, Y. and Wang, M. (2018) Study on Stack Protection Technology Based on GCC Plug-in. Microelectronics & Computer, 35, 133-136.
[14]
Wang, X. and Yu, H. (2005) How to Break MD5 and Other Hash Functions. In: Cramer, R., Ed., Advances in Cryptology-EUROCRYPT 2005. Lecture Notes in Computer Science, Springer, Berlin, Heidelberg, 19-35. https://doi.org/10.1007/11426639_2