Drei Sicherheitslücken in Linux-TCP-Stacks führen zu Remote-Denial-of-Service

Linux-Absturz

Recientemente veröffentlichte die Nachrichten zur Identifizierung mehrerer kritischer Schwachstellen in Linux-TCP-Stacks und FreeBSD das ermöglicht es einem Angreifer, aus der Ferne einen Kernel-Fehler auszulösen oder übermäßigen Ressourcenverbrauch verursachen, indem speziell gestaltete TCP-Pakete (Death-Packet) verarbeitet werden.

Die Probleme werden durch Fehler in den Handlern für die maximale Datenblockgröße verursacht. im TCP-Paket (MSS, Maximale Segmentgröße) und im Mechanismus zur selektiven Verbindungserkennung (SACK, Selective TCP Recognition).

Was ist eine selektive Erkennung?

Selektive TCP-Erkennung (SACK) Dies ist ein Mechanismus, bei dem der Datenempfänger den Absender über alle Segmente informieren kann, die erfolgreich akzeptiert wurden.

Dies ermöglicht es dem Absender, fehlende Segmente des Streams erneut zu übertragen aus seinem "bekannten" Set. Wenn TCP SACK deaktiviert ist, ist ein viel größerer Satz von Neuübertragungen erforderlich, um eine gesamte Sequenz erneut zu übertragen.

Im Linux-Kernel wurden die Probleme in den Versionen 4.4.182, 4.9.182, 4.14.127, 4.19.52 und 5.1.11 behoben. Die Lösung für FreeBSD ist als Patch verfügbar.

Kernel-Paket-Updates werden für Debian, RHEL, SUSE / openSUSE, ALT, Ubuntu, Fedora und Arch Linux veröffentlicht.

CVE-2019-11477 (SACK-Panik)

Das Problem manifestiert sich in Linux-Kerneln ab 2.6.29 und ermöglicht es Ihnen, einen Kernel-Absturz zu verursachen (Panik) beim Senden einer Reihe von SACK-Paketen aufgrund eines ganzzahligen Überlaufs in der Steuerung.

Für einen Angriff reicht es aus, den MSS-Wert auf 48 Bytes für eine TCP-Verbindung zu setzen und Senden einer Folge angeordneter SACK-Pakete auf eine bestimmte Weise.

Das Wesentliche des Problems ist, dass die Struktur tcp_skb_cb (Socket Buffer) dient zur Speicherung von 17 Fragmenten („definiere MAX_SKB_FRAGS(65536 / PAGE_SIZE + 1) => 17“).

Beim Senden eines Pakets wird es in die Sendewarteschlange gestellt und tcp_skb_cb speichert Details zum Paket, wie z. B. die Sequenznummer, die Flags sowie die Felder "tcp_gso_segs" und "tcp_gso_size", die zum Senden verwendet werden Segmentierungsinformationen an den Controller (TSO, Segment Segment Download) zur Verarbeitung von Segmenten auf der Netzwerkkartenseite.

Chunks werden gespeichert, wenn ein Paketverlust auftritt oder eine selektive Neuübertragung von Paketen erforderlich ist, wenn SACK aktiviert ist und TSO vom Treiber unterstützt wird.

Als Problemumgehung zum Schutz können Sie die SACK-Verarbeitung deaktivieren oder Verbindungen mit einem kleinen MSS blockieren (funktioniert nur, wenn Sie sysctl net.ipv4.tcp_mtu_probing auf 0 setzen und bei niedrigem MSS möglicherweise einige normale Probleme lösen).

CVE-2019-11478 (SACK Langsamkeit)

Dieser Fehler verursacht eine Unterbrechung des SACK-Mechanismus (bei Verwendung des Linux-Kernels unter 4.15) oder übermäßiger Ressourcenverbrauch.

Das Problem tritt auf, wenn speziell gestaltete SACK-Pakete verarbeitet werden, mit denen die Warteschlange für die erneute Übertragung fragmentiert werden kann (TCP-erneute Übertragung). Die Schutzlösungen ähneln den vorherigen Sicherheitslücken

CVE-2019-5599 (SACK Langsamkeit)

Ermöglicht die Fragmentierung der Karte der gesendeten Pakete bei der Verarbeitung einer SACK-Sequenz innerhalb einer einzelnen TCP-Verbindung und veranlassen, dass eine ressourcenintensive Listensuchoperation ausgeführt wird.

Das Problem manifestiert sich in FreeBSD 12 mit dem Mechanismus zur Erkennung von RACK-Paketverlusten. Als Problemumgehung können Sie das RACK-Modul deaktivieren (standardmäßig nicht geladen, deaktiviert durch Angabe von sysctl net.inet.tcp.functions_default = freebsd).

CVE-2019-11479

Der Fehler ermöglicht es einem Angreifer, den Linux-Kernel dazu zu bringen, Antworten in mehrere TCP-Segmente aufzuteilen. Jedes enthält nur 8 Datenbytes, was zu einer signifikanten Zunahme des Datenverkehrs, einer erhöhten CPU-Auslastung und einem verstopften Kommunikationskanal führen kann.

Darüber hinaus verbraucht es zusätzliche Ressourcen (Prozessorleistung und Netzwerkkarte).

Dieser Angriff erfordert kontinuierliche Anstrengungen des Angreifers und die Treffer werden kurz nach dem Ende des Datenverkehrs durch den Angreifer beendet.

Während dieses Angriffs wird das System mit reduzierter Kapazität ausgeführt, was bei einigen Benutzern zu einem Denial-of-Service führt.

Ein Remote-Benutzer kann dieses Problem auslösen, indem er die maximale Segmentgröße festlegt (MSS) einer TCP-Verbindung an ihrer untersten Grenze (48 Byte) und Senden einer Sequenz speziell gestalteter SACK-Pakete.

Als Workaround wird empfohlen, Verbindungen mit niedrigem MSS zu blockieren.


Hinterlasse einen Kommentar

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

*

*

  1. Verantwortlich für die Daten: Miguel Ángel Gatón
  2. Zweck der Daten: Kontrolle von SPAM, Kommentarverwaltung.
  3. Legitimation: Ihre Zustimmung
  4. Übermittlung der Daten: Die Daten werden nur durch gesetzliche Verpflichtung an Dritte weitergegeben.
  5. Datenspeicherung: Von Occentus Networks (EU) gehostete Datenbank
  6. Rechte: Sie können Ihre Informationen jederzeit einschränken, wiederherstellen und löschen.