В TCP-стеках Linux обнаружены три уязвимости, приводящие к удаленному отказу в обслуживании

сбой Linux

Недавно выпустила новость об обнаружении нескольких критических уязвимостей в TCP-стеках Linux и FreeBSD, что позволяет злоумышленнику удаленно инициировать сбой ядра или вызвать чрезмерное потребление ресурсов путем обработки специально созданных TCP-пакетов (пакет смерти).

Проблемы вызваны ошибками в ручках максимального размера блока данных в пакете TCP (MSS, Максимальный размер сегмента) и механизм выборочного распознавания соединения (SACK, Выборочное распознавание TCP).

Что такое выборочное распознавание?

Выборочное распознавание TCP (SACK) это механизм, с помощью которого получатель данных может информировать отправителя обо всех успешно принятых сегментах.

Эсто Позволяет отправителю повторно передать недостающие сегменты потока из его «хорошо известного» набора. Когда TCP SACK отключен, требуется гораздо больший набор повторных передач для повторной передачи всей последовательности.

В ядре Linux проблемы исправлены в версиях 4.4.182, 4.9.182, 4.14.127, 4.19.52 и 5.1.11. Решение для FreeBSD доступно в виде патча.

Обновления пакетов ядра выпущены для Debian, RHEL, SUSE / openSUSE, ALT, Ubuntu, Fedora и Arch Linux.

CVE-2019-11477 (паника SACK)

Проблема проявляется в ядрах Linux начиная с версии 2.6.29 и позволяет сбой ядра (паника) при отправке серии пакетов SACK из-за целочисленного переполнения в контроллере.

Для атаки достаточно установить значение MSS равным 48 байтам для TCP-соединения. и отправка последовательности упорядоченных пакетов SACK определенным образом.

Суть проблемы в том, что конструкция tcp_skb_cb (буфер сокета) рассчитан на хранение 17 фрагментов ("Определить MAX_SKB_FRAGS (65536 / PAGE_SIZE + 1) => 17").

В процессе отправки пакета он помещается в очередь отправки, и tcp_skb_cb хранит сведения о пакете, такие как порядковый номер, флаги, а также поля «tcp_gso_segs» и «tcp_gso_size», которые используются для отправки Информация о сегментации передается контроллеру (TSO, Segment Segment Download) для обработки сегментов на стороне сетевой карты.

Фрагменты сохраняются при потере пакета или необходимости выборочной повторной передачи пакета, если SACK включен и TSO поддерживается драйвером.

В качестве обходного пути для защиты вы можете отключить обработку SACK или заблокировать соединения с небольшим MSS (работает только при установке sysctl net.ipv4.tcp_mtu_probing на 0 и может нарушить некоторые нормальные параметры при низком MSS).

CVE-2019-11478 (медленная работа SACK)

Эта неудача вызывает прерывание механизма SACK (при использовании ядра Linux в 4.15) или чрезмерное потребление ресурсов.

Проблема возникает при обработке специально созданных пакетов SACK, которые можно использовать для фрагментации очереди повторной передачи (повторная передача TCP). Решения по защите аналогичны предыдущим уязвимостям.

CVE-2019-5599 (медленная работа SACK)

Позволяет вызвать фрагментацию карты пакетов, отправленных при обработке последовательности SACK в пределах одного TCP-соединения и вызовет выполнение ресурсоемкой операции поиска в списке.

Проблема проявляется во FreeBSD 12 с механизмом обнаружения потери пакетов RACK. В качестве обходного пути вы можете отключить модуль RACK (он не загружается по умолчанию, он отключен указанием sysctl net.inet.tcp.functions_default = freebsd)

CVE-2019-11479

Уязвимость позволяет злоумышленнику заставить ядро ​​Linux разделить ответы на несколько сегментов TCP, каждый из которых включает только 8 байтов данных, что может привести к значительному увеличению трафика, увеличению нагрузки на ЦП и засорению канала связи.

Кроме того, потребляет дополнительные ресурсы. (мощность процессора и сетевая карта).

Эта атака требует непрерывных усилий со стороны злоумышленника, и попадания прекратятся вскоре после того, как злоумышленник перестанет отправлять трафик.

Пока эта атака продолжается, система будет работать с ограниченной пропускной способностью, что вызовет отказ в обслуживании для некоторых пользователей.

Удаленный пользователь может вызвать эту проблему, установив максимальный размер сегмента. (MSS) TCP-соединения на самом низком пределе (48 байтов) и отправка последовательности специально созданных пакетов SACK.

В качестве обходного пути рекомендуется блокировать соединения с низким MSS.


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

Ваш электронный адрес не будет опубликован. Обязательные для заполнения поля помечены *

*

*

  1. Ответственный за данные: Мигель Анхель Гатон
  2. Назначение данных: контроль спама, управление комментариями.
  3. Легитимация: ваше согласие
  4. Передача данных: данные не будут переданы третьим лицам, кроме как по закону.
  5. Хранение данных: база данных, размещенная в Occentus Networks (ЕС)
  6. Права: в любое время вы можете ограничить, восстановить и удалить свою информацию.