Project Zero разработал метод эксплуатации уязвимостей в Linux

Linux

Эксплуатация нулевых ссылок в ядре Linux

Недавно появилась новость о том, что исследователи из команды Google Project Zero разработали un метод эксплуатации уязвимостей в ядре Linux вызвано разыменованием указателя NULL.

До сих пор, проблемы связанный с ядром с разыменованием указателей NULL не получили должного внимания, так как было сочтено нереальным превратить такие проблемы в атаки, которые привели бы к повышению привилегий или выполнению собственного кода (запрещено отображать непривилегированные процессы в нижнюю область адресного пространства).

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

Новый метод атаки основан на обработке состояний «упс»., что может привести к увеличению значения счетчика ссылок (refcount), что, в свою очередь, может привести к переполнению счетчика и освобождению памяти, связанной с refcount.

В этом случае эксплуатация сводится к манипуляциям, характерным для атак use-after-free (возникает ситуация, когда счетчик ссылок на объект становится равным нулю, память освобождается, но на самом деле остаются рабочие ссылки, указывающие на освобожденную память).

В настоящее время, когда ядро ​​Linux инициирует нулевое разыменование из контекста процесса, оно генерирует ой , что отличается от паники ядра. Паника возникает, когда ядро ​​определяет, что нет безопасного способа продолжить выполнение, и поэтому все выполнение должно быть остановлено. Тем не менее, ядро нет  останавливает все выполнение для oops; вместо этого ядро ​​пытается восстановиться как можно лучше и продолжает выполнение.

Разыменование указателя NULL используется здесь как способ контролируемой генерации состояния "oops". Проблема в том, что для достижения переполнения 232-битного счетчика ссылок требуется около 32 вызовов состояния "oops".

С практической точки зрения, для выполнения атаки требуется около 8 дней непрерывной генерации состояний «упс» используя предложенный эксплойт. В случае успеха эксплойт позволяет добиться выполнения кода на уровне ядра.

Разыменование указателя NULL, используемое в эксплойте, было исправлено в октябре, но, поскольку подобные проблемы не являются редкостью и ранее рассматривались как ошибки, а не уязвимости, разработчики добавят общую защиту в ядро ​​Linux для предотвращения атак, манипулирующих генерацией «oops». ."

 В случае задачи это означает отказ от существующего стека ядра и переход непосредственно к make_task_dead, который вызывает do_exit. Ядро также отправит в dmesg журнал «сбоев» и трассировку ядра, показывающую, в каком состоянии было ядро, когда произошла ошибка. Это может показаться странным выбором, когда явно произошло повреждение памяти; однако цель состоит в том, чтобы упростить обнаружение и регистрацию ошибок ядра в соответствии с философией, согласно которой работающую систему намного легче отлаживать, чем неработающую.

В частности, ядро ​​6.2 включает изменения, ограничивающие максимальное количество "oops". После достижения лимита, который по умолчанию установлен в 10 тысяч oops (при желании его можно изменить через параметр oops_limit), ядро ​​инициирует переход в состояние «паники» с последующей перезагрузкой, что не позволит количество итераций, необходимых для сброса refcount до нуля.

Также планируется, что ограничение будет перенесено на ранее выпущенные, но еще поддерживаемые ветки ядра, а также на пакеты ядра популярных дистрибутивов.

В конце концов если вам интересно узнать об этом больше, вы можете проверить подробности в по следующей ссылке.


Оставьте свой комментарий

Ваш электронный адрес не будет опубликован. Обязательные для заполнения поля помечены *

*

*

  1. Ответственный за данные: Мигель Анхель Гатон
  2. Назначение данных: контроль спама, управление комментариями.
  3. Легитимация: ваше согласие
  4. Передача данных: данные не будут переданы третьим лицам, кроме как по закону.
  5. Хранение данных: база данных, размещенная в Occentus Networks (ЕС)
  6. Права: в любое время вы можете ограничить, восстановить и удалить свою информацию.