Protection against Indirect Overflow Attacks on Pointers

  • Authors:
  • Ge Zhu;Akhilesh Tyagi

  • Affiliations:
  • -;-

  • Venue:
  • IWIA '04 Proceedings of the Second IEEE International Information Assurance Workshop (IWIA'04)
  • Year:
  • 2004

Quantified Score

Hi-index 0.00

Visualization

Abstract

Buffer overflow has accounted for a large fraction ofInternet based attacks since 1988. Many solutions havebeen proposed to protect against a direct stack smashingattack overwriting a return address. In this paper, wetarget indirect buffer overflow attacks that overflow abuffer in memory to re-point a function pointer to theattacker's program. This type of attack could bypass mostof the current stack protection mechanisms. Ourproposed approach encrypts a function pointer before itis put into the memory and decrypts it before it is takenfrom the memory. Each function pointer is encrypted witha unique key that is randomized by the loader/linker foreach program run. This leads to two desirable properties:(1) orthogonality of key space, (2) zero incrementalknowledge gain for the adversary between two attacks ontwo different program runs. The key space orthogonalitydoes not allow a one key compromise to propagate toother function pointers. The "zero knowledge gain"forces the adversary to compromise all (or most of) thekeys in the same run. This is difficult since loader/linkerbased key randomization leads to a 2{32} iteration bruteforce attack on each key for a 32-bit architecture. Thisscheme was incorporated into GCC-3.0 on RedHat 7.0Linux distribution. The performance overhead of thisscheme is below 4.5% on Apache web server version1.3.22 with WebStone 2.5 as benchmark.