Sicherheitsanfälligkeit im VFS-Kernel von Linux, die es ermöglicht, Privilegien zu erhöhen

Im API-Filesystem-Kontext, der vom Linux-Kernel bereitgestellt wird, wurde eine Schwachstelle (CVE-2022-0185) entdeckt, die es einem lokalen Benutzer ermöglicht, Root-Rechte im System zu erlangen. Der Forscher, der das Problem erkannt hat, veröffentlichte eine Demonstration eines Exploits, der es ermöglicht, Code mit Root-Rechten unter Ubuntu 20.04 in der Standardkonfiguration auszuführen. Der Exploit-Code soll innerhalb einer Woche auf GitHub veröffentlicht werden, nachdem die Distributionen ein Update zur Behebung der Schwachstelle bereitgestellt haben.

Die Schwachstelle besteht in der Funktion legacy_parse_param() in VFS und wird durch fehlende ordnungsgemäße Überprüfung der maximalen Größe von Parametern verursacht, die in Dateisystemen bereitgestellt werden, die den API-Filesystem-Kontext nicht unterstützen. Bei der Übergabe eines zu großen Parameters kann ein Überlauf einer Ganzzahl-Variablen auftreten, die zur Berechnung der Größe der zu schreibenden Daten verwendet wird – im Code gibt es eine Überprüfung des Bufferüberlaufs „if (len > PAGE_SIZE - 2 - size)“, die nicht greift, wenn der Wert von size größer als 4094 ist, aufgrund eines ganzzahligen Überlaufs (integer underflow), wenn 4096 - 2 - 4095 in unsigned int umgewandelt wird, ergibt sich 2147483648.

Der genannte Fehler ermöglicht es, bei Zugriff auf ein speziell gestaltetes FS-Image einen Bufferüberlauf auszulösen und die Kernel-Daten, die hinter dem zugewiesenen Speicherbereich liegen, zu überschreiben. Um die Schwachstelle auszunutzen, sind Rechte von CAP_SYS_ADMIN erforderlich, d.h. Administratorenrechte. Das Problem ist, dass ein nicht privilegierter Benutzer solche Berechtigungen in einem isolierten Container erlangen kann, wenn die Unterstützung für Benutzer-Namensräume (user namespaces) im System aktiviert ist. Zum Beispiel sind Benutzer-Namensräume standardmäßig in Ubuntu und Fedora aktiviert, aber nicht in Debian und RHEL (sofern keine Containerisierungsplattformen verwendet werden).

Das Problem tritt ab Kernel-Version 5.1 auf und wurde in den gestern veröffentlichten Updates 5.16.2, 5.15.16, 5.10.93, 5.4.173 behoben. Updates der Pakete zur Behebung der Schwachstelle wurden bereits für RHEL, Debian, Fedora, Ubuntu veröffentlicht. Der Fix ist derzeit noch nicht für Arch Linux, Gentoo, SUSE und openSUSE verfügbar. Als Workaround für Systeme, die keine Containerisolation verwenden, kann der sysctl-Wert „user.max_user_namespaces“ auf 0 gesetzt werden: echo „user.max_user_namespaces=0“ > /etc/sysctl.d/userns.conf # sysctl -p /etc/sysctl.d/userns.conf

Quelle: opennet.ru

60GB SSD 8Gb DDR4