В ядре 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 может быть сброшен в ноль).
Всем, кто использует уязвимые версии ядра, рекомендуется срочно обновиться.