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

AM LiveПодписывайтесь на канал "AM Live" в Telegram, чтобы первыми узнавать о главных событиях и предстоящих мероприятиях по информационной безопасности.

ИИ пишет коды, как талантливый джуниор, и это подрывает безопасность софта

Как выяснили израильские специалисты, сгенерированные ИИ коды по плотности уязвимостей сравнимы с рукописными творениями, однако содержат структурные изъяны, способные повысить риски для введенных в эксплуатацию систем.

В рамках исследования в OX Security изучили содержимое более 300 репозиториев софта, в том числе 50 проектов, созданных с помощью GitHub Copilot, Cursor или Claude.

Многие сгенерированные ИИ коды выглядели чистыми и функциональными: казалось, умный помощник повел себя как одаренный начинающий программист, к тому же обладающий феноменальным быстродействием.

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

Применение ИИ ускорило темпы создания софта, однако такие разработчики зачастую развертывают свои программы, не имея представления о защите хранимых данных и доступа, в том числе через интернет. Справедливости ради стоит отметить, что в подобную ловушку может попасть и профессиональный кодер.

«Функциональные приложения теперь можно выкатывать быстрее, но их не успевают тщательно проверять, — комментирует Эяль Пац (Eyal Paz), вице-президент OX Security по исследовательской работе. — Уязвимые системы вводятся в эксплуатацию с беспрецедентной скоростью, однако надлежащий аудит кода невозможно масштабировать до такой степени, чтобы он соответствовал новым темпам».

Суммарно эксперты выявили десять потенциально опасных недостатков, которые часто встречаются в творениях ИИ-помощников программиста:

  • множественные, излишние комментарии в коде, затрудняющие проверку (в 90-100% случаев);
  • фиксация на общепринятых правилах программирования, препятствующая созданию более эффективных и новаторских решений (80–90%);
  • создание одноразовых кодов, без возможности перепрофилирования под иные задачи (80–90%);
  • исключение рефакторинга (80–90%);
  • повторяющиеся баги, которые потом приходится многократно фиксить, из-за невозможности многократного использования кода (70-80%);
  • отсутствие осведомленности о специфике среды развертывания, приводящее к отказу кода, исправно функционирующего на стадии разработки (60-70%);
  • возврат к монолитным, сильно связанным архитектурам вместо уже привычных, удобных в сопровождении микросервисов (40-50%);
  • фейковое покрытие тестами всех интересующих значений — вместо оценки реальной логики ИИ выдает бессмысленные метрики, создающие ложное чувство уверенности в результатах (40-50%);
  • создание кодов с нуля вместо добавления обкатанных библиотек и SDK, что повышает риски привнесения ошибок (40-50%);
  • добавление логики для порожденных галлюцинациями сценариев, повышающее расход ресурсов и снижающее производительность (20-30%).

Поскольку традиционные методы обеспечения безопасности кодов не работают при использовании ИИ, авторы исследования (доступ к полнотекстовому отчету требует регистрации) рекомендуют в таких случаях принять следующие меры:

  • отказаться от аудита кодов и вместо этого привнести аспект безопасности в процесс разработки (подход Secure by Design);
  • перераспределить роли и зоны ответственности — ИИ работает над реализацией, профессионалы концентрируют внимание на архитектуре, контролируют соблюдение требований безопасности, принимают решения по вопросам, требующим опыта и знания контекста;
  • заставить ИИ блюсти интересы безопасности — вставлять соответствующие инструкции в промпты, вводить архитектурные ограничения, интегрировать автоматически выполняемые правила в рабочие процессы, чтобы не пришлось устранять огрехи пост фактум;
  • применять ИИ-средства обеспечения безопасности, сравнимые по быстродействию с такими же помощниками по разработке.

По прогнозу «Монк Дидижтал Лаб», расширение использования генеративного ИИ в российских разработках к концу текущего года приведет к увеличению количества сбоев ИТ-инфраструктуры на 15-20% по сравнению с уровнем 2023-го.

AM LiveПодписывайтесь на канал "AM Live" в Telegram, чтобы первыми узнавать о главных событиях и предстоящих мероприятиях по информационной безопасности.

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