Zum Inhalt springen
BlogSicherheitLinode Security Digest Januar 30 - Februar 6, 2022

Linode Security Digest 30. Januar bis 6. Februar 2022

Linode Security Digest

Diese Woche werden wir drei schwerwiegende Sicherheitslücken besprechen, die es Angreifern ermöglichen könnten, ihre Privilegien zu erweitern, wenn sie lokalen Zugriff auf das System haben.

Linux Kernel eBPF - Unzulässige Eingabevalidierung Schwachstelle

CVE-2022-23222 beschreibt eine Sicherheitslücke, die aus der Behandlung von eBPF-Programmen durch den Kernel resultiert. Ein Angreifer, der BPF ausführen kann, kann das System zum Absturz bringen oder beliebigen Code im Kontext des Kernels ausführen.

Ursache - Der BPF-Verifizierer schränkt mehrere *_OR_NULL-Zeigertypen nicht richtig ein, wodurch diese Typen Zeigerarithmetik ausführen können. Dies kann ausgenutzt werden, um beliebigen Code auszuführen oder das System zum Absturz zu bringen. 

Wichtiger Hinweis: Unprivilegierte BPF wird in den meisten Distributionen standardmäßig deaktiviert. Der Fehler wurde in Kernel-Version 5.8.0 eingeführt und in Kernel-Version 5.14.17 gepatcht. Die Verfügbarkeit von öffentlichen Exploits ist ein weiterer Grund, warum CVE-2022-23222 ein erhebliches Risiko darstellt.

Wenn Sie den neuesten Kernel Ihrer Linux-Distribution verwenden, können Sie sich auf einfache Weise vor dieser Sicherheitslücke schützen. Wenn Ihre Linode einen von uns bereitgestellten Kernel bootet, können Sie überprüfen, ob das Konfigurationsprofil Ihrer Linode so eingestellt ist, dass der neueste Kernel gebootet wird, und dann Ihre Linode neu starten. 

Wenn Sie nicht sofort auf einen gepatchten Kernel aktualisieren können, können Sie diese Schwachstelle auch entschärfen, indem Sie sicherstellen, dass unprivileged_bpf_disabled auf 1 gesetzt ist. Das folgende Beispiel wendet eine temporäre Entschärfung an, bis Ihre Linode neu gebootet wird. Stellen Sie sicher, dass Sie diese Einstellung in eine sysctl-Konfigurationsdatei schreiben und Ihre Linode sicher booten, um die Abschwächung beizubehalten.

# sysctl -w kernel.unprivileged_bpf_disabled=1

Quelle: Tr3e wang von SecCoder Security Lab

Container-Flucht mit Heap-Überlauf im Linux-Kernel

CVE-2022-0185 ist ein Heap-Overflow-Bug, der es einem Angreifer mit Zugriff auf einen unprivilegierten Benutzer ermöglicht, seine Privilegien zu Root zu eskalieren. Dazu muss der Angreifer über eine bestimmte Linux-Fähigkeit, CAP_SYS_ADMIN, verfügen. Es ist wichtig zu beachten, dass bei der Verwendung von Docker (oder anderen CRIs) in einem Kubernetes-Cluster der seccomp-Filter standardmäßig deaktiviert wird, so dass diese Sicherheitslücke in diesen Fällen ausgenutzt werden könnte.

Ursache - Der Fehler wird durch einen Integer-Unterlauf verursacht, der in fs/fs_context.c:legacy_parse_paramverursacht, was zu einer Fehlberechnung der maximalen Länge führt. Dies führt zu einem Integer-Unterlauf in der Komponente "File System Context". 

Ein Unterlauf tritt auf, wenn eine Subtraktionsoperation eine ganze Zahl ohne Vorzeichen auf einen Wert unter Null reduziert. Da Ganzzahlen ohne Vorzeichen keine negativen Zahlen darstellen können, umschließt die resultierende Berechnung stattdessen den Maximalwert der Ganzzahl. Wenn dieser Unterlauf innerhalb der Funktion legacy_parse_param auftritt, schlägt eine Größenprüfung fehl, und der Angreifer kann über die Grenzen des zugewiesenen 4kb großen Speichers im Kernelbereich hinaus schreiben. Durch dieses "ungebundene Schreiben" kann der Angreifer Werte im Kernel-Speicher ändern und zum Beispiel jedem anderen Prozess, der auf demselben Knoten läuft, Zugriff auf sich selbst geben.

Der Befehl "capsh -print" kann im Kontext des aktuellen Benutzers verwendet werden, um aktivierte Fähigkeiten aufzulisten. Die Ausnutzung beruht auf der CAP_SYS_ADMIN-Fähigkeit; die Berechtigung muss jedoch nur im aktuellen Namespace erteilt werden. Ein unprivilegierter Benutzer kann unshare (CLONE_NEWNS | CLONE_NEWUSER) verwenden, um einen Namespace mit der CAP_SYS_ADMIN-Berechtigung zu betreten und dann mit der Ausnutzung fortzufahren, um das System zu rooten. Die Verwendung von seccomp verhindert jedoch, dass der Angreifer mit dieser Fähigkeit in den Namespace gelangt.

Die Schwachstelle wurde in Kernel 5.1 eingeführt und in 5.16.2 behoben. Der Exploit-Code ist bereits online aufgetaucht. Hier ist der Originalbericht mit weiteren technischen Details zu den Ergebnissen. 

Wenn Sie den neuesten Kernel Ihrer Linux-Distribution verwenden, können Sie sich auf einfache Weise vor dieser Sicherheitslücke schützen. Wenn Ihre Linode einen von uns bereitgestellten Kernel bootet, können Sie auch überprüfen, ob das Konfigurationsprofil Ihrer Linode so eingestellt ist, dass der neueste Kernel gebootet wird, und dann Ihre Linode neu starten. Wenn Sie nicht in der Lage sind, sofort auf einen gepatchten Kernel zu aktualisieren, können Sie diese Abhilfemaßnahmen anwenden:

  • Minimieren Sie die Verwendung von privilegierten Containern, die Zugriff auf die CAP_SYS_ADMIN-Fähigkeit haben. 
  • Bei unprivilegierten Containern wird das Risiko durch einen seccomp-Filter verringert, der den unshare-Aufruf blockiert.
  • Verhindern Sie die Ausnutzung von unprivilegierten Containern, indem Sie die Fähigkeit des Benutzers deaktivieren, Benutzernamensräume auf Host-Ebene zu verwenden. Das folgende Beispiel wendet eine temporäre Entschärfung an, bis Ihr Linode neu gebootet wird. Stellen Sie sicher, dass Sie diese Einstellung in eine sysctl-Konfigurationsdatei schreiben und Ihre Linode sicher booten, um die Abschwächung beizubehalten.
# sysctl -w kernel.unprivileged_userns_clone=0

PwnKit - Lokale Privilegieneskalationsschwachstelle in Polkit

Polkit ist eine Komponente zur Kontrolle systemweiter Privilegien in Unix-ähnlichen Betriebssystemen. Es bietet eine systematische Methodik für nicht privilegierte Prozesse, um mit privilegierten Prozessen zu kommunizieren. Außerdem kann jemand Polkit verwenden, um mit dem Befehl pkexec (normalerweise mit root) Befehle mit erhöhten Rechten auszuführen. 

CVE-2021-4034 ist eine Sicherheitslücke im Speicher von pkexec von polkit, einem SUID-Root-Programm, das standardmäßig auf den meisten großen Linux-Distributionen installiert ist. Bei erfolgreicher Ausnutzung kann jeder unprivilegierte Benutzer in der Standardkonfiguration leicht Root-Rechte erlangen.

Ursache - Das Programm pkexec überprüft die Anzahl der übergebenen Argumente nicht richtig, wodurch jemand beliebigen Code als privilegierter Benutzer ausführen kann. 

Alle Polkit-Versionen ab 2009 sind verwundbar und ausnutzbar, auch wenn der Polkit-Daemon selbst nicht läuft.

Wenn Sie den neuesten Kernel Ihrer Linux-Distribution verwenden, können Sie sich auf einfache Weise vor dieser Sicherheitslücke schützen. Wenn Ihre Linode einen von uns bereitgestellten Kernel bootet, können Sie überprüfen, ob das Konfigurationsprofil Ihrer Linode so eingestellt ist, dass der neueste Kernel gebootet wird, und dann Ihre Linode neu starten. Wenn Sie nicht in der Lage sind, sofort auf einen gepatchten Kernel zu aktualisieren, können Sie das Problem vorübergehend entschärfen, indem Sie das SUID-Bit aus pkexec entfernen:

# chmod 0755 /usr/bin/pkexec

Kommentare

Kommentar abgeben

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