In the exploit research community, an arms race is ongoing between offensive and defensive researchers. As successful attacks are published or discovered, defensive researchers aim to disrupt similar attacks from succeeding in the future. To do this, they design and implement exploit mitigations. When a new mitigation is first introduced, it disrupts the offensive community. Offensive researchers must then devise new techniques to work around the newly added protection. As researchers develop these techniques and publish them, the effectiveness of the technique decreases. Defensive researchers then return to the drawing board to design new protections, and so the cycle continues.
This chapter discusses modern exploit mitigations and how they relate to the Android operating system. The chapter first explores how various mitigations function from a design and implementation point of view. Then it presents a historical account of Android's support for modern mitigations, providing code references when available. Next, the chapter discusses methods for intentionally disabling and overcoming exploit mitigations. Finally, the chapter wraps up by looking forward at what exploit mitigation techniques the future might bring to Android.
Modern operating systems use a variety of exploit mitigation techniques for enhanced protection against attacks. Many of these techniques aim squarely at preventing the exploitation of memory corruption ...