von Bhabesh Raj Rai, Security Research Department
Am 25. Januar 2022 veröffentlichte Qualys die Details zu einer Schwachstelle zur Speicher-Korrumpierung (CVE-2021-4034) mit dem Namen PwnKit im Polkit-Tool pkexec, das standardmäßig auf allen wichtigen Linux-Distributionen installiert ist. Bei PwnKit handelt es sich um eine Schwachstelle, die eine lokale Privilegien-Erweiterung (LPE: Local Privilege Escalation) ermöglicht, sodass nicht-privilegierte Benutzer selbst in der Standardkonfiguration Root-Rechte für das betroffene System erlangen können.
pkexec ist eine SUID-Binärdatei, die es dem Benutzer ermöglicht, Befehle als ein anderer Benutzer auszuführen. Ist kein Benutzername angegeben, wird das Programm als Root-Benutzer in einer kleinen und sicheren Umgebung ausgeführt. So lässt es sich vermeiden, dass Code über LD_LIBRARY_PATH oder ähnliche Mechanismen eingeschleust wird.
Administratoren können pkexec als Alternative zu sudo verwenden, jedoch mit granularen Kontrollmechanismen, da für jedes Programm eine Richtlinie definiert wird. Sie werden Ähnlichkeiten mit einem Fall feststellen, der sudo betraf. Anfang 2021 wurde eine LPE-Schwachstelle zur Speicher-Korrumpierung (CVE-2021-3156) entdeckt, die sudo fast ein Jahrzehnt lang beschäftigt hat.
Obwohl Qualys den Exploit nicht öffentlich bekannt gab, lieferte das Unternehmen in seiner Veröffentlichung genügend technische Details, um diese Exploits schnell zu erstellen. Mehrere PoCs wie [1] und [2] sind bereits im Internet verfügbar und können von jedermann genutzt werden.
Logdaten-Quellen – die Anforderungen
- Linux
- Auditd
- Sysmon für Linux
Erkennung eines Exploits mit LogPoint
Wenn Sie auditd nicht so konfiguriert haben, dass es Linux-Logdaten an LogPoint weiterleitet, können Sie einen Missbrauch mit der Suche nach PwnKit-Artefakten in /var/log/auth.log erkennen. Die Liste LINUX_SERVERS enthält die IP-Adressen aller Linux-Systeme, die Logdaten an LogPoint weiterleiten.
device_ip IN LINUX_SERVERS
| search ("The value for the SHELL variable was not found the /etc/shells file" OR "contains suspicious content")
Administratoren sollten jedoch bedenken, dass PwnKit ausgenutzt werden kann, ohne Spuren in /var/log/auth.log zu hinterlassen.
Um den blinden Fleck zu beseitigen, können Administratoren auditd verwenden, sofern es so konfiguriert wurde, dass es pkexec-Aufrufe überwacht. Zunächst müssen Sie nach auditd-Events suchen, die den Wert „(null)“ als Proctitle haben.
device_ip IN LINUX_SERVERS | search 'proctitle="(null)"'
Als nächstes sollten Sie nach Aufrufen von pkexec suchen. Sicherheitsverantwortliche benötigen diese Indikatoren, um das System weiter untersuchen zu können und festzustellen, ob es mit PwnKit kompromittiert wurde.
norm_id=Unix "process"=audit command="pkexec"
| chart count() by log_ts, host, key, path, command
Bereits im Oktober 2021 kündigte Mark Russinovich, CTO von Azure, die Veröffentlichung von Sysmon für Linux an. Administratoren können Anleitungen wie [1] und [2] verwenden, um Sysmon für Linux in ihrem Unternehmen zu testen und bereitzustellen. LogPoint hat Unix v5.2.0 veröffentlicht, das Sysmon für Linux unterstützt. Administratoren sollten beachten, dass Sysmon für Linux die gleiche Taxonomie wie das Windows-Pendant hat.
Die generische Methode zur LPE-Erkennung funktioniert auch für die Erkennung von PwnKit. Administratoren sollten nach der Erzeugung von privilegierten Prozessen suchen, die von einem nicht-privilegierten Prozess gestartet werden – mit der offensichtlichen Ausnahme von sudo. PoCs können – nach dem Exploit – entweder Befehle direkt als Befehlszeilenargument oder in einer interaktiven Shell-Session ausführen. Der folgende Screenshot zeigt beide Szenarien.
[norm_id=UnixSysmon label="Process" label=Create -user=root -image="/usr/bin/sudo"]
as s1 followed by
[norm_id=UnixSysmon label="Process" label=Create user=root]
as s2 within 3 second on s1.host = s2.host and s1.process_guid=s2.parent_process_guid
| rename s1.host as host, s1.user as user, s2.user as target_user, s1.path as path, s1.image as image,
s1.command as command, s2.image as target_image, s2.command as target_command
| chart count() by host, user, target_user, path, image, command, target_image, target_command
Die Suche nach einer generischen, lokalen Privilege-Escalation
Einige PoCs können als Einzeiler über einen einfachen curl-Befehl ausgeführt werden. Sie können verdächtige Downloads von GitHub mithilfe der Events für die Prozesserstellung überwachen.
norm_id=UnixSysmon label="Process" label=Create
image IN ["/usr/bin/curl", "/usr/bin/wget"] command="*raw.githubusercontent.com*"
Untersuchung nach einer Kompromittierung
Um Aktivitäten nach einer Kompromittierung aufzudecken, sind folgende Untersuchungsschritte notwendig:
- Das Anlegen neuer Benutzer für die Persistenz
- Verdächtige Ausführung von curl, wget, usw., um Payloads herunterzuladen
- Installation von Cron-Jobs für die Persistenz
- Installation von SSH-Backdoors für die Persistenz
- Installation von Coin-Minern
Das SOAR-Playbook von LogPoint für die PwnKit-Untersuchung
Nach der Ausführung des Playbooks in LogPoint SOAR können Sie die von den Komponenten des Playbooks erstellten Fälle in der Investigation-Timeline ansehen, um sich einen Überblick über die Untersuchungsergebnisse zu verschaffen.
Die Investigation-Timeline in LogPoint SOAR sammelt die Ergebnisse der Untersuchung
Abhilfemaßnahmen
Abschließend möchten wir Administratoren daran erinnern, ihre Linux-Systeme aufgrund der Schwere der Schwachstelle und der Veröffentlichung mehrerer POCs zu patchen. Administratoren können auch – als vorübergehende Abhilfemaßnahme – das SUID-Bit aus pkexec entfernen, falls für ihre Linux-Distribution noch keine Patches herausgegeben wurden. Die Sicherheitsverantwortlichen in den Unternehmen sollten davon ausgehen, dass Bedrohungsakteure PwnKit nutzen werden, nachdem sie in ihre Systeme eingedrungen sind.