The OpenNET Project / Index page

[ новости /+++ | форум | теги | ]

Выявлен ещё один метод удалённой DoS-атаки на ядро Linux и FreeBSD

15.08.2018 13:26

Следом за выявленной на прошлой неделе DoS-уязвимости SegmentSmack в TCP-стеках различных операционных систем, опубликована информация о другой похожей уязвимости (CVE-2018-5391, кодовое имя FragmentSmack), которая также позволяет организовать отказ в обслуживании через отправку специально оформленного набора сетевых пакетов, при обработке которого будут заняты все реcурсы CPU. Если первая уязвимость была связана с неэффективностью алгоритма обработки TCP-сегментов, то новая проблема затрагивает алгоритм пересборки фрагментированных IP-пакетов.

Атака осуществляется через отправку потока фрагментированных IP-пакетов, в каждом из которых смещение фрагмента установлено случайным образом. В отличие от прошлой уязвимости SegmentSmack, в FragmentSmack возможно совершение атаки с использованием спуфинга (отправки пакетов с указанием несуществующего IP). При этом для новой атаки требуется большая интенсивность отправки: для полной утилизации ресурсов одного ядра CPU Intel Xeon D-1587@1.70GHz необходим поток на уровне 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 и 192kB или ещё меньших значений.


    sysctl -w net.ipv4.ipfrag_high_thresh=262144
    sysctl -w net.ipv4.ipfrag_low_thresh=196608
    sysctl -w net.ipv6.ip6frag_high_thresh=262144
    sysctl -w net.ipv6.ip6frag_low_thresh=196608

Во FreeBSD в качестве обходного пути защиты рекомендовано отключить пересборку фрагментированных пакетов:


    sysctl net.inet.ip.maxfragpackets=0
    sysctl net.inet6.ip6.maxfrags=0



  1. Главная ссылка к новости (http://seclists.org/oss-sec/20...)
  2. OpenNews: В TCP-стеке Linux и FreeBSD выявлена уязвимость, приводящая к отказу в обслуживании
  3. OpenNews: L1TF - три новые уязвимости в механизме спекулятивного выполнения CPU Intel
  4. OpenNews: Критические уязвимости в подсистеме eBPF ядра Linux
  5. OpenNews: Выпуск модуля LKRG 0.2 для защиты от эксплуатации уязвимостей в ядре Linux
  6. OpenNews: Уязвимость в генераторе случайных чисел ядра Linux
Лицензия: CC BY 3.0
Короткая ссылка: https://opennet.ru/49135-ip
Ключевые слова: ip, fragment, dos
При перепечатке указание ссылки на opennet.ru обязательно


Обсуждение (30) Ajax | 1 уровень | Линейный | +/- | Раскрыть всё | RSS
  • 1.1, Catwoolfii (ok), 13:39, 15/08/2018 [ответить] [﹢﹢﹢] [ · · · ]  
  • +5 +/
    Для фряхи еще дополнительно:
    net.inet.ip.maxfragsperpacket=0
    net.inet6.ip6.maxfragpackets=0
     
     
  • 2.14, Аноним (14), 16:12, 15/08/2018 [^] [^^] [^^^] [ответить]  
  • +5 +/
    > Для фряхи еще дополнительно:
    > net.inet.ip.maxfragsperpacket=0
    > net.inet6.ip6.maxfragpackets=0

    Нехилые дефолты по умолчанию:
    [CODE]
    % sysctl net.inet6.ip6.maxfrags net.inet.ip.maxfragpackets
    net.inet6.ip6.maxfrags: 123777
    net.inet.ip.maxfragpackets: 15478
    [/CODE]
    Но враг не пройдет!
    [CODE]
    # ipfw -at list|gnumfmt --to=iec --field 3
    00100 2246025       2,4G Wed Aug 15 15:10:07 2018 reass ip from any to any in
    -
    00100       2        256 Mon Aug 13 17:32:17 2018 deny ip from 127.0.0.0/8 to any
    00100      12       1,5K Mon Aug 13 17:32:29 2018 deny ip from any to any not antispoof in[/CODE]


     

  • 1.2, CHERTS (ok), 13:51, 15/08/2018 [ответить] [﹢﹢﹢] [ · · · ]  
  • –1 +/
    # sysctl -w net.ipv4.ipfrag_high_thresh=196608
    sysctl: setting key "net.ipv4.ipfrag_high_thresh": Invalid argument
    net.ipv4.ipfrag_high_thresh = 196608

    # sysctl -a |grep net.ipv4.ipfrag_high_thresh
    net.ipv4.ipfrag_high_thresh = 4194304

    Ага, рабочий прям рецепт.

     
     
  • 2.5, Ага (?), 14:00, 15/08/2018 [^] [^^] [^^^] [ответить]  
  • +1 +/
    Телепузиков иди смотри, ну или статью почитай, ядро у тебя какое ?
     
     
  • 3.7, Stax (ok), 14:17, 15/08/2018 [^] [^^] [^^^] [ответить]  
  • +2 +/
    Хм, у меня это отлично работает и на свежем 4.17, и на 3.10 из EL7... И даже на роутере с прошивкой Padavan и 3.4.113 ядром работает.

    Может у него второе ядро? :)

     
     
  • 4.31, CHERTS_ (?), 06:35, 16/08/2018 [^] [^^] [^^^] [ответить]  
  • –1 +/
    > Может у него второе ядро? :)

    Да debian 9 у меня, со свежим ядром.

    У debian еще свои накрутки над ядром есть, может в этом дело.

    Но факт есть факт, проверил на 2 серверах.

     
     
  • 5.34, Мегазаычы (?), 03:01, 18/08/2018 [^] [^^] [^^^] [ответить]  
  • +/
    не в этом дело.

    просто ты тупишь и пытаешься поставить high_thresh ниже чем low_thresh, на что ядро справедливо возражает. фикс для подобных чуваков как раз не очень давно запилили в апстрим.

    людям только бы орать что ничего не работает.

     

  • 1.6, radeon (??), 14:12, 15/08/2018 [ответить] [﹢﹢﹢] [ · · · ]  
  • –1 +/
    Вроде бы у pf из поставки freebsd штатно стоит политика reassemble для фрагментированных пакетов, при активации pf
    Любопытно как в такой же ситуации поведет себя pf и ipfw, у которого тоже есть такая же возможность пересборки пакетов
     
     
  • 2.9, Catwoolfii (ok), 14:20, 15/08/2018 [^] [^^] [^^^] [ответить]  
  • +/
    А что значит "штатно стоит"? Там ведь вроде бы надо в директиве scrub указывать reassemble.
     
     
  • 3.11, radeon (??), 14:32, 15/08/2018 [^] [^^] [^^^] [ответить]  
  • –1 +/
    Выразился я косноязычно. Правильней конечно говорить об опции, но она активирована по умолчанию теперь и ее явно указывать не нужно
     
  • 2.15, Ivan_83 (ok), 16:54, 15/08/2018 [^] [^^] [^^^] [ответить]  
  • +/
    Не стоит.
    Не пересобирает он просто так ничего.
     

  • 1.8, Аноним (8), 14:18, 15/08/2018 [ответить] [﹢﹢﹢] [ · · · ]  
  • –1 +/
    интересно в pf.conf
    set optimization normal
    scrub in all

    решает проблему?

     
     
  • 2.13, iZEN (ok), 15:39, 15/08/2018 [^] [^^] [^^^] [ответить]  
  • –1 +/
    > scrub in all

    "Во FreeBSD в качестве обходного пути защиты рекомендовано отключить пересборку фрагментированных пакетов"

     
  • 2.16, Ivan_83 (ok), 16:55, 15/08/2018 [^] [^^] [^^^] [ответить]  
  • +/
    Нет.
    Насколько помню как минимум раньше у PF был свой код сборки пакетов.
    Я бы в нём этим не пользовался, просто потому что смысла в этом нет.
     

  • 1.10, Аноним (10), 14:23, 15/08/2018 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    че ядро то? перепутали местами hi/lo, а hi не может быть меньше lo
     
     
  • 2.17, имя (?), 17:12, 15/08/2018 [^] [^^] [^^^] [ответить]  
  • +1 +/
    Не перепутали, а подняли до неприличных размеров с припиской «но код надо будет оптимизировать». И никто его, разумеется, не оптимизировал.
     

  • 1.21, Аноним (21), 18:28, 15/08/2018 [ответить] [﹢﹢﹢] [ · · · ]  
  • –1 +/
    https://access.redhat.com/articles/3553061
    готовый скрипт
     
  • 1.22, Аноним (21), 18:37, 15/08/2018 [ответить] [﹢﹢﹢] [ · · · ]  
  • –1 +/
    мннда, чет не отрабатывает от нифига на убунте через bash результат:
    net.ipv4.ipfrag_low_thresh = 196608
    net.ipv4.ipfrag_high_thresh = 4194304
    net.ipv6.ip6frag_low_thresh = 196608
    net.ipv6.ip6frag_high_thresh = 4194304
     
     
  • 2.24, Аноним (24), 19:29, 15/08/2018 [^] [^^] [^^^] [ответить]  
  • +/
    Она ж для домохозяек. Ставь нормальный линукс.
     
  • 2.35, Мегазаычы (?), 03:05, 18/08/2018 [^] [^^] [^^^] [ответить]  
  • +/
    да, мой косяк.
    в исходной статье поправлено.
     

  • 1.25, Аноним (25), 20:31, 15/08/2018 [ответить] [﹢﹢﹢] [ · · · ]  
  • –1 +/
    отключить пересборку фрагментированных пакетов нужно делать? или достаточно сделать:

    # freebsd-update fetch
    # freebsd-update install
    Afterward, reboot the system.

     
     
  • 2.28, xm (ok), 22:41, 15/08/2018 [^] [^^] [^^^] [ответить]  
  • –1 +/
    Достаточно.
     
     
  • 3.29, Аноним (25), 22:54, 15/08/2018 [^] [^^] [^^^] [ответить]  
  • +/
    а что поменялось, как проверить?
     
     
  • 4.30, xm (ok), 23:23, 15/08/2018 [^] [^^] [^^^] [ответить]  
  • –1 +/
    Посмотреть вывод uname и убедиться что патч наложен.
     

  • 1.27, Аноним (27), 22:06, 15/08/2018 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    Следующая ошибка будет называться PacketSmack - если 10-Гбитный интерфейс сатурировать UDP или ICMP минимальной длины, CPU внезапно поплохеет.
     
  • 1.32, Аноним (32), 15:36, 16/08/2018 [ответить] [﹢﹢﹢] [ · · · ]  
  • –1 +/
    А есть эксплойт?
     
     
  • 2.36, Мегазаычы (?), 03:06, 18/08/2018 [^] [^^] [^^^] [ответить]  
  • +/
    есть.
     

  • 1.37, rihad (ok), 12:54, 19/08/2018 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    А возможно на рутерах это настроить чтобы хост FreeBSD получал пакеты без эксплойта?
     
     
  • 2.38, Аноним (38), 08:50, 22/08/2018 [^] [^^] [^^^] [ответить]  
  • +/
    Конечно! Надо отключить питание роутера... И не включать больше.
     
     
  • 3.39, Аноним (14), 13:04, 22/08/2018 [^] [^^] [^^^] [ответить]  
  • +/
    > Конечно! Надо отключить питание роутера... И не включать больше.

    Учитывая специфику ошибки, роутер на пингвине загнется намного раньше.

     

     Добавить комментарий
    Имя:
    E-Mail:
    Текст:



    Партнёры:
    PostgresPro
    Inferno Solutions
    Hosting by Hoster.ru
    Хостинг:

    Закладки на сайте
    Проследить за страницей
    Created 1996-2024 by Maxim Chirkov
    Добавить, Поддержать, Вебмастеру