Странные машины: как хакеры собирают процессор из данных

Как часто нам приходится читать в бюллетенях безопасности *«Уязвимость... позволяющая нарушителю выполнить произвольный код с помощью специально сформированного запроса»*. Но что на самом деле скрывается за этой фразой? Что это за специальные запросы и как наша программа может выполнять чужой код, если мы досконально знаем в ней каждую строчку и каждую библиотеку?
И почему тогда Apple [платит до двух миллионов долларов](https://security.apple.com/bounty/) за одну найденную уязвимость и выстраивает многоуровневую аппаратную защиту — а айфоны всё равно взламывают по нажатию одной кнопки?
Всё дело в том, что сами атаки стали другими. Когда инженеры перекрыли большинство очевидных ходов, хакерам пришлось изменить сам подход к взлому. Вместо поиска лазеек они научились брать легитимные вычисления программы и строить поверх них... виртуальный процессор. Даже стандартную функцию вывода текста `printf` удалось превратить в Тьюринг-полный интерпретатор — то есть вычислитель, способный выполнить любой алгоритм.
Перед нами — Data-Only атаки, где взлом превращается в программирование на «невидимом» процессоре. Процессоре, команды которого — лишь побочный эффект работы нашей собственной программы.
Но чтобы понять, как мы здесь оказались, придётся вернуться на двадцать лет назад.
[Читать далее](https://habr.com/ru/articles/1059800/?utm_source=habrahabr&utm_medium=rss&utm_campaign=1059800#habracut)
https://habr.com/ru/articles/1059800/?utm_source=habrahabr&utm_medium=rss&utm_campaign=1059800