Linux- und FreeBSD-Kernel über TCP verwundbar

Linux- und FreeBSD-Kernel verwundbar
Foto: Unsplash

Netflix-Entwickler haben vier Sicherheitslücken im TCP-Code der Kernel von Linux und FreeBSD entdeckt. Eine davon kann per Denial-of-Service Attacke zum Auslösen eines Kernel-Panic genutzt werden.

TCP steht für Transmission Control Protocol und ist ein Netzwerkprotokoll, das bestimmt, wie Daten zwischen Netzwerkkomponenten ausgetauscht werden. Im Gegensatz zum verbindungslosen UDP (User Datagram Protocol) stellt TCP dazu eine Verbindung zwischen zwei Endpunkten einer Netzverbindung her, auf der in beide Richtungen Daten übertragen werden können.

Angriff per Integerüberlauf

Die vier Lücken bieten einen Angriffsvektor in der Art, wie die TCP-Implementation im Kernel das Selective Acknowledgement (SACK) gehandhabt wird. Dabei handelt es sich um eine Erweiterung des TCP-Protokolls zur Steigerung des Datendurchsatzes bei Paketverlusten. Dabei wird per SACK nur das neue Paket und nicht der gesamte Inhalt des jeweiligen TCP Receive Window neu angefordert.

Die Lücke, die durch einen Integerüberlauf beim Verarbeiten des TCP-SACK einen Kernel-Panic und damit den Absturz von Servern herbeiführen kann ist als CVE-2019-11477 katalogisiert. Die anderen drei Verwundbarkeiten erreichen durch Denial-of-Service Attacken eine Ressourcenverknappung, der zum Verlangsamen des Systems, zum Systemstillstand oder -Absturz führen kann.

Die beiden anderen Linux betreffenden Lücken sind unter CVE-2019-11478 und CVE-2019-11479 katalogisiert. Die Lücke im Kernel von FreeBSD trägt die CVE-Nummer 2019-5599. Die mit Priorität hoch kategorisierte Lücke CVE-2019-11477 ist in allen Linux-Kerneln seit 2.6.29 aus dem Jahr 2009 vertreten.

Bereits geschlossen

Unter Linux wurden die Lücken bereits für die stabilen Kernel-Versionen 4.4.182, 4.9.182, 4.14.127, 4.19.52, sowie 5.1.11 geschlossen. Anwender, die nicht auf einen dieser Kernel aktualisieren können, behelfen sich mit einem Workaround, indem sie mittels

sudo echo "0" > /proc/sys/net/ipv4/tcp_sack
sudo echo "0" > /proc/sys/net/ipv6/tcp_sack

die Unterstützung für TCP-SACK deaktivieren. Der Hack ist nicht permanent und muss nach einem Neustart wiederholt werden.

Kommentare

5 Antworten zu „Linux- und FreeBSD-Kernel über TCP verwundbar“

  1. Avatar von Christoph
    Christoph

    Danke für den Beitrag.

    Sicher, dass der Befehl so stimmt?

    1. Avatar von Ferdinand

      Hallo Christoph,
      eigentlich müsste der so funktionieren, stand zumindest so bei Red Hat. Auch im Netz ist diese Variante zu finden. Geht aber zumindest bei Debian nicht. Ich hab das mal auf so abgeändert, dass es überall funktionieren sollte. Danke fürs finden.

  2. Avatar von Micha
    Micha

    Den Befehl musste ich unter Fedora mit sudo -i ausführen.

    Man kann aber auch eine Service-Datei anlegen, müsste dann so in etwa aussehen.

    sudo nano /etc/systemd/system/tcp.service

    [Unit]
    Description=TCP-SACK für IPv4 und IPv6 deaktivieren

    [Service]
    Type=oneshot
    RemainAfterExit=yes

    ExecStart=/bin/sh -c „echo „0“ > /proc/sys/net/ipv4/tcp_sack;“
    ExecStart=/bin/sh -c „echo „0“ > /proc/sys/net/ipv6/tcp_sack;“

    [Install]
    WantedBy=multi-user.target

    (ohne “ in nano einfügen)

    Dann nano schließen und service aktivieren mit:
    sudo systemctl enable tcp.service

    Ich habe es nicht probiert, sollte aber so klappen.

  3. Avatar von Nick
    Nick

    Ziemlich übertrieben extra einen Dienst für Systemd zu schreiben. Ein temporärer Cronjob hätte es auch getan, bis zum nächsten Kernel-Update.

    1. Avatar von Ferdinand

      Ist doch nette Fingerübung. Systemd machts einfach möglich.

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert