Preorder drugiego tomu książki sekuraka: Wprowadzenie do bezpieczeństwa IT. -15% z kodem: sekurak-book

Kolejny poważny błąd w systemd – można zdalnie wykonać kod w OS

29 października 2018, 10:52 | W biegu | komentarzy 7

O systemd pisaliśmy jakiś czas temu. W skrócie – przez podstawienie serwera DHCP można wykonać kod w systemie operacyjnym ofiary.

W opisie podatności przeczytacie, że błąd występuje w kliencie DHCP (i to w wersji na IPv6). Więc w zasadzie nie ma się czego obawiać? Otóż jest tu mały kruczek – atakujący może wysłać pakiet ICMP (IPv6) Router Advertisement a klient DHCP na ofierze uruchamia się automatycznie…:

systemd-networkd contains a DHCPv6 client which is written from scratch and can be spawned automatically on managed interfaces when IPv6 router advertisement are received

Dalej atakujący przekazuje odpowiednio spreparowaną opcję DHCP i jeśli ofiara ma szczęście to będzie tylko DoS, a w gorszej sytuacji – wykonanie kodu w OS.

Pamiętajmy, że aby całość zadziałała musimy mieć włączone wsparcie dla IPv6 (jeśli używacie tylko IPv4 – nic nie szkodzi, obsługa v6 jest włączona prawie wszędzie domyślnie). System ofiary musi też akceptować pakiety ICMP Router Advertisement oraz mieć skonfigurowanego klienta DHCP żeby obsługiwał IPv4 oraz v6.

Dystrybucje Linuksa są w trakcie łatania (RedHat „wycenił” podatność aż na 8.8/10, Ubuntu nieco mniej, tutaj Debian).

–ms

 

Spodobał Ci się wpis? Podziel się nim ze znajomymi:



Komentarze

  1. Co najmniej w sieciach lokalnych IPv6 nie jest do niczego potrzebne (zresztą nawet dla dedyków z publicznym IP, też najczęściej nie jest, może z paroma wyjątkami). A wówczas coś takiego załatwia sprawę tego błędu, jak i wielu innych:

    https://github.com/serverfarmer/sf-ip-noipv6

    Odpowiedz
    • openworld

      Tylko te cztery miejsca:

      net.ipv6.conf.all.disable_ipv6 = 1
      net.ipv6.conf.default.disable_ipv6 = 1
      net.ipv6.conf.all.forwarding = 0
      net.ipv6.conf.default.forwarding = 0

      Czy może coś jeszcze?

      Odpowiedz
      • Jeszcze zobacz linijkę z JAVA_OPTS w setup.sh – to rozwiązuje problem z Javą, bo inaczej domyślnie binduje sockety na ipv6-only i po wyłączeniu ipv6 okazuje się, że aplikacja nie przyjmuje połączeń, mimo że niby działa i słucha.

        Odpowiedz
  2. Kingu

    Zaczyna się festiwal bugów w IPv6, widać protokół zaczyna wchodzić pod strzechy

    Odpowiedz
    • Bartek

      To nie bug IPv6, tylko podatność gównianego systemd. Lenny Poettering wymyślił sobie, że w przyszłości w systemie będą tylko dwa procesy: systemd (który wchłonie jądro) i przeglądarka. Od tego czasu zaczęło się psucie fajnego systemu.

      Odpowiedz
  3. Jan

    RedHat wprowadził 'systemd’.
    Zapomnieli o KISS.

    Odpowiedz
  4. openworld

    Devuan.

    Odpowiedz

Odpowiedz