Zum Inhalt springen
BlogSicherheitLinode Security Digest 13-19, März 2023

Linode Security Digest 13. bis 19. März 2023

Linode Security Digest

In der Zusammenfassung dieser Woche werden wir darüber sprechen:

  • fehlende ordnungsgemäße Status-, Nonce- und PKCE-Prüfungen für die OAuth -Authentifizierung;
  • Apache HTTP-Server: mod_proxy_uwsgi HTTP-Antwortaufteilung; 
  • ShadowsocksX-NG signiert mit com.apple.security.get-task-allow Berechtigungen aufgrund von CODE_SIGNING_INJECT_BASE_ENTITLEMENTS; und
  • ein Zugriffskontrollproblem in runc, das es einem Angreifer ermöglicht, seine Privilegien innerhalb eines Containers zu erweitern.
CVE-2023-27490: Fehlende korrekte Status-, Nonce- und PKCE-Prüfungen für die OAuth -Authentifizierung

Hintergrund

OAuth (Open Authorization) ist ein offenes Standardprotokoll, das es Anwendungen von Drittanbietern ermöglicht, im Namen eines Benutzers auf Ressourcen zuzugreifen, ohne dass die Anmeldedaten des Benutzers, wie Benutzername und Passwort, bekannt sein müssen. OAuth ermöglicht es dem Benutzer, den Zugriff auf seine Ressourcen zu gewähren, indem er sich beim Eigentümer der Ressource (z. B. einer Social-Media-Plattform) authentifiziert und ein Zugriffstoken erhält, das dann für den Zugriff auf die Ressourcen im Namen des Benutzers verwendet wird. Dieses Zugriffstoken wird vom Ressourceneigentümer ausgestellt und kann von der Drittanbieteranwendung verwendet werden, um auf die Ressourcen des Nutzers zuzugreifen, ohne dass die Anmeldedaten des Nutzers bekannt sein müssen.

Schwachstelle

Die Sicherheitslücke CVE-2023-27490 besteht im Next-auth-Paket, das mit dem OAuth -Authentifizierungsfluss zusammenhängt. Sie tritt insbesondere während einer OAuth -Sitzung auf, wenn die Autorisierungs-URL abgefangen und von einem Angreifer manipuliert wird. Diese Schwachstelle kann es dem Angreifer ermöglichen, sich als Opfer anzumelden und den CSRF-Schutz zu umgehen, der normalerweise vorhanden ist. Im Ablauf von OAuth wird die Autorisierungs-URL verwendet, um den Authentifizierungsprozess einzuleiten und den Zugriff auf die Ressourcen des Benutzers anzufordern. Die URL enthält wichtige Parameter wie den Status, pkce und nonce, die zur Verhinderung von Angriffen wie CSRF, Replay-Angriffen und Token-Diebstahl verwendet werden. Wenn die Autorisierungs-URL jedoch von einem Angreifer abgefangen und manipuliert wird, können diese Schutzmaßnahmen umgangen werden, was zu der im Next-auth-Paket beschriebenen Sicherheitslücke führt.

Die Ursache für die Sicherheitslücke ist ein Teilfehler, der während einer kompromittierten OAuth -Sitzung auftritt. Insbesondere wird fälschlicherweise ein Sitzungscode generiert, der es dem Angreifer ermöglicht, den CSRF-Schutz zu umgehen und sich als Opfer anzumelden.

Milderung

  • Die Schwachstelle wurde in next-auth Version v4.20.1 behoben. Es wird empfohlen, auf die neueste Version zu aktualisieren, um dieses Problem zu beheben.
  • Durch die Verwendung der erweiterten Initialisierung können Entwickler jedoch die Callback-Anforderung für Status, pkce und nonce manuell mit der Anbieterkonfiguration abgleichen und den Anmeldevorgang abbrechen, wenn eine Abweichung vorliegt
CVE-2023-27522: Apache HTTP-Server: mod_proxy_uwsgi HTTP-Antwort Aufteilung

Hintergrund

HTTP Request Smuggling ist eine Schwachstelle in Webanwendungen, die auftritt, wenn ein Angreifer die Art und Weise manipulieren kann, in der eine Anwendung oder ein Webserver von einem Client gesendete HTTP-Anfragen verarbeitet. Diese Schwachstelle kann es einem Angreifer ermöglichen, Sicherheitskontrollen zu umgehen, unbefugte Aktionen durchzuführen oder sensible Daten zu stehlen.

Bei diesem Angriff werden in der Regel Unstimmigkeiten in der Art und Weise ausgenutzt, wie ein Front-End-Webserver und ein Back-End-Server oder eine Anwendung HTTP-Anfragen behandeln, z. B. bei der Interpretation von Content-Length-Headern oder der Behandlung von Chunked Encoding. Durch Manipulation dieser Unstimmigkeiten kann ein Angreifer eine Anfrage erstellen, die von den beiden Servern unterschiedlich interpretiert wird, was dazu führt, dass entweder die Anfrage nicht ordnungsgemäß verarbeitet wird oder der Front-End-Server als Stellvertreter des Angreifers fungiert, um bösartige Anfragen im Namen des Angreifers auszuführen.

Schwachstelle

Die Sicherheitslücke CVE-2023-27522 betrifft Apache HTTP Server Versionen 2.4.30 bis 2.4.55, speziell über das mod_proxy_uwsgi Modul. Die Sicherheitslücke tritt auf, wenn der Ursprungsserver einen speziell gestalteten HTTP-Antwort-Header sendet, der bestimmte Sonderzeichen wie Leerzeichen oder Tabulatoren, gefolgt von einem "Content-Length"-Header, enthält.

Das Modul mod_proxy_uwsgi in Apache HTTP Server kann diesen Header falsch interpretieren und die Antwort an den Client mit einem abgeschnittenen oder geteilten "Content-Length"-Header weiterleiten. Dies kann dazu führen, dass der Client unvollständige oder falsche Antworten erhält, die es einem Angreifer ermöglichen, verschiedene Arten von Angriffen auszuführen, z. B. Datenlecks, serverseitige Anforderungsfälschung (SSRF), Cross-Site-Scripting (XSS) und Remotecodeausführung (RCE).

Milderung

  • Es wird empfohlen, auf die neueste Version von Apache HTTP Server zu aktualisieren oder alle verfügbaren Patches anzuwenden. 
  • Zusätzlich können Web Application Firewalls und Intrusion Detection Systeme eingesetzt werden, um HTTP-Response-Schmuggel-Angriffe zu erkennen und zu verhindern. 
  • Außerdem muss sichergestellt werden, dass geeignete Eingabevalidierungs- und Ausgabekodierungstechniken verwendet werden, um die Einfügung von Sonderzeichen in HTTP-Antworten zu verhindern.
CVE-2023-27574: ShadowsocksX-NG signiert mit com.apple.security.get-task-allow 

Hintergrund

ShadowsocksX-NG ist eine kostenlose und quelloffene Anwendung, die Benutzern hilft, die Internetzensur zu umgehen, indem sie einen sicheren Socks5-Proxy erstellt, über den sie auf das Internet zugreifen können.

Wenn eine Anwendung entwickelt und zur Verbreitung bereit ist, muss sie mit einem gültigen Zertifikat signiert werden, um sicherzustellen, dass sie rechtmäßig ist und nicht manipuliert wurde. Dieser Vorgang wird als Code Signing bezeichnet.

Eine der Voraussetzungen für das Signieren von Code ist die Einbeziehung von Berechtigungen, d. h. von Berechtigungen, die eine Anwendung benötigt, um korrekt zu funktionieren. Berechtigungen legen fest, auf welche Ressourcen und Aktionen die Anwendung zugreifen darf, z. B. auf das Netzwerk, das Dateisystem oder die Hardware.

Schwachstelle

Die Sicherheitslücke CVE-2023-27574 besteht in der Anwendung ShadowsocksX-NG Version 1.10.0, die mit einer Berechtigung namens com.apple.security.get-task-allow signiert ist. Diese Berechtigung ermöglicht es, die Anwendung zu debuggen und von Entwicklungstools wie Xcode zu inspizieren, selbst wenn sie auf dem Gerät eines Benutzers ausgeführt wird.

Der Grund für die Aufnahme dieser Berechtigung liegt in einer Funktion namens CODE_SIGNING_INJECT_BASE_ENTITLEMENTS. Wenn die Funktion CODE_SIGNING_INJECT_BASE_ENTITLEMENTS aktiviert ist, fügt Xcode automatisch eine Reihe von Standardberechtigungen in die Signatur der Anwendung ein. Diese Berechtigungen basieren auf dem Konto des Entwicklers und den Projekteinstellungen. Sie enthalten standardmäßig die Berechtigung com.apple.security.get-task-allow.

Das Problem bei diesem Ansatz ist, dass die Berechtigung com.apple.security.get-task-allow von Angreifern missbraucht werden kann, um sensible Informationen aus dem Speicher der Anwendung zu erhalten, z. B. Verschlüsselungsschlüssel oder andere sensible Daten. Dies könnte durch Ausnutzung einer Schwachstelle in der Anwendung oder durch Verwendung eines Drittanbieter-Tools zum Lesen des Anwendungsspeichers geschehen.

Milderung

  • Benutzern von ShadowsocksX-NG Version 1.10.0 wird empfohlen, auf eine neuere Version zu aktualisieren, die die com.apple.security.get-task-allow Berechtigungen nicht enthält, oder die Berechtigungen manuell aus der Code Signing Signatur der Anwendung zu entfernen.
  • Außerdem sollten die Benutzer bei der Verwendung von VPN/Proxy-Software vorsichtig sein und sicherstellen, dass sie eine vertrauenswürdige und sichere Version der Software verwenden.
CVE-2019-5736: Zugriffskontrollproblem in runc

Hintergrund

runc ist ein Befehlszeilendienstprogramm zum Erzeugen und Ausführen von Containern gemäß den Spezifikationen der Open Container Initiative (OCI). Es wird üblicherweise in Container-Laufzeitumgebungen wie Docker, Kubernetes und anderen verwendet.

Schwachstelle

Bei dieser Sicherheitslücke CVE-2019-5736 handelt es sich um ein Zugriffskontrollproblem, das es einem Angreifer ermöglicht, seine Privilegien innerhalb eines Containers zu erweitern. Insbesondere hängt das Problem mit der Art und Weise zusammen, wie die runc-Version bis 1.1.4 das Root-Dateisystem(rootfs) beim Starten eines Containers behandelt.

In libcontainer/rootfs_linux.gorichtet runc das rootfs eines Containers ein, indem es als schreibgeschützt gemountet wird und dann eine beschreibbare Schicht darüber gelegt wird. Dieser Prozess wird verwendet, um das Dateisystem des Containers zu erstellen und es vom Hostsystem zu isolieren.

Eine Schwachstelle in diesem Code ermöglicht es einem Angreifer jedoch, die Dateien des Hostsystems /proc/self/exe zu überschreiben, die ein symbolischer Link zur runc-Binärdatei selbst ist. Auf diese Weise kann der Angreifer beliebigen Code mit erhöhten Rechten ausführen, dem Container entkommen und die Kontrolle über das Wirtssystem erlangen.

Milderung

  • Aktualisieren Sie auf eine gepatchte Version: Ein Upgrade auf eine gepatchte Version von runc ist die effektivste Abhilfe für diese Sicherheitslücke. runc Versionen 1.0.0-rc6 und höher enthalten einen Fix für diese Sicherheitslücke.
  • Aktualisieren Sie Container-Laufzeiten: Wenn Sie eine Container-Laufzeitumgebung wie Docker oder Kubernetes verwenden, stellen Sie sicher, dass Sie auf eine Version aktualisieren, die die gepatchte runc-Version enthält.
  • Implementierung von Zugriffskontrollen: Um das Risiko dieser Schwachstelle zu mindern, sollten Zugriffskontrollen implementiert werden, um die Möglichkeiten von Angreifern einzuschränken, Container mit benutzerdefinierten Volume-Mount-Konfigurationen zu erzeugen und benutzerdefinierte Images auszuführen. 
  • Minimieren Sie die Privilegien von Containern: Die Minimierung der Privilegien von Containern kann dazu beitragen, den Umfang eines potenziellen Angriffs zu begrenzen. Dies kann durch die Ausführung von Containern als Nicht-Root-Benutzer, die Einschränkung von Container-Funktionen und die Begrenzung des Zugriffs auf sensible Host-Ressourcen erreicht werden.

Kommentare

Kommentar abgeben

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