Darwin Nuke

В декабре 2014 года мы обнаружили очень интересную уязвимость в ядре XNU операционной системы Darwin (Darwin – операционная система с открытым кодом, на которой строятся OS X и iOS от компании Apple). Эта уязвимость может удалено эксплуатироваться злоумышленником, что позволяет ему, отослав всего лишь один специально подготовленный сетевой пакет, реализовать атаку типа DoS (отказ в обслуживании). Нами было установлено, что данной уязвимости подвержены операционные системы OS X 10.10 и iOS8.

Уязвимость кроется в некорректной обработке IP-пакета определенного размера с неверными IP-опциями. В результате некорректной обработки пакета операционная система завершает свою работу в аварийном режиме.

Аварийное завершение работы OS X 10.10

Аварийное завершение работы OS X 10.10

Впервые мы обнаружили это на системах OS X 10.10. В ходе дальнейших исследований, мы пришли к выводу, что эта уязвимость присутствует на устройствах с 64 битными процессорами и установленной на них iOS8:

  • iPhone 5s и новее
  • iPad Air и новее
  • iPad mini 2 и новее

Для того чтобы понять, на какой стадии в процессе обработки IP пакета происходит сбой, достаточно проанализировать дамп падения.

Отладочный вывод ядра

Отладочный вывод ядра

Как видно из отладочного вывода, сбой происходит в функции icmp_error(). Задача данной функции – создать и отослать ICMP сообщение об ошибке (некорректный пакет). Как видно на скриншоте выше, данная функция была вызвана после функции, которая отвечает за разбор IP-опций в пакете.

Аварийное завершение работы системы вызывает следующий код:

Условие, которое приводит к падению системы

Условие, которое приводит к падению системы

Когда прописанное в коде условие выполняется, вызывается функция panic, и система выключается в аварийном режиме. Это происходит из-за того, что поменялись внутренние структуры ядра, вследствие чего нового размера буфера не достаточно для хранения вновь созданного ICMP пакета.

Для того чтобы условие было выполнено, необходимо, чтобы IP-пакет удовлетворял следующим условиям:

  • Размер IP-заголовка должен быть равен 60 байтам
  • Размер дополнительных данных IP должен быть больше или равен 65 байтам
  • IP-опции должны быть ошибочными (неверный размер, класс опций и т.д.)

Пример пакета, который приводит к аварийному завершению работы системы

Пример пакета, который приводит к аварийному завершению работы системы

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

Некоторые роутеры или файерволы не пропускают IP-пакеты с неверными IP-опциями. Однако нам удалось сгенерировать сетевой пакет, который в ходе тестирования с легкостью прошел через обычные роутеры и проэксплуатировал эту уязвимость.

Данная уязвимость устранена в следующих релизах операционных систем: OS X 10.10.3 и iOS8.3.

Пользователи продуктов «Лаборатории Касперского» защищены от этой уязвимости в OS X 10.10 с помощью компонента «защита от сетевых атак». Данный компонент работает в том числе в Kaspersky Internet Security for Mac 15.0.

Мы детектируем данную сетевую атаку со следующим вердиктом –DoS.OSX.Yosemite.ICMP.Error.exploit.

Публикации на схожие темы

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *