Может показаться, что на сегодняшний день существует множество операционных систем, предназначенных для различных задач. Существуют общеиспользуемые операционные системы, такие как Windows, macOS, или дистрибутивы на базе ядра Linux. Также существуют специализированные операционные системы, предназначенные для авиации, промышленности, с real-time характеристиками и высокой надежностью. Однако, несмотря на разнообразие операционных систем, полностью безопасных систем не существует. Обычно меры безопасности разрабатываются в ответ на известные или потенциальные угрозы. Однако этот подход не обеспечивает абсолютной защиты. Новые классы угроз возникают с удивительной регулярностью, что разработчики не всегда могут предвидеть.
Примером таких угроз является техника возвратно-ориентированного программирования (return-oriented programming). Ранее считалось, что запрет исполнения кода в определенных областях и защита области памяти, содержащей программный код, должны гарантировать безопасность