An Implementation of Program Counter Encoding with TPM
Soohyun Park, Changwoo Pyo, Sun-il Kim, Gyung-Ho Lee · 2011
Program counter encoding is a method that can prevent code pointer attacks as yet unknown including the stack smashing. Program counter encoding enforces encoding code pointer values when they are stored and decoding when they are loaded into the program counter. Safety of the key values and storage used for encoding code pointers determines the trustworthiness of program counter encoding. This paper presents and evaluates an implementation of program counter encoding with TPM (Trusted Platform Module) to reinforce the trustworthiness of the keys for program counter encoding. Simulated attacks against return addresses on stack and heap area confirmed defensive capability of program counter encoding. Performance of our implementation shows 3% overhead in SPEC CPU2006. The suggested implementation is based on the considerations of both performance and trustworthiness.