Zum Inhalt springen
BlogSicherheitLinode Security Digest März 20 - 26, 2022

Linode Security Digest 20. bis 26. März 2022

Linode Security Digest

Diese Woche werden wir einige hochgefährliche Schwachstellen im Linux-Kernel, Apache und openssl diskutieren.

ICMPv6 Denial of Service im Linux-Kernel

CVE-2022-0742 ermöglicht es jedem, ICMPv6-Nachrichten des Typs 130 oder 131 zu senden und ein Speicherleck im Kernel auszunutzen, wodurch dem Host der Speicher ausgeht. Diese Schwachstelle ist bemerkenswert, da ein Angreifer durch das Senden von nur wenigen Paketen eine Dienstverweigerung für das gesamte System auslösen kann.

Ursache - Um die Ursache zu finden, sollte man am besten in der Git-Commit-Historie selbst nachsehen. Der Autor des Fixes fand dies zunächst, als er untersuchte, warum die Funktion synchronize_net() innerhalb von ipv6_mc_down() hinzugefügt wurde. Der Autor des Commits fand heraus, dass igmp6_event_query() und igmp6_event_report() skbs, die Datenstrukturen, die vom Linux-Kernel verwendet werden, um Informationen über Pakete zu speichern, fallen lassen. Diese Schwachstelle wird derzeit noch analysiert.

Diese Schwachstelle ist mit einigen Vorbehalten behaftet: 

  • Dies betrifft keine Versionen von Red Hat Enterprise Linux, da die verfügbaren Kernel älter als 5.13 sind.
  • Der stabile Zweig war betroffen.

Die einzige Möglichkeit, diese Schwachstelle zu beheben, besteht in einer Aktualisierung des Kernels. Ein Patch, der diese Schwachstelle behebt, wurde bereits als Upstream bereitgestellt.

Apache Sicherheitshinweis

Die Schwachstelle, auf die wir uns in erster Linie konzentrieren werden, ist CVE-2022-23943, aber zunächst werden wir die anderen CVEs in der Mitteilung kurz zusammenfassen. Die anderen Schwachstellen in diesem Advisory sind CVE-2022-22720, eine Schwachstelle, die das Schmuggeln von http-Anfragen ermöglicht. Es gibt auch CVE-2022-22721, die Integer-Überläufe auf 32-Bit-Systemen ermöglicht, wenn LimitXMLRequestBody in httpd.conf größer als 350MB ist. CVE-2022-22719 verursacht einen Absturz aufgrund von mod_lua mit nicht initialisierten Variablen. 

mod_sed ist ein optionales Apache Modul, das auf den meisten Linux-Systemen nicht installiert oder standardmäßig aktiviert ist. Es wird verwendet, um Text in Webseiten zu ersetzen, die Apache anhand eines Musters ausgibt, ähnlich wie der Befehl sed funktioniert.

CVE-2022-23943 ist eine Sicherheitslücke im Speicher, die einen DoS verursachen kann. Die Schwachstelle in der Speicherbeschädigung stammt von mod_sed. Die Schwachstelle wird durch das Senden großer Datenmengen durch mod_sed-Filter ausgelöst. Wenn das gesendete Paket größer als 2 GB ist, kommt es zu einem signierten Integer-Überlauf, der einen Absturz verursacht. Wenn mehr als 4 GB gesendet werden, kommt es ebenfalls zu einem Integer-Überlauf.

Grundursache - Die Grundursache liegt in der Funktion appendmem_to_linebuf wenn memcpy aufgerufen wird. Die Korrektur, die angewandt wurde, änderte den Puffer, der in den Funktionsparametern referenziert wird, um apr_size_t statt int zu verwenden. Apr_size_t erlaubt die Verwendung eines 4 Byte großen signierten int und eines 8 Byte großen unsignierten.

Diese Schwachstelle ist mit einigen Vorbehalten behaftet:

  • mod_sed wird selten verwendet; und
  • mod_sed muss manuell installiert und konfiguriert werden. Es wird normalerweise nicht als Abhängigkeit für andere Pakete herangezogen.

Zu den empfohlenen Abhilfemaßnahmen für diese Sicherheitslücke gehören:

  • Aktualisierung von Apache auf eine Version größer als 2.4.52
  • Deaktivieren von mod_sed

Eine teilweise Abschwächung kann durch die Einstellung von LimitRequestBody 1073741824 in httpd.conf erreicht werden. Damit wird jedoch nur verhindert, dass böswillige Clients eine Anfrage von mehr als 2 GB senden. Ein Angreifer könnte immer noch in der Lage sein, mod_sed dazu zu bringen, eine Datei mit mehr als 2 GB zu lesen, wodurch der Exploit ausgelöst wird.

Denial of Service in OpenSSL

OpenSSL ist eine Bibliothek und ein Befehlszeilenprogramm zum Verwalten, Erstellen, Überprüfen und Signieren von Zertifikaten. Es ist eine der ältesten Open-Source-Kryptographie-Bibliotheken und wird fast überall auf Linux-Systemen verwendet.

OpenSSL verwendet die Funktion BN_mod_sqrt(), die eine modulare Quadratwurzel berechnet. Sie enthält einen Fehler, bei dem nicht-primäre Moduli eine Endlosschleife bilden können. Sie wird bei der Überprüfung von Zertifikaten verwendet, die öffentliche Elliptische-Kurven-Schlüssel in komprimierter Form oder explizite Elliptische-Kurven-Parameter mit einem in komprimierter Form kodierten Basispunkt enthalten. Um ein Zertifikat für DoS zu manipulieren, muss der Angreifer ein Zertifikat, das eine elliptische Kurve verwendet, z. B. mit einem Hex-Editor verändern, um es mathematisch ungültig zu machen.

Ursache - Der Kern der Schwachstelle liegt im Parsen von EC-Schlüsseln mit Punkten im komprimierten Format; während des Parsens dieser Art von Schlüsseln versucht OpenSSL, den komprimierten Punkt zu expandieren und eine Quadratwurzel modulo der Primzahl p zu berechnen, über die die Kurve definiert ist. Die Primzahl von p wird jedoch nirgends überprüft, nicht einmal in BN_mod_sqrt(), für die sie eine Voraussetzung ist; daher wird ein Fehler in der Implementierung eine Endlosschleife verursachen, weil p nicht wie erwartet prim ist. Das Advisory für OpenSSL kann hier gefunden werden. Derzeit sind die gepatchten Versionen:

  • OpenSSL 3.0.2
  • OpenSSL 1.1.1n  
  • OpenSSL 1.0.2zd 

Darüber hinaus gibt es einige Einschränkungen, um diese Sicherheitslücke erfolgreich auszunutzen, und die folgenden Bedingungen müssen erfüllt sein:

  • Ein Angreifer generiert ein Zertifikat mit elliptischer Kurvenkryptographie mit bestimmten ungültigen Parametern oder verändert ein bestehendes Zertifikat.
  • Ein Angreifer muss OpenSSL dazu bringen, das Zertifikat zu verifizieren, entweder durch lokalen Zugriff oder indem er es einer Webanwendung zur Verfügung stellt, die mTLS verwendet und vom Benutzer bereitgestellte Zertifikate verifiziert.

Kommentare

Kommentar abgeben

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