Luki w stosach TCP systemu Linux i FreeBSD prowadzące do zdalnej odmowy usługi

Firma Netflix ujawnił kilka krytycznych luki w zabezpieczeniach w stosach TCP systemu Linux i FreeBSD, które umożliwiają zdalne zainicjowanie awarii jądra lub spowodowanie nadmiernego zużycia zasobów podczas przetwarzania specjalnie zaprojektowanych pakietów TCP (pakiet śmierci). Problemy spowodowany błędy w procedurach obsługi maksymalnego rozmiaru bloku danych w pakiecie TCP (MSS, Maksymalny rozmiar segmentu) oraz mechanizmie selektywnego potwierdzania połączeń (SACK, TCP Selective Acknowledgment).

  • CVE-2019-11477 (SACK Panic) - problem pojawiający się w jądrach Linuksa począwszy od wersji 2.6.29 i pozwalający wywołać panikę jądra poprzez wysłanie serii pakietów SACK z powodu przepełnienia liczby całkowitej w procedurze obsługi. Do ataku wystarczy ustawić wartość MSS dla połączenia TCP na 48 bajtów (dolny limit ustawia rozmiar segmentu na 8 bajtów) i wysłać sekwencję pakietów SACK ułożonych w określony sposób.

    W ramach obejścia bezpieczeństwa możesz wyłączyć przetwarzanie SACK (wpisz 0 do /proc/sys/net/ipv4/tcp_sack) lub zablokować połączenia z niskim poziomem MSS (działa tylko wtedy, gdy sysctl net.ipv4.tcp_mtu_probing jest ustawione na 0 i może zakłócać niektóre normalne połączenia z niskim poziomem MSS);

  • CVE-2019-11478 (SACK Slowness) - prowadzi do zakłócenia mechanizmu SACK (w przypadku korzystania z jądra Linuksa młodszego niż 4.15) lub nadmiernego zużycia zasobów. Problem pojawia się podczas przetwarzania specjalnie spreparowanych pakietów SACK, które można wykorzystać do fragmentacji kolejki retransmisyjnej (retransmisja TCP). Obejścia zabezpieczeń są podobne do poprzedniej luki;
  • CVE-2019-5599 (SACK Slowness) - pozwala spowodować fragmentację mapy wysyłanych pakietów podczas przetwarzania specjalnej sekwencji SACK w ramach pojedynczego połączenia TCP i spowodować wykonanie operacji wyliczania listy wymagającej dużej ilości zasobów. Problem pojawia się we FreeBSD 12 z mechanizmem wykrywania utraty pakietów RACK. W ramach obejścia możesz wyłączyć moduł RACK;
  • CVE-2019-11479 - osoba atakująca może spowodować, że jądro Linuksa podzieli odpowiedzi na kilka segmentów TCP, z których każdy zawiera tylko 8 bajtów danych, co może prowadzić do znacznego wzrostu ruchu, zwiększonego obciążenia procesora i zatkania kanału komunikacyjnego. Jest to zalecane jako obejście zabezpieczające. zablokować połączenia z niskim MSS.

    W jądrze Linuksa problemy zostały rozwiązane w wersjach 4.4.182, 4.9.182, 4.14.127, 4.19.52 i 5.1.11. Poprawka dla FreeBSD jest dostępna jako skrawek. W dystrybucjach wydano już aktualizacje pakietów jądra Debian, RHEL, SUSE/openSUSE. Korekta w trakcie przygotowań Ubuntu, Fedora и Arch Linux.

    Źródło: opennet.ru

  • Dodaj komentarz