Как известно, выполняемый в анклаве код серьёзно ограничен в своей функциональности. Он не может делать системные вызовы. Он не может осуществлять операции ввода-вывода. Он не знает базового адреса сегмента кода хост-приложения. Он не может jmp'ить и call'ить код хост-приложения. Он не имеет представления о структуре адресного пространства, которой руководствуется хост-приложение (например, какие именно страницы промаппены или что за данные размещены на этих страницах). Он не может просить операционную систему промаппить ему кусок памяти хост-приложения (например, через /proc/pid/maps). Наивные попытки прочитать вслепую произвольную область памяти хост-приложения, – не говоря уже о попытках записи, – рано или поздно (скорее первое) приведут к принудительному завершению анклавной программы. Так происходит всякий раз, когда запрашиваемая анклавом область виртуального адресного пространства оказывается недоступной хост-приложению.
Сможет ли вирусописатель при таких суровых реалиях задействовать SGX-анклавы для реализации своих злонамеренных целей?
– Хак для зондирования адресов на предмет возможности их считывания
– Хак для зондирования адресов на предмет возможности записи
– Хак для перенаправления потока управления
– Что дают злодею три перечисленные выше хака
– Как злодей задействует эти хаки для создания ранзомвари
Читать полностью »