OpenBSD-Schwachstellen zur Rechteausweitung und Authentifizierungsumgehung in smtpd, ldapd und radiusd

Qualys-Unternehmen enthüllt vier Schwachstellen in OpenBSD, von denen einer Ihnen die Fernverbindung ohne Authentifizierung zu einigen Netzwerkdiensten ermöglicht, und die anderen drei erhöhen Ihre Privilegien im System. Der Qualys-Bericht erwähnte die schnelle Reaktion der OpenBSD-Entwickler – alle Probleme waren behoben eliminiert в OpenBSD6.5 и OpenBSD6.6 innerhalb von 40 Stunden nach privater Benachrichtigung.

Die aus der Ferne ausnutzbare Sicherheitslücke wird durch einen Fehler beim Aufruf des Authentifizierungshandlers in der libc-Bibliothek verursacht, der aufruft
Programm /usr/libexec/auth/login_style übergibt Argumente in der Befehlszeile. Auch beim Aufruf von login_style über den optionalen Parameter „-s service“ ist die Übergabe des Protokollnamens möglich. Wenn Sie am Anfang eines Benutzernamens ein „-“-Zeichen verwenden, wird dieser Name beim Ausführen von login_style als Option behandelt. Wenn Sie bei der Authentifizierung „-schallenge“ oder „-schallenge:passwd“ als Benutzernamen angeben, wird login_style die Anfrage daher als Anfrage zur Verwendung des Handlers wahrnehmen S/Schlüssel.

Das Problem besteht darin, dass das S/Key-Protokoll in login_style nur formal unterstützt wird, tatsächlich aber mit der Ausgabe eines Zeichens der erfolgreichen Authentifizierung ignoriert wird. So kann ein Angreifer, indem er sich als Benutzer „-challenge“ ausgibt, die Authentifizierung umgehen und sich Zugang verschaffen, ohne ein Passwort oder Schlüssel anzugeben. Alle Netzwerkdienste, die standardmäßige libc-Aufrufe zur Authentifizierung verwenden, sind potenziell von dem Problem betroffen. Beispielsweise wird die Möglichkeit, die Authentifizierung zu umgehen, in smtpd (AUTH PLAIN), ldapd und radiusd unterstützt.

Die Schwachstelle taucht in sshd nicht auf, da es über einen zusätzlichen Schutz verfügt, der die Anwesenheit des Benutzers im System überprüft. Allerdings kann sshd verwendet werden, um die Verwundbarkeit eines Systems zu testen – wenn auf den Benutzernamen „-sresponse:passwd“ zugegriffen wird, hängt die Verbindung, da sshd darauf wartet, dass login_passwd die Challenge-Parameter zurückgibt, und login_passwd darauf, dass die fehlenden Parameter zurückgegeben werden gesendet werden (Name „-sresponse“ wird als Option behandelt). Ein lokaler Angreifer könnte möglicherweise versuchen, die Authentifizierung im su-Dienstprogramm zu umgehen, aber die Übergabe des Namens „-sresponse“ führt zum Absturz des Prozesses, indem beim Ausführen der Funktion getpwnam_r(“-schallenge“, ...) ein Nullzeiger zurückgegeben wird.

Weitere Schwachstellen:

  • CVE-2019-19520 Eskalation lokaler Berechtigungen durch Manipulation des Dienstprogramms xlock, das mit dem Flag „sgid“ bereitgestellt wird und die Gruppe in „auth“ ändert. Im xlock-Code ist die Neudefinition von Pfaden zu Bibliotheken nur dann verboten, wenn die Benutzerkennung (setuid) geändert wird, was es dem Angreifer ermöglicht, die Umgebungsvariable „LIBGL_DRIVERS_PATH“ zu ändern und das Laden seiner gemeinsam genutzten Bibliothek zu organisieren, deren Code ausgeführt wird nachdem die Privilegien für die Gruppe „auth“ erhöht wurden.
  • CVE-2019-19522 – Ermöglicht einem lokalen Benutzer, der Mitglied der Gruppe „auth“ ist, Code als Root auszuführen, wenn die S/Key- oder YubiKey-Authentifizierung auf dem System aktiviert ist (standardmäßig nicht aktiv). Wenn Sie der Gruppe „auth“ beitreten, auf die Sie durch Ausnutzung der oben genannten Sicherheitslücke in xlock zugreifen können, können Sie Dateien in die Verzeichnisse /etc/skey und /var/db/yubikey schreiben. Beispielsweise könnte ein Angreifer eine neue Datei /etc/skey/root hinzufügen, um Einmalschlüssel für die Authentifizierung als Root-Benutzer über S/Key zu generieren.
  • CVE-2019-19519 – die Möglichkeit, die Ressourcengrenzen durch Manipulation des su-Dienstprogramms zu erhöhen. Bei Angabe der Option „-L“, die bei erfolglosen Authentifizierungsversuchen eine zyklische Wiederholung der Authentifizierungsversuche bewirkt, wird die Benutzerklasse nur einmal gesetzt und bei nachfolgenden Versuchen nicht zurückgesetzt. Ein Angreifer kann „su -l -L“ beim ersten Versuch ausführen, den Login einer anderen Person mit einer anderen Kontoklasse einzugeben, beim zweiten Versuch kann er sich jedoch erfolgreich als er selbst authentifizieren. In dieser Situation unterliegt der Benutzer Beschränkungen, die auf der beim ersten Versuch angegebenen Benutzerklasse basieren (z. B. die maximale Anzahl von Prozessen oder die Speichergröße für einen Prozess). Die Methode funktioniert nur für das Ausleihen von Limits von unprivilegierten Benutzern, da der Root-Benutzer in der Wheel-Gruppe sein muss.

Darüber hinaus kann darauf hingewiesen werden Implementierung in OpenBSD eine neue Methode zur Überprüfung der Gültigkeit von Systemaufrufen, die die Ausnutzung von Schwachstellen weiter erschwert. Die Methode erlaubt die Ausführung von Systemaufrufen nur, wenn auf sie aus zuvor registrierten Speicherbereichen zugegriffen wird. Zum Markieren von Speicherbereichen vorgeschlagen neuer Systemaufruf msyscall().

Source: opennet.ru