VFS-Sicherheitslücke im Linux-Kernel, die eine Rechteausweitung ermöglicht

In der vom Linux-Kernel bereitgestellten Dateisystem-Kontext-API wurde eine Schwachstelle (CVE-2022-0185) identifiziert, die es einem lokalen Benutzer ermöglichen könnte, Root-Rechte auf dem System zu erlangen. Der Forscher, der das Problem identifiziert hat, hat eine Demo eines Exploits veröffentlicht, der es ermöglicht, Code unter Ubuntu 20.04 in der Standardkonfiguration als Root auszuführen. Der Exploit-Code soll innerhalb einer Woche auf GitHub veröffentlicht werden, nachdem die Distributionen ein Update veröffentlichen, das die Schwachstelle behebt.

Die Sicherheitslücke besteht in der Funktion „legacy_parse_param()“ in VFS und wird durch eine fehlende ordnungsgemäße Validierung der maximalen Größe von Parametern verursacht, die auf Dateisystemen bereitgestellt werden, die die Dateisystem-Kontext-API nicht unterstützen. Wenn Sie einen zu großen Parameter übergeben, kann es zu einem Überlauf der Ganzzahlvariablen kommen, die zur Berechnung der Größe der zu schreibenden Daten verwendet wird. Der Code verfügt über eine Pufferüberlaufprüfung „if (len > PAGE_SIZE - 2 – size)“, die dies bewirkt Funktioniert nicht, wenn der Wert von size größer als 4094 ist, da es zu einem ganzzahligen Überlauf durch die Untergrenze kommt (ganzzahliger Unterlauf, wenn Sie 4096 - 2 - 4095 in vorzeichenlose Ganzzahlen umwandeln, erhalten Sie 2147483648).

Dieser Fehler ermöglicht es, beim Zugriff auf ein speziell entwickeltes FS-Image einen Pufferüberlauf zu verursachen und die Kerneldaten im Anschluss an den zugewiesenen Speicherbereich zu überschreiben. Um die Schwachstelle auszunutzen, sind CAP_SYS_ADMIN-Rechte erforderlich, d. h. Administratorberechtigung. Das Problem besteht darin, dass ein unprivilegierter Benutzer solche Berechtigungen in einem isolierten Container erhalten kann, wenn die Unterstützung für Benutzernamensräume im System aktiviert ist. Beispielsweise sind Benutzernamensräume unter Ubuntu und Fedora standardmäßig aktiviert, jedoch nicht unter Debian und RHEL (es sei denn, es werden Containerisolationsplattformen verwendet).

Das Problem tritt seit dem Linux 5.1-Kernel auf und wurde in den gestrigen Updates 5.16.2, 5.15.16, 5.10.93, 5.4.173 behoben. Für RHEL, Debian, Fedora und Ubuntu wurden bereits Updates für Schwachstellenpakete veröffentlicht. Der Fix ist noch nicht für Arch Linux, Gentoo, SUSE und openSUSE verfügbar. Als Sicherheitslösung für Systeme, die keine Containerisolation verwenden, können Sie den Wert von sysctl „user.max_user_namespaces“ auf 0 setzen: echo „user.max_user_namespaces=0“ > /etc/sysctl.d/userns.conf # sysctl -p / etc/sysctl.d/userns.conf

Source: opennet.ru

Kommentar hinzufügen