Опубликована техника обхода SMEP-защиты при эксплуатации Linux уязвимостей

Опубликована техника обхода SMEP-защиты при эксплуатации Linux уязвимостей

В ядре Linux 3.0 была представлена поддержка режима SMEP (Supervisor Mode Execution Protection), присутствующего в процессорах Intel на базе архитектуры Ivy Bridge. Использование SMEP не даёт переходить из режима ядра к выполнению кода, находящегося на пользовательском уровне, что позволяет блокировать эксплуатацию многих уязвимостей в ядре Linux (shell-код не будет выполнен, так как он находится в пространстве пользователя).

Один из исследователей безопасности опубликовал интересный способ эксплуатации уязвимостей в ядре в обход защиты SMEP (существуют и другие пути обхода SMEP, но данный метод заслуживает внимания в силу своей оригинальности), сообщает opennet.ru.

Метод построен на основе организации подстановки последовательности инструкций в исполняемую область JIT-компилятора (например, подсистемы BPF - Berkeley Packet Filter), генерирующего код на основе входных данных, которые могут контролироваться атакующим. Так как JIT-компилятор контролирует генерацию кода, так просто подставить инструкции не получится. Но можно воспользоваться тем, что входящие данные используются в качестве аргументов генерируемых инструкций. Например, для входных данных "$0xa8XXYYZZ" и "$0xa8PPQQRR" будет сгенерирован код:

b8 ZZ YY XX a8 mov $0xa8XXYYZZ, %eax
b8 RR QQ PP a8 mov $0xa8PPQQRR, %eax
b8 ...

Если пропустить байт с кодом инструкции mov (b8) и передать управление на следующий за ним байт (ZZ) будет выполнен машинный код "ZZ YY XX". При этом переданные в хвосте данные "a8" будут обработаны как ничего не значащая команда test с аргументом из кода команды mov (b8):

ZZ YY XX (подконтрольные атакующему инструкции)
a8 b8 test $0xb8, %al
RR QQ PP (подконтрольные атакующему инструкции)
a8 b8 test $0xb8, %al

Таким образом у злоумышленника появляется возможность формирования произвольной последовательности трёхбайтовых команд, выполняемой в пространстве ядра. При эксплуатации уязвимости, управление может быть передано на данные команды, в которых можно повысить привилегии процесса или отключить SMEP и передать управление на обычный shell-код в пространстве пользователя.

Почему в России не заблокировали iMessage? Могут сломаться уведомления

После того как в России запретили FaceTime, многие удивились: а почему под запрет не попал iMessage? Оба сервиса со сквозным шифрованием, оба не дают властям читать переписку или перехватывать звонки. На первый взгляд — идеальные кандидаты для блокировки. Но iMessage остался нетронутым.

Теперь всплыла любопытная версия, объясняющая, почему запрет этой службы может оказаться куда сложнее, чем кажется.

Напомним, Роскомнадзор объявил о блокировке FaceTime под предлогом «противодействия терроризму». Но почти сразу возник резонный вопрос: почему тогда не ограничили iMessage, который также полностью зашифрован?

Первая гипотеза была проста: в России iMessage почти никто не использует, поэтому блокировать его смысла нет. Но есть версия поинтереснее.

Исследователь Джон Грубер поднял эту тему, и в обсуждение включился пользователь Mastodon под ником Magebarf. Он напомнил, что трафик iMessage проходит по тем же серверам, что и пуш-уведомления Apple.

Иными словами, если кто-то попытается заблокировать iMessage, то заодно сломает доставку всех пуш-уведомлений на iPhone в стране. А это уже удар не по отдельному сервису, а по всей экосистеме Apple.

Считается, что Apple намеренно построила архитектуру так, чтобы операторы не могли избирательно блокировать iMessage — ведь когда-то СМС приносили им большие деньги, и им могло не понравиться, что люди вдруг начинают переписываться бесплатно.

Magebarf привёл интересный пример: если подключиться в самолёте к тарифу «только для сообщений», доступ к интернету там фактически ограничен, но пуш-уведомления продолжают приходить. Это, по его мнению, подтверждает объединение этих сервисов в единый канал.

Если версия верна, то заблокировать iMessage в стране — означает выключить уведомления у всех iPhone. Это технически возможно, но ударит по пользователям настолько сильно, что последствия могут быть уже политическими и экономическими.

Так что ответ на вопрос «почему Россия не забанила iMessage» может быть крайне прозаичным: потому что это почти невозможно сделать, не вызвав хаос в экосистеме Apple.

RSS: Новости на портале Anti-Malware.ru