Выявлен еще один метод удаленной DoS-атаки на ядро Linux и FreeBSD
Следом за выявленной на прошлой неделе DoS-уязвимости SegmentSmack в TCP-стеках различных операционных систем, опубликована информация о другой похожей уязвимости (CVE-2018-5391, кодовое имя FragmentSmack), которая также позволяет организовать отказ в обслуживании через отправку специально оформленного набора IP-пакетов, при обработке которого будут заняты все реcурсы CPU. Если первая уязвимость была связана с неэффективностью алгоритма обработки TCP-сегментов, то новая проблема затрагивает алгоритм пересборки фрагментированных IP-пакетов.
Атака осуществляется через отправку потока фрагментированных IP-пакетов, в каждом из которых смещение фрагмента установлено случайным образом. В отличие от прошлой уязвимости атаки SegmentSmack, в FragmentSmack возможно совершение атаки с использованием спуфинга (отправки пакетов с указанием несуществующего IP). При этом для новой атаки требуется большая интенсивность отправки: для полной утилизации ресурсов одного ядра CPU Intel Xeon [email protected] необходим поток на уровне 30 тысяч пакетов в секунду, в то время как для SegmentSmack было достаточно полок в 2 тысячи пакетов в секунду.
Наличие проблемы подтверждено в TCP стеках Linux и FreeBSD. В ядре Linux проблема проявляется начиная с выпуска ядра 3.9. Обновления с устранением проблемы подготовлены для Debian, Fedora, SUSE/openSUSE, Ubuntu, RHEL и FreeBSD. В качестве обходного пути защиты в Linux можно снизить значения sysctl net.ipv4.ipfrag_high_thresh и net.ipv4.ipfrag_low_thresh до 256kB и 192 kB или еще меньших значений.
sysctl -w net.ipv4.ipfrag_low_thresh=262144 sysctl -w net.ipv4.ipfrag_high_thresh=196608 sysctl -w net.ipv6.ip6frag_low_thresh=262144 sysctl -w net.ipv6.ip6frag_high_thresh=196608
Во FreeBSD в качестве обходного пути защиты рекомендовано отключить пересборку фрагментированных пакетов:
sysctl net.inet.ip.maxfragpackets=0 sysctl net.inet6.ip6.maxfrags=0