Опубликована техника обхода 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-код в пространстве пользователя.

iOS 26.3 сможет ограничивать доступ операторов связи к геоданным

Apple добавила в тестовую ветку iOS 26.3 новую функцию конфиденциальности, но она будет доступна только на устройствах с фирменным модемом компании. Речь идёт о настройке доступа к точному мезоположению, что позволяет ограничить число данных геолокации, передаваемых сотовым сетям.

Как объясняет Apple в соответствующем документе, при включённой опции оператор получает меньше информации о том, где находится устройство.

Вместо точного адреса или улицы сеть сможет определить лишь примерную локацию — например, район или квартал. При этом компания подчёркивает: на качество связи и пользовательский опыт это никак не влияет, а данные о местоположении, которые передаются экстренным службам, остаются точными.

Важно и то, что речь идёт именно о данных, доступных сотовым операторам, а не приложениям или системным сервисам iOS. То есть это ещё один слой приватности «под капотом», для которого раньше просто не было отдельной настройки.

Функция работает не на всех устройствах. Сейчас она доступна только для моделей с модемами Apple: iPhone Air, iPhone 16e и iPad Pro (M5) с поддержкой сотовой связи, при условии, что на них установлена iOS 26.3 или новее.

Кроме того, нужен поддерживаемый оператор — пока список довольно скромный и включает Telekom в Германии, EE и BT в Великобритании, Boost Mobile в США, а также AIS и True в Таиланде.

Включается всё просто: «Настройки» → «Сотовая связь» → «Параметры сотовых данных» → Limit Precise Location. В некоторых случаях система может попросить перезагрузить устройство.

Пока эта возможность выглядит нишевой, но в ней легко увидеть задел на будущее.

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