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

В 100 приложениях для знакомств оказалось около 2000 уязвимостей

Исследование ста приложений для знакомств — как российских, так и зарубежных — показало тревожную картину: в них обнаружено почти 2000 уязвимостей, причём 17% из них относятся к критическим. Анализ провела компания AppSec Solutions.

Результаты исследования приводят «Ведомости». Как пояснил изданию руководитель отдела анализа защищённости AppSec Solutions Никита Пинаев, ещё 23% выявленных уязвимостей имеют средний уровень критичности, а 14% — низкий.

Оставшиеся проблемы относятся к категории Info либо представляют собой организационные, сетевые, логические и другие ошибки.

Наиболее распространённой критической проблемой, по словам Никиты Пинаева, стало хранение чувствительных данных непосредственно в исходном коде — такую ошибку выявили в 22 приложениях.

В ещё 46 случаях идентификационные данные, включая логины, пароли и токены, передавались в открытом виде. В 12 приложениях уязвимости были связаны с ошибками аутентификации и управления сессиями, а в 40 — с некорректной настройкой или работой облачных сервисов.

Мобильный разработчик компании EvApps Андрей Соболевский отметил в комментарии для «Ведомостей», что в среднем в одном мобильном приложении насчитывается от 20 до 30 уязвимостей. Чаще всего они связаны с небезопасным хранением данных, слабыми механизмами идентификации и аутентификации пользователей, а также с SQL-инъекциями.

По словам руководителя отдела операционной поддержки платформы Solar appScreener ГК «Солар» Антона Прокофьева, уязвимости мобильных приложений носят типовой характер и практически не зависят от отрасли. Основные причины — отсутствие проверок на этапе разработки и использование непроверенных компонентов с открытым исходным кодом.

Руководитель разработки PT Maze в Positive Technologies Николай Анисеня добавил, что применение средств, затрудняющих реверс-инжиниринг, позволило бы сократить количество выявляемых уязвимостей примерно на 40%, а в отдельных категориях приложений — даже вдвое.

Антон Прокофьев также отметил, что в приложениях массовых сервисов — к которым, помимо дейтинга, относятся доставка еды, онлайн-магазины и аптечные сервисы — чаще всего встречаются пять категорий уязвимостей:

  • Обращение к DNS, позволяющее злоумышленникам перенаправлять запросы на сторонние ресурсы.
  • Небезопасная рефлексия, создающая возможность запуска произвольного кода.
  • Ошибки в реализации протоколов шифрования.
  • Использование слабых алгоритмов хеширования.
  • Применение незащищённых протоколов обмена данными.

Подобные уязвимости встречаются в трёх из четырёх приложений и открывают возможности для атак типа MITM («человек посередине»), при которых злоумышленник внедряется в канал связи. Это, в свою очередь, чревато утечками пользовательских данных.

Архитектор информационной безопасности UserGate uFactor Дмитрий Овчинников отметил, что одна из главных опасностей таких атак — их незаметность для пользователей. При этом злоумышленники могут не только похищать данные, но и получать доступ к скрытому функционалу приложений, а затем использовать эту информацию в других, в том числе таргетированных атаках. Инженер ИБ компании «Спикател» Владимир Иванов также предупредил, что, например, сталкеры могут использовать функции дейтинговых приложений для слежки за пользователями.

Всего, по данным AppSec Solutions, уязвимости присутствуют в 70% мобильных приложений. Злоумышленники активно используют их для монетизации доступа — через фишинг, масштабирование массовых атак, выманивание денег за несуществующие услуги, а также злоупотребление чужими счетами и платными подписками.

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