Code shredding: byte-granular randomization of program layout for detecting code-reuse attacks

  • Authors:
  • Eitaro Shioji;Yuhei Kawakoya;Makoto Iwamura;Takeo Hariu

  • Affiliations:
  • NTT Corporation, Musashino-Shi, Tokyo, Japan;NTT Corporation, Musashino-Shi, Tokyo, Japan;NTT Corporation, Musashino-Shi, Tokyo, Japan;NTT Corporation, Musashino-Shi, Tokyo, Japan

  • Venue:
  • Proceedings of the 28th Annual Computer Security Applications Conference
  • Year:
  • 2012

Quantified Score

Hi-index 0.00

Visualization

Abstract

Code-reuse attacks by corrupting memory address pointers have been a major threat of software for many years. There have been numerous defenses proposed for countering this threat, but majority of them impose strict restrictions on software deployment such as requiring recompilation with a custom compiler, or causing integrity problems due to program modification. One notable exception is ASLR(address space layout randomization) which is a widespread defense free of such burdens, but is also known to be penetrated by a class of attacks that takes advantage of its coarse randomization granularity. Focusing on minimizing randomization granularity while also possessing these advantages of ASLR to the greatest extent, we propose a novel defensive approach called code shredding: a defensive scheme based on the idea of embedding the checksum value of a memory address as a part of itself. This simple yet effective approach hinders designation of specific address used in code-reuse attacks, by giving attackers an illusion of program code shredded into pieces at byte granularity and dispersed randomly over memory space. We show our design and implementation of a proof-of-concept prototype system for the Windows platform and the results from several experiments conducted to confirm its feasibility and performance overheads.