Our Goal Unix programs run in a "POSIX environment" POSIX specifies three things: Things we cannot (should not) change in Unix Things we can change in Unix Things which are... left as undefined But there are also other standards, and "defacto" behaviours ... we must be careful Our goals: 1. Do not break the behaviours that programs expect 2. DO NOT BREAK THE BEHAVIOURS THAT PROGRAMS DEPEND ON 3. Change anything else which makes an exploit author cry What follows is a list of such mechanisms...