SGX представляет собой набор инструкций и функций процессора для создания безопасной закрытой зоны, в которой код может выполняться без проверки или вмешательства со стороны любого другого ПО, в том числе гипервизора и операционной системы. Технология используется для безопасной обработки финансовых транзакций, расшифровки антипиратской защиты лицензионных фильмов и пр. Тем не менее, исследователям удалось взломать SGX с помощью давно известной техники – возвратно-ориентированного программирования (ROP).
Возвратно-ориентированное программирование предполагает перезапись стека потока таким образом, чтобы приложение выполняло не свои обычные функции, а вредоносные. Этого можно добиться путем объединения частей хранящихся в памяти несвязанных инструкций с целью манипулирования операциями программного обеспечения. Это как взломать чужой автомобиль с помощью монтировки из его же багажника.
Злоумышленник может изменить в стеке адреса возврата, и после завершения рутинной операции код вернется не туда, где ему положено быть, а в небольшие секции другого кода. За этими секциями следует другая секция, а за ней еще одна, составляя своеобразное лоскутное одеяло из инструкций, указывающих программе выполнять действия, которые она выполнять не должна (например, модифицировать данные).
В своем докладе специалисты Грацкого технологического университета описали технику обхода различных технологий безопасности (в том числе ASLR) и выполнения произвольного кода, способного похищать информацию и осуществлять DoS-атаки с помощью SGX и ROP.
Создаваемая SGX закрытая зона использует для связи с внешним миром установленное приложение. Разработанная исследователями техника позволяет закрытой зоне связываться с ОС под видом обычного процесса. В результате вредоносное ПО оказывается скрытым от глаз, но может делать в окружающей его среде все что угодно.