von Bhabesh Raj Rai, Associate Security Analytics Engineer

Am 26. Januar 2021 veröffentlichten die Qualys Research Labs eine Schwachstelle (CVE-2021-3156) in sudo mit der sich ein Heap-basierter Pufferüberlauf herbeiführen lässt und die es bei erfolgreicher Ausnutzung jedem lokalen Benutzer ermöglicht, seine Rechte auf Root-Rechte zu erweitern. Die Sicherheitslücke kann sowohl mit sudo-Berechtigung als auch ohne sudo-Berechtigung ausgenutzt werden, um Root-Rechte zu erlangen.

Die Sicherheitslücke ist auf Fehler beim Parsen von Befehlszeilenparametern zurückzuführen. Ein Angreifer kann sie über „sudoedit -s“ und ein Befehlszeilenargument, das mit einem einzelnen Backslash endet, ausnutzen. Der Fehler wurde im Juli 2011 eingeführt und betrifft alle Legacy-Versionen von 1.8.2 bis 1.8.31p2 und alle stabilen Versionen von 1.9.0 bis 1.9.5p1 in ihrer Standardkonfiguration.

Das Qualys Research-Team konnte die Schwachstelle verifizieren und mehrere Exploit-Varianten für Ubuntu 20.04 (Sudo 1.8.31), Debian 10 (Sudo 1.8.27) und Fedora 33 (Sudo 1.9.2) entwickeln. Allerdings können auch andere Distributionen gefährdet sein, da sudo in nahezu allen wichtigen Unix- und Linux-Betriebssystemen verfügbar ist.

Besteht die Gefahr weiterhin?

Obwohl die Schwachstelle in nur 13 Tagen behoben wurde, haben viele Upstream-Builds den Patch noch nicht angewendet. Damit bleibt eine große Anzahl von Systemen anfällig. Erschwerend kommt hinzu, dass inzwischen mehrere PoCs auf Github verfügbar sind. Dies öffnet Bedrohungsakteuren Tür und Tor und ermöglicht eine einfache Ausnutzung.

Auch LogPoint-Produkte waren von der Privilege-Escalation-Schwachstelle in sudo betroffen. Am 29. Januar 2021 veröffentlichten wir LogPoint v6.9.2, um die Schwachstelle zu beheben. Wir empfehlen allen LogPoint-Nutzern – SOCs, Sicherheitsanalysten etc. – ein Upgrade auf die aktuelle Produktversion.

Exploit-Versuche in LogPoint erkennen

Sie können einen Exploit-Versuch der sudo-Schwachstelle sehr einfach über auditd-Logs erkennen. Ebensowie bei Sysmon benötigt „auditd“ geeignete Regeln, um relevante Artefakte zu erzeugen. Die auditd-Konfiguration von Florian Roth ist für diesen Zweck ausreichend.

Da Angreifer die Brute-Force-Methode einsetzen müssen, um diese Sicherheitslücke auszunutzen, werden die Auditd-Logs mit Events überflutet, die sich auf „sudoedit“ beziehen.

Die Erkennung ist mit jedem der drei von „auditd“ generierten Event-Typen möglich: SYSCALL, EXECV und ANOM_ABEND.

CVE-2021-3156 Sudo Privilege Escalation

Für die Erkennung auf Basis von EXECVE müssen Sie nur nach einer hohen Anzahl an EXECVE-Logs für „sudoedit“ mit „\“ und „-s“ als Befehlszeilenparameter suchen.

norm_id=Unix "process"=Audit event_type=EXECVE
argument_0="/usr/bin/sudoedit"
(argument_1="\" OR argument_2="\" OR argument_3="\" OR argument_4="\" OR argument_5="\")
(argument_1="-s" OR argument_2="-s" OR argument_3="-s" OR argument_4="-s" OR argument_5="-s")
| chart count() as cnt by host
| search cnt > 50

Die Erkennung auf Basis von SYSCALL ist ebenfalls einfach, da Sie nur nach einer hohen Anzahl anSYSCALL-Logs für den Befehl „sudoedit“ suchen müssen.

norm_id=Unix "process"=Audit
event_type=SYSCALL command=sudoedit path="/usr/bin/sudo"
| chart count() as cnt by host
| search cnt > 50

Wenn ein Exploit fehlschlägt, werden manchmal anormale Logfiles zur Prozessbeendigung erzeugt, die ebenfalls auf einen Exploit-Versuch hindeuten können.

norm_id=Unix "process"=Audit
label=Abnormal label="Process" label=Terminate
command="sudoedit" path="/usr/bin/sudo"
| chart count() as cnt by host
| search cnt > 50

Letztlich können Sie auch nach allen Aufrufen von „sudoedit“ mit einer ungewöhnlich langen Befehlszeile suchen. Dies kann ebenfalls auf den Versuch hinweisen, die Schwachstelle für den Heap-basiertenPufferüberlauf auszunutzen. Administratoren können den Schwellenwert für die Länge der Befehlszeile anpassen, um die Anzahl der Fehlalarme zu reduzieren.

norm_id=Unix "process"=Audit event_type=EXECVE
argument_0="/usr/bin/sudoedit"
| process eval("a1_len=len(argument_1)")
| process eval("a2_len=len(argument_2)")
| process eval("a3_len=len(argument_3)")
| process eval("a4_len=len(argument_4)")
| chart count() by host, a1_len, a2_len, a3_len, a4_len
| search (a1_len>100 OR a2_len > 100 OR a3_len>100 OR a4_len>100)

Aktualisieren Sie Ihre Systeme

Da Angreifer diese Schwachstelle auch in der Standardkonfiguration ausnutzen können, empfehlen wir Systemadministratoren, ihre Systeme so bald wie möglich zu patchen. Ist ein Patching nicht möglich oder der Patch für die eingesetzte Linux- bzw. Unix-Distribution noch nicht verfügbar, empfehlen wir, Erkennungsmechanismen zu nutzen, die auf etwaige Exploit-Versuche hindeuten.

Bedrohungsakteure können die sudo-Schwachstelle in Verbindung mit anderen Angriffsmethoden nutzen, um ein System vollständig zu kompromittieren. Wir raten Unternehmen, Incident Response einzuleiten, sobald ein Exploit-Versuch entdeckt wird.