SicherheitsanfÀlligkeiten in AppArmor, die root-Zugriff im System ermöglichen

Das Unternehmen Qualys hat 9 Schwachstellen im AppArmor-Managementsystem zur Zugriffskontrolle identifiziert, von denen die gefĂ€hrlichsten es lokal nicht privilegierten Benutzern ermöglichen, root-Rechte im System zu erlangen, aus isolierten Containern auszubrechen und die ĂŒber AppArmor festgelegten EinschrĂ€nkungen zu umgehen. Die Schwachstellen haben den Codenamen CrackArmor erhalten. CVE-IDs wurden noch nicht zugewiesen. Erfolgreiche Beispiele fĂŒr Privilege Escalation wurden in Ubuntu 24.04 und Debian 13 demonstriert.

Die Probleme bestehen im LSM-Modul AppArmor seit Kernel 4.11 von Linux, das 2017 veröffentlicht wurde, und treten in Distributionen auf, die AppArmor nutzen, wie Ubuntu, Debian, openSUSE und SUSE (seit openSUSE/SUSE 16 ist standardmĂ€ĂŸig SELinux aktiv, aber AppArmor bleibt optional). Patches zur Behebung der Schwachstellen wurden an die Entwickler des Linux-Kernels ĂŒbergeben und werden den Benutzern in den kommenden Tagen im Rahmen der Updates 6.18.18, 6.19.8, 6.12.77, 6.6.130, 6.1.167, 5.15.203 und 5.10.253 angeboten. Die Korrektur ist ebenfalls in den heutigen Paketupdates fĂŒr den Kernel in Ubuntu enthalten. Gleichzeitig wurden in Ubuntu Updates fĂŒr die Pakete sudo, sudo-ldap und util-linux (einschließlich des Dienstprogramms su) veröffentlicht, in denen MĂ€ngel behoben wurden, die es ermöglichten, die Schwachstelle in AppArmor auszunutzen. In Debian befindet sich das Update in der Vorbereitung.

Die Probleme werden durch eine grundlegende Schwachstelle in AppArmor der Klasse „verwirrter Stellvertreter“ (confused-deputy) verursacht, die nicht privilegierten Benutzern das Hochladen, Ersetzen und Löschen beliebiger AppArmor-Profile ermöglicht. Diese Schwachstelle kann direkt genutzt werden, um den Schutz von Programmen und Diensten vor lokalen und Remote-Angriffen zu deaktivieren (durch das Schreiben in Pseudodateien /sys/kernel/security/apparmor/.load, .replace und .remove, um beispielsweise die EinschrĂ€nkungen in cupsd und rsyslogd aufzuheben), einen Dienstverweigerungsangriff hervorzurufen (durch die Anwendung verbotener Profile) und die EinschrĂ€nkungen von NamensrĂ€umen zu umgehen (durch das Laden eines neuen AppArmor-Profils „userns“, beispielsweise fĂŒr /usr/bin/time, das die Erstellung unbegrenzter Benutzer-NamensrĂ€ume ermöglicht).

Die Möglichkeit, AppArmor-Profile zu Ă€ndern, ermöglicht es außerdem, Root-Rechte zu erlangen, indem neue Profile, die den Zugriff auf bestimmte Systemaufrufe blockieren, an privilegierte Programme wie su und sudo gebunden werden. Insbesondere können Root-Rechte erlangt werden, indem der setuid-Vorgang (CAP_SETUID) fĂŒr das Programm sudo blockiert und die Umgebungsvariable MAIL_CONFIG manipuliert wird, um das Verzeichnis mit den Einstellungen fĂŒr die E-Mail zu Ă€ndern. Server Postfix.

Das Konzept der Methode besteht darin, dass das Programm sudo bei Problemen eine E-Mail an den Administrator sendet, indem es /usr/sbin/sendmail aufruft. Indem man die PrivilegienrĂŒckgabe blockiert, kann dieser Prozess mit Root-Rechten gestartet werden, und wenn man vor dem Start von sudo die Umgebungsvariable MAIL_CONFIG festlegt, können andere Einstellungen an das Programm sendmail ĂŒbergeben werden, einschließlich die Angabe eines eigenen postdrop-Handlers, der beim Versand von E-Mails ausgefĂŒhrt wird. $ mkdir /tmp/postfix $ cat > /tmp/postfix/main.cf < /tmp/postfix/postdrop <> /tmp/postfix/pwned EOF $ chmod -R 0755 /tmp/postfix $ apparmor_parser -K -o sudo.pf < /sys/kernel/security/apparmor/.replace Passwort: $ env -i MAIL_CONFIG=/tmp/postfix /usr/bin/sudo whatever sudo: PERM_SUDOERS: setresuid(-1, 1, -1): Operation nicht erlaubt sudo: kann /etc/sudoers nicht öffnen: Operation nicht erlaubt sudo: setresuid() [0, 0, 0] -> [1001, -1, -1]: Operation nicht erlaubt sudo: Fehler beim Initialisieren des Audit-Plugins sudoers_audit $ cat /tmp/postfix/pwned uid=0(root) gid=1001(jane) groups=1001(jane),100(users)

Andere Methoden zur Erhöhung von Privilegien beziehen sich auf Schwachstellen im AppArmor-Code, der auf der Ebene des Linux-Kernels arbeitet. Es wird gezeigt, wie man Root-Rechte erlangen kann durch Schwachstellen, die durch die doppelte AusfĂŒhrung der Funktion free() und den Zugriff auf bereits freigegebenen Speicher (use-after-free) im Code zum Laden und Ersetzen von AppArmor-Profilen ausgelöst werden. Zum Beispiel speichert AppArmor das Profil in der Struktur aa_loaddata, deren Speicher im slab-Cache kmalloc-192 reserviert wird; dabei ist es aufgrund eines Rennens nicht ausgeschlossen, auf den Speicher zuzugreifen, den die Struktur nach ihrer Freigabe belegte. Dieses Problem kann genutzt werden, um die Kontrolle ĂŒber den freigegebenen Speicher zu erlangen und die freigegebene Seite des Speichers neu zuzuweisen, um den Inhalt der Datei /etc/passwd zu mappen und die Passwortzeile fĂŒr root zu ĂŒberschreiben.

Quelle: opennet.ru

ZuverlĂ€ssiges Hosting fĂŒr Websites mit DDoS-Schutz kaufen, VPS VDS Server đŸ”„ ZuverlĂ€ssiges Hosting fĂŒr Websites mit DDoS-Schutz kaufen, VPS VDS Server - ProHoster