Уязвимости ядра Linux, влияющие на компонент выборочного ACK

18 июня 2019 года в 19:00 по центральноевропейскому летнему времени были обнаружены 4 уязвимости, влияющие на стек TCP ядра Linux. Эти уязвимости связаны с целочисленным переполнением в ядре Linux, которое может привести к панике ядра, с одной стороны, и с алгоритмической сложностью реализации SACK, приводящей к исчерпанию ресурсов ЦП, с другой стороны. В обоих случаях влияние ограничивается доступностью сервиса.



Кто уязвим?

  • Все Linux Oses с ядром 2.6.29 и выше (с марта 2009 г.)
  • FreeBSD 12 использует стек RACK TCP. Обратите внимание, что, к счастью, это не стек по умолчанию, вы можете запустить следующую команду, чтобы указать, использует ли ваша система реализацию «RACK» или нет:
    # sysctl net.inet.tcp.cc.algorithm
  • Если вы открываете службу TCP в Интернете (веб-службу, ssh, rcp,…), ваша система потенциально может быть затронута, поскольку для успешной атаки требуется только установить TCP-канал.
  • Если ваша служба находится за брандмауэром или iptables / pfsense настроен так, чтобы открывать службу только для доверенных IP-адресов, вы в безопасности.

Как исправить?
Есть 3 разных способа, вам нужно выбрать только ОДИН из них.

1. Обновите ядро

Основные дистрибутивы Linux уже выпустили исправление:
  • Linux версии 4.4.182 или выше
  • Linux версии 4.9.182 или выше
  • Linux версии 4.14.127 или выше
  • Linux версии 4.19.52 или выше
  • Linux версии 5.1.11 или выше.
  • Обратите внимание, что ветка Linux версии 3.16 еще не была объявлена ​​исправляемой. (2019-06-18)
Кстати, загляните на веб-сайт вашего дистрибутива (Ubuntu, RedHat, SuSE,…) для получения более подробной информации, поскольку ваш поставщик мог бы перенести патч на собственную версию ядра.

2. Снижение риска брандмауэра

Атака основана на небольшом варианте MSS, который очень необычен для стандартного сетевого взаимодействия. Следовательно, вы можете отбросить все пакеты с помощью небольшой опции MSS, чтобы предотвратить атаку вашей системы. Например, правила iptables могут выглядеть так:

3. Отключить SACK (не рекомендуется)

Поскольку основной причиной уязвимости является проблема обработки SACK, вы также можете отключить SACK в своем ядре. Имейте в виду, что SACK — это оптимизация протокола TCP с целью повышения производительности подтверждения пакетов. Отключение этой функции может сильно повлиять на вашу производительность, и мы не рекомендуем это решение.

Является ли эксплойт общедоступным?

Насколько нам известно (18.06.2019), публичных эксплойтов пока нет, но это, вероятно, вопрос часов / дней.

Краткие технические пояснения


CVE-2019-11477


Целочисленное переполнение 16-битного счетчика (tcp_skb_pcount) может произойти в ядре, которое приведет к ошибке BUG_ON (не совсем паника, но оставит вашу систему в нестабильном — потенциально непригодном для использования — состоянии).

Уменьшая значение параметра MSS до небольшого значения, злоумышленник может заставить вашу систему отправлять большое количество пакетов на вредоносный удаленный IP-адрес, находящийся под его контролем. Функция SACK позволит удаленному вредоносному IP подтверждать только несколько пакетов из всех отправленных.

Ваше ядро ​​будет хранить список неподтвержденных пакетов, который увеличивает 16-разрядный счетчик (tcp_skb_pcount), который в какой-то момент переполняется и вызывает ошибку сравнения, приводящую к BUG_ON.


CVE-2019-11478


Используя тот же предыдущий сценарий, злоумышленник может фрагментировать буфер сокета (SKB) ядра Linux, подтвердив только несколько пакетов. Затем структура данных фрагментируется, что снижает производительность и может заставить ядро ​​потреблять больше ЦП.


CVE-2019-11479


Уменьшая параметр MSS до минимально допустимого значения (48 байтов), злоумышленник может замедлить (заморозить) систему. Поскольку для пользовательских данных остается только 8 байтов, у сервера могут возникнуть трудности с ответом на запросы, отправленные злоумышленником, что может привести к ненормальному потреблению ресурсов процессора ядром.



Идентификационные номера


Эти уязвимости упоминаются в общих уязвимостях и уязвимостях следующим образом:
  • CVE-2019-11477: SACK Panic (Linux> = 2.6.29) | CVSS: 8,2
  • CVE-2019-11478: медленная работа SACK (Linux <4.15) или чрезмерное использование ресурсов (все версии Linux) | CVSS: 5,3
  • CVE-2019-11479: чрезмерное потребление ресурсов из-за низких значений MSS (все версии Linux) | CVSS: 7,5
  • CVE-2019-5599: Медлительность SACK (FreeBSD 12 с использованием стека TCP RACK) | Низкая степень серьезности



Внешние ссылки

0 комментариев

Оставить комментарий