Analyse des lokalen Privilege-Escalation-Exploits PwnKit
Kyle Suero
29. Januar 2022
0 Min. LesezeitWas haben Linux-Sicherheitslücken und Naturkatastrophen gemeinsam? Etwas scheinbar Schlummerndes kann plötzlich zum Leben erwachen und Aktivitäten unter der Oberfläche offenlegen. Vor einigen Tagen veröffentlichte ein Sicherheitsforscher eine schwerwiegende Sicherheitslücke namens PwnKit, die die meisten großen Linux-Distributionen betrifft. Das Beunruhigende daran? Sie besteht bereits seit Mai 2009.
Polkit ist eine Komponente zur Verwaltung von Berechtigungen in Unix-ähnlichen Betriebssystemen und standardmäßig in den meisten großen Linux-Distributionen enthalten. Der mit Polkit bereitgestellte Befehl pkexec dient dazu, Befehle mit erhöhten Berechtigungen auszuführen, und wird als das sudo von systemd bezeichnet.
Die Sicherheitslücke in Polkit ist in diesem Fall keine schlummernde Bedrohung mehr. Diese weit verbreitete Komponente in Linux-basierten Betriebssystemen weist seit ihrer Entstehung im Jahr 2009 diese anhaltende Sicherheitslücke auf. Der Mechanismus zur Richtlinienkontrolle wurde zuerst im Betriebssystem Fedora eingesetzt und hat sich seitdem in verschiedenen Betriebssystemen verbreitet.
Die Sicherheitslücke ermöglicht es einem Angreifer, der als lokaler Benutzer ohne Berechtigungen agiert, durch einen Pufferüberlauf Speicher zu beschädigen. Wie das Qualys-Team gezeigt hat, lässt sich dieser Überlauf anschließend ausnutzen, um vollständige Root-Berechtigungen zu erlangen. 2013 meldete Ryan Mallon diese Sicherheitslücke und reichte einen Patch bei den Verantwortlichen ein. Mallon konnte keinen Weg finden, die Sicherheitslücke auszunutzen, und der Patch wurde nie angewendet.
Die Ursache dieses Fehlers liegt in der Verarbeitung von Kommandozeilenargumenten. In C-Programmen unter Linux ist das erste Argument (argv[0]) in der Regel der Name der ausführbaren Datei selbst. Es ist jedoch möglich, durch Aufruf der Funktion execve eine leere Liste ohne den Namen der ausführbaren Datei anzugeben. Wenn der Code in solchen Fällen davon ausgeht, dass argv[0] immer vorhanden ist, kann dies zu Sicherheitslücken durch Speicherbeschädigung führen. Dieses grundlegende Problem bei der Argumentverarbeitung tritt auch in anderen Binärdateien auf. pkexec ist jedoch ein Sonderfall, da es SUID ist und über besondere Dateiberechtigungen verfügt, die es im Namen des ursprünglichen Dateieigentümers statt des Benutzers ausführen lassen, der den Befehl gestartet hat.
Wir gehen hier nicht auf alle Details ein – diese sind in der ursprünglichen Offenlegung ausführlich dokumentiert. Wenn der Befehl pkexec ohne Argumente aufgerufen wird, ist die Argumentliste leer. Dadurch wird der Speicher beschädigt, sodass Angreifer vollständige Root-Berechtigungen auf dem Zielhost erlangen können.
Aktualisieren Sie Ihr System, um sich vor PwnKit zu schützen
Exploits für PwnKit sind äußerst einfach und bereits in freier Wildbahn aufgetaucht. Glücklicherweise wurden sehr schnell Patches bereitgestellt. Installieren Sie daher unbedingt sofort alle Betriebssystem-Updates!
Wenn Sie keine Betriebssystem-Updates installieren können, besteht eine geeignete Übergangslösung darin, das SUID-Bit von pkexec manuell mit dem Befehl chmod zu entfernen:
Dieser Exploit erinnert daran, dass schwerwiegende Sicherheitslücken sehr lange unentdeckt bleiben können – selbst in weit verbreiteten Open-Source-Anwendungen, deren Quellcode über einen langen Zeitraum von vielen Menschen geprüft wurde.
Regelmäßige Sicherheitsupdates sind entscheidend, um Sicherheitsbedrohungen einzudämmen. Wenn Sie Container zum Bereitstellen von Software verwenden, sollten Sie aktualisierte Images einführen, die diese Betriebssystem-Patches enthalten. Mit Snyk Container können Sie Sicherheitslücken wie PwnKit in Ihren Containern ganz einfach finden und beheben. Snyk verweist Sie auf aktualisierte Basis-Images, die das Problem beheben, oder auf eine Korrektur bzw. einen Patch, den Sie selbst hinzufügen können.
Container-Sicherheit mit Fokus auf Entwickler
Snyk findet und behebt automatisch Schwachstellen in Container-Images und Kubernetes-Workloads.
Betroffene Betriebssysteme
RedHat
Red Hat Enterprise Linux 6
Red Hat Enterprise Linux 7
Red Hat Enterprise Linux 8
Red Hat Virtualization 4
Ubuntu:
Ubuntu 21.10
Ubuntu 20.04
Ubuntu 18.04
Ubuntu 16.04
Ubuntu 14.04
SUSE:
HPE Helion Openstack 8
SUSE CaaS Platform 4.0
SUSE Enterprise Storage 6
SUSE Enterprise Storage 7
SUSE Linux Enterprise High Performance Computing 15
SUSE Linux Enterprise Micro 5
SUSE Linux Enterprise Module for Basesystem 15
SUSE Linux Enterprise Server 12
SUSE Linux Enterprise Server 15
SUSE Linux Enterprise Server for SAP Applications 12
SUSE Linux Enterprise Server for SAP Applications 15
SUSE Linux Enterprise Software Development Kit 12
SUSE Manager Proxy 4
SUSE OpenStack Cloud 8
SUSE OpenStack Cloud 9
SUSE OpenStack Cloud Crowbar 8
SUSE OpenStack Cloud Crowbar 9
openSUSE Leap 15
Hinweis: SUSE Linux Enterprise 11 ist nicht betroffen, da es die ältere PolicyKit-1-Generation verwendet.



