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

Firma Netflix ujawnili kilka krytycznych vulnerabilities w stosach TCP systemów Linux i FreeBSD, które umożliwiają zdalne inicjowanie awarii jądra lub wywołanie nadmiernego zużycia zasobów podczas przetwarzania specjalnie skonstruowanych pakietów TCP (packet-of-death). Problemy są spowodowane błędami w obsłudze maksymalnego rozmiaru bloku danych w pakiecie TCP (MSS, Maximum segment size) oraz mechanizmem potwierdzania selektywnego połączeń (SACK, TCP Selective Acknowledgement).

  • CVE-2019-11477 (SACK Panic) — problem występuje w jądrach Linux od wersji 2.6.29 i pozwala na wywołanie awarii (panic) jądra przez wysyłanie serii pakietów SACK z powodu wystąpienia przepełnienia całkowitoliczbowego w obsłudze. Do ataku wystarczy ustawić dla połączenia TCP wartość MSS na 48 bajtów (dolny limit, ustala rozmiar segmentu na 8 bajtów) i wysłać ciąg odpowiednio skonstruowanych pakietów SACK.

    Jako obejścia ochrony można wyłączyć obsługę SACK (zapisać 0 w /proc/sys/net/ipv4/tcp_sack) lub zablokować połączenia z niskim MSS (działa tylko przy ustawieniu sysctl net.ipv4.tcp_mtu_probing na 0 i może zakłócić działanie niektórych normalnych połączeń z niskim MSS);

  • CVE-2019-11478 (SACK Slowness) — prowadzi do zakłócenia działania mechanizmu SACK (przy użyciu jądra Linux starszego niż 4.15) lub nadmiernego zużycia zasobów. Problem występuje podczas przetwarzania specjalnie skonstruowanych pakietów SACK, które można wykorzystać do fragmentacji kolejki retransmisji TCP. Obwodowe metody ochrony są podobne do wcześniejszej luki;
  • CVE-2019-5599 (SACK Slowness) — pozwala na wywołanie fragmentacji mapy wysyłanych pakietów podczas przetwarzania specjalnej sekwencji SACK w ramach jednego połączenia TCP, co może spowodować realizację operacji wymagającej dużych zasobów związanej z przeszukiwaniem listy. Problem występuje w FreeBSD 12 z mechanizmem określania utraty pakietów RACK. Jako obwodowy środek można wyłączyć moduł RACK;
  • CVE-2019-11479 — atakujący może w jądra Linux wywołać podział odpowiedzi na kilka segmentów TCP, z których każdy zawiera tylko 8 bajtów danych, co może prowadzić do znacznego zwiększenia ruchu, wzrostu obciążenia CPU i zablokowania pasma komunikacyjnego. Jako obwodowa metoda ochrony zaleca się zablokować połączenia z niskim MSS.

    W jądrze Linux 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 w postaci łatki. W dystrybucjach aktualizacje pakietów z jądrem zostały już wydane dla Debian, RHEL, SUSE/openSUSE. Poprawka w trakcie przygotowania Ubuntu, Fedora i Arch Linux.

    Źródło: opennet.ru

  • Kup solidny hosting stron z ochroną przed DDoS, serwery VPS VDS 🔥 Kup solidny hosting stron z ochroną przed DDoS, serwery VPS VDS | ProHoster