Linux kernel Ping of Death

В ядре Linux обнаружена уязвимость, позволяющая удаленному злоумышленнику вызвать отказ в обслуживании (зависание ядра), а локальному — получить root-привилегии. Для получения описанного эффекта достаточно отправить на целевой хост серию специально сформированных IPv4-пакетов.

Данной уязвимости подвержены ядра с 2.6.28.10 по 2.6.32-rc8 включительно. В версии 2.6.32 она уже исправлена.

Уязвимость локализована в коде, отвечающем за дефрагментацию IPv4-пакетов (файл net/ipv4/ip_fragment.c, функция ip_frag_reasm), и имеет тип «NULL pointer dereference» (разрешение нулевого указателя). В связи с этим нужно сделать два замечания:

  • Заголовок новости («Ping of Death») носит несколько метафорический характер, так как классические уязвимости Ping of Death, столь популярные в Windows и Unix-системах конца предыдущего столетия, основаны не на разрешении нулевого указателя, а на переполнении буфера при сборке слишком большого фрагментированного пакета. Однако, принцип эксплуатации уязвимости (отправка слишком длинного пакета) и достигаемый эффект (отказ в обслуживании) в обоих случаях одинаковы.
  • Опасность повышения привилегий (получения root-доступа) локальным злоумышленником может быть нейтрализована путем запрещения маппинга кода на нулевой адрес, что достигается установкой в ненулевое значение sysctl-параметра vm.mmap_min_addr (в большинстве современных дистрибутивов он по умолчанию установлен в ненулевое значение, однако после установки wine может быть сброшен в ноль).

Несколько дней назад вышли обновления для Fedora 11, Fedora 12, а также для Ubuntu 9.10. Всем, кто использует уязвимые версии ядра, рекомендуется срочно обновиться.

©  Linux.org.ru