Code Pointer Masking (CPM) is a novel countermeasure against code injection attacks on native code. By enforcing the correct semantics of code pointers, CPM thwarts attacks that modify code pointers to divert the application’s control flow. It does not rely on secret values such as stack canaries and protects against attacks that are not addressed by state-of-the-art countermeasures of similar performance. This article reports on two prototype implementations on very distinct processor architectures, showing that the idea behind CPM is portable. The evaluation also shows that the overhead of using our countermeasure is very small and the security benefits are substantial.
['Pieter Philippaerts', 'Yves Younan', 'Stijn Muylle', 'Frank Piessens', 'Sven Lachmund', 'Thomas Walter']
CPM: Masking Code Pointers to Prevent Code Injection Attacks