Перейти к содержимому
Local
bot

DoS Linux и FreeBSD на любой порт при 2kpps

Рекомендованные сообщения

В TCP-стеке ядра Linux выявлена опасная уязвимость (CVE-2018-5390), которая позволяет удалённо вызвать отказ в обслуживании из-за исчерпания доступных ресурсов CPU. Для совершения атаки достаточно отправить поток специальным образом оформленных пакетов на любой открытый TCP-порт. Атака может быть совершена только с реального IP-адреса (спуфинг невозможен так как требуется установка TCP-соединения).

Суть проблемы в том, что при определённых параметрах сегментирования ядро при поступлении каждого пакета вызывает достаточно ресурсоёмкие функции tcp_collapse_ofo_queue() и tcp_prune_ofo_queue(). Из-за неэффективности применяемого алгортима, необходимые для обработки сегментов ресурсы CPU линейно возрастают в зависимости от числа сегментов в очереди пересборки пакетов. При выполнении операции пересборки большого числа сегментов, cоздаваемой нагрузки достаточно, чтобы полностью загрузить процессор при обработке потока с незначительной интенсивностью. Например, для появления существенных задержек в обработке запросов системой для каждого ядра CPU достаточно потока интенсивностью всего 2 тысячи пакетов в секунду.

Уязвимость проявляется на всех ядрах Linux, начиная с выпуска 4.9 (атака может быть проведена и против более старых ядер, но требует существенного более интенсивного потока пакетов). Проблема устранена в обновлении ядра 4.17.12. Обновления пакетов подготовлены для Debian, SUSE и Fedora, и ожидаются для Ubuntu и RHEL.

Дополнение: Проблема также проявляется во FreeBSD и вероятно в других операционных системах. Во FreeBSD проблема пока временно решена через ограничение размера очереди пересборки пакетов (net.inet.tcp.reass.maxqueuelen).

Источник: Opennet

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Приятная новость.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

офигеть

а centos и тд?

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

"ожидаются для Ubuntu и RHEL"

centos это фактически rhel без проприетарных пакетов.

Изменено пользователем Triam

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Создайте аккаунт или войдите в него для комментирования

Вы должны быть пользователем, чтобы оставить комментарий

Создать аккаунт

Зарегистрируйтесь для получения аккаунта. Это просто!

Зарегистрировать аккаунт

Войти

Уже зарегистрированы? Войдите здесь.

Войти сейчас

  • Сейчас на странице   0 пользователей

    Нет пользователей, просматривающих эту страницу.

  • Похожие публикации

    • Автор: bot
      Следом за выявленной на прошлой неделе 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_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 Источник: opennet
    • Автор: bot
      После двух месяцев разработки Линус Торвальдс представил релиз ядра Linux 4.18. Среди наиболее заметных изменений в ядре 4.18: возможность монтирования ФС на базе FUSE непривилегированным пользователем, пакетный фильтр bpfilter, подсистема AF_XDP (eXpress Data Path), новый тип модулей ядра umh (usermode helper), device-mapper модуль writecache, поддержка SoC Qualcomm Snapdragon 845 и GPU AMD Vega 20, новый API поллинга для асинхронного ввода/вывода.

      В новую версию принято 13 тысяч исправлений от 1668 разработчиков, размер патча - 50 Мб (изменения затронули 12866 файлов, добавлено 521039 строк кода, удалено - 619603 строк). Около 49% всех представленных в 4.18 изменений связаны с драйверами устройств, примерно 14% изменений имеют отношение к обновлению кода специфичного для аппаратных архитектур, 13% связано с сетевым стеком, 5% - файловыми системами и 3% c внутренними подсистемами ядра. 9.5% всех исправлений подготовлено разработчиками компании Intel, 7.5% - Red Hat, 4.6% - AMD, 4.3% - IBM, 3.8% - Linaro, 3.4% - Renesas Electronics, 3.0% - Google, 2.9% - SUSE, 2.8% - Samsung, 2.2% - Mellanox, 2.1% - Huawei, 2.0% - Oracle.

      В состав ядра включен новый механизм фильтрации пакетов bpfilter, использующего предоставляемую ядром подсистему eBPF, но предлагая привычный синтаксис iptables. Bpfilter обрабатывает запросы API iptables и транслирует их в программы BPF, привязываемые к различным подсистемам. В настоящий момент в ядро добавлена только базовая инфраструктура для bpfilter, но ещё нехватает некоторых компонентов, необходимых для полноценного применения bpfilter для фильтрации пакетов;

      В качестве сопутствующей bpfilter разработки в ядро добавлен новый тип модулей ядра umh (usermode helper), которые выполняются в пространстве пользователя и привязываются в базовым модулям, предоставляя для них вспомогательную функциональность, которую нецелесообразно или опасно выполнять c привилегиями ядра (например в модуле bpfilter.ko через них выполняется разбор и трансляция в BPF правил фильтрации). Модули umh функционируют под управлением ядра, оформляются в виде модулей ядра и загружаются через modprobe, но выполняются в пространстве пользователя с привилегиями пользовательских приложений. Взаимодействие umh-модулей с обычными модулями ядра производится с использованием неименованных каналов (unix pipe);

      В состав ядра включена подсистема AF_XDP (eXpress Data Path), которая предоставляет средства для запуска BPF-программ на уровне сетевого драйвера, с возможностью прямого доступа к DMA-буферу пакетов, что позволяет создавать высокопроизводительные обработчики для работы в условиях большой сетевой нагрузки. В качестве примера реализованы обработчики для быстрой блокировки и перенаправления пакетов.

      Реализована возможность чтения данных из сетевого сокета в режиме zero-copy (флаг TCP_ZEROCOPY_RECEIVEY), позволяющем организовать передачу данных по сети без промежуточного копирования данных между ядром и пространством пользователя (поддержка записи в режиме zero-copy была представлена в ядре 4.14);

      В реализации протокола TLS на уровне ядра (KTLS) добавлена возможность задействования аппаратного ускорения операций с использовнием специализированных чипов. В настоящее время вынос связанных с работой TLS вычислений на плечи оборудования доступен только при использовании драйвера Mellanox mlx5;

      В TCP-стек добавлена поддержка режима сжатия для выборочного подтверждения соединений (SACK), что позволяет сократить число отправляемых SACK-пакетов при перегрузке сети;

      Добавлена возможность прикрепления BPF-программ к сокету и запуска обработчиков при вызове sendmsg(). Подобные обработчики могут применяться для выполнения такхи задач, как перезапись IP-адресов в исходящих пакетах;


      В подсистему шифрования (crypto) добавлена поддержка шифров AEGIS и MORUS, а также алгоритма сжатия Zstandard;
      Пользователь с правами root в пространстве имён идентификаторов пользователя (user namespaces) теперь может монтировать файловые системы, даже если у него нет на это прав вне пространства имён. При этом файловая система должна быть специально помечена для разрешения подобных операций (в настоящий момент операции разрешены только для ФС, реализуемых в пространстве пользователя при помощи модулей FUSE);

      В модуль fscrypt, применяемый для шифрования ФС F2FS и ext4, добавлена поддержка шифров Speck128 и Speck256, разработанных Агентством национальной безопасности США. Шифры обеспечивают очень высокую производительность программной реализации, которая обгоняет AES на системах без наличия средств аппаратного ускорения AES. Использование Speck позволяет применять шифрование на маломощных устройствах, на которых применение AES не оправдано из-за больших накладных расходов;

      Для 32-разрядной архитектуры ARM обеспечена защита от уязвимостей Spectre 1 и Spectre 2 (ранее защита от Spectre была обеспечена для архитектур x86, ARM64 и S390). Для ARM64 добавлена защита от Spectre v4.
      Проведена работа по переводу ядра на более защищёные от переполнения буфера варианты функций распределения памяти. Например, вызовы "kmalloc(count*size, gfp_flags)" заменены на "kmalloc_array(count, size, gfp_flags)";

      Изменены настройки для включения защиты от переполнения стека - теперь автоматически включается наиболее действенный механизм защиты, доступный для текущей конфигурации;


      Для Device Mapper реализован новый модуль "writecache", который может применяться для кэширования операций записи блоков на SSD-накопителях или в постоянной памяти (кэширование операций чтения не реализовано, так как такие операции и так кэшируются кэше страниц памяти в ОЗУ);

      Обеспечена возможность применения флага IOCB_FLAG_IOPRIO для операций асинхронного ввода/вывода, позволяющего установить приоритет выполнения отдельных операций;

      Добавлен новый API поллинга (определение готовности файлового дескриптора к вводу/выводу без блокировки), основанный на использовании системы асинхронного ввода/вывода (AIO);

      В файловой системе Btrfs обеспечена возможность удаления пустого подраздела при помощи вызова rmdir() без специальных дополнительных привилегий. Добавлены новые ioctl-команды FS_IOC_FSGETXATTR и FS_IOC_FSSETXATTR для манипуляции с различными атрибутами файла (append, immutable, noatime, nodump и sync), которые в отличие от команд GET/SETFLAGS могут выставить атрибуты на уровне отдельных inode. Также реализован набор ioctl-команд для получения непривилегированным пользователем информации о подразделах;

      В файловой системе XFS появилась возможность смены метки для уже примонтированной ФС, добавлена поддержка резервирования пустых областей через вызов fallocate() для файлов подкачки, задействован FUA для обеспечения прямой записи данных в режиме O_DSYNC. Кроме того, началась интеграция нового инструментария для восстановления целостности ФС на лету и выполнена переработка кода growfs с целью подготовки интеграции поддержки подразделов (subvolume);

      В файловой системе ext4 продолжена работа по чистке кода и повышению надёжности работы в условиях обработки некорректных образов ФС, специально модифицированных для вредоносных целей;

      Из раздела "staging" удалён код кластерной файловой системы Lustre. В качестве причин упоминается отсутствие должной активности по приведению имеющегося кода к соответствию с остальным ядром, плохая адаптация кода к изменениям в VFS, а также игнорирование проблем и периодическая публикация патчей, ломающих имеющуюся функциональность;
      В файловой системе F2FS улучшена поддержка режима "discard";


      В систему доменов управления питанием (genpd, generic power domain) добавлена поддержка уровней производительности, при помощи которых можно настраивать работу всей системы, включая периферийные устройства, для достижения требуемого баланса между потреблением энергии и производительностью;

      В контроллер ресурсов памяти group, позволяющий управлять расходованием памяти группой задач, добавлен параметр memory.min, который в отличие от ранее доступного параметра memory.low предоставляет более надёжную гарантию предоставления минимального размера доступной для группы оперативной памяти (не отключается при срабатывании OOM killer в условиях нехватки памяти);

      Добавлен системный вызов с реализацией перезапускаемых последовательностей (restartable sequences), позволяющих приложениям организовать неразрывное выполнение группы инструкций, не прерываемой и подтверждающей результат последней инструкцией в группе. По сути предоставляется средство для очень быстрого атомарного выполнения операций, которые в случае прерывания другим потоком очищаются и предпринимается повторная попытка выполнения. Возможность реализована для архитектур x86, ARM и PowerPC;

      Реализован новый параметр запуска ядра no5lvl, предназначенный для отключения пятиуровневых таблиц страниц памяти, даже если оборудование обеспечивает их поддержку;

      Из интерфейса /proc удалена статстика IPMI (по-прежнему оставлена в sysfs);

      Добавлена новая система определения макросов для конфигурации ядра, которую можно использовать для выноса различных тестов, выполняемых на этапе сборки, из makefile в файлы Kconfig;

      В JIT-компиляторе подсистемы eBPF реализована поддержка 32-разрядных систем x86;


      В драйвер Nouveau добавлена поддержка GPU NVIDIA Volta;

      В DRM-драйвер AMDGPU добавлена поддержка GPU AMD Vega 20, а также GPU Kabylake-G (VEGAM - intel и radeon на одном чипе). Добавлены профили управления питанием, напряжением и частотой для GPU Vega10. Реализован режим энергосбережения gfxoff для GPU Raven;

      В DRM-драйвере Intel включена поддержка чипов Icelake (ICL), проведён рефакторинг кода GuC/HuC и DPLL, включена поддержка NV12 и PSR/PSR2;

      В драйвере amdkfd для dGPU (дискретные GPU, такие как Fiji, Tonga, Polaris) добавлена поддержка GPU GFX9;
      Добавлен новый DRM-драйвер v3d для оборудования Broadcom V3D V3.x+;

      Добавлен драйвер xen-front с реализаций графического фронтэнда для гостевых систем XEN в режиме паравиртуализации (PV);

      Добавлена поддержка SoC Qualcomm Snapdragon 845, применяемого в новейших мобильных устройствах класса high-end;

      Добавлена поддержка игровых контроллеров Steam от компании Valve;


      Одновременно Латиноамериканский Фонд свободного ПО сформировал вариант полностью свободного ядра 4.18 - Linux-libre 4.18-gnu, очищенного от элементов прошивок и драйверов, содержащих несвободные компоненты или участки кода, область применения которых ограничена производителем. В новом выпуске представлен новый интерфейс для загрузки прошивок (firmware_reject_nowarn), не выводящий предупреждения в случае если прошивка не найдена. Добавлена чистка блобов для драйверов psp-dev и icn8505. Обновлён код чистки блобов в драйверах c3xxx, c62x, dvb-usb, dvb-usb-v2, iwlwifi, ks7010, ath10k, andgpu, i915, tg3, silead и ca0132. Прекращена чистка блобов для atom isp. Проведены ассемблерные файлы, вынесенные из основного кода amdkfd.

      Источник: Opennet
×