OpenSSH 9.2 mit Fehlerbehebung für die Sicherheitslücke vor der Authentifizierung veröffentlicht

Die Veröffentlichung von OpenSSH 9.2 wurde veröffentlicht, einer offenen Implementierung eines Clients und Servers für die Arbeit mit den Protokollen SSH 2.0 und SFTP. Die neue Version beseitigt eine Schwachstelle, die zu einer doppelten Speicherfreigabe in der Phase vor der Authentifizierung führt. Betroffen ist nur die Version OpenSSH 9.1; das Problem tritt in früheren Versionen nicht auf.

Um Bedingungen für die Manifestation der Schwachstelle zu schaffen, reicht es aus, das SSH-Client-Banner auf „SSH-2.0-FuTTYSH_9.1p1“ zu ändern, um die Flags „SSH_BUG_CURVE25519PAD“ und „SSH_OLD_DHGEX“ zu setzen, die von der SSH-Version abhängen Klient. Nach dem Setzen dieser Flags wird der Speicher für den Puffer „options.kex_algorithms“ zweimal freigegeben – beim Ausführen der Funktion do_ssh2_kex(), die compat_kex_proposal() aufruft, und beim Ausführen der Funktion do_authentication2(), die input_userauth_request() aufruft, mm_getpwnamallow( ), copy_set_server_options() entlang der Kette,assemble_algorithms() und kex_assemble_names().

Das Erstellen eines funktionierenden Exploits für die Schwachstelle gilt als unwahrscheinlich, da der Exploit-Prozess zu kompliziert ist – moderne Speicherzuweisungsbibliotheken bieten Schutz vor doppelter Speicherfreigabe und der Pre-Authentifizierungsprozess, bei dem der Fehler vorliegt, läuft isoliert mit reduzierten Berechtigungen Sandbox-Umgebung.

Neben der genannten Schwachstelle behebt das neue Release auch zwei weitere Sicherheitsprobleme:

  • Bei der Verarbeitung der Einstellung „PermitRemoteOpen“ ist ein Fehler aufgetreten, der dazu führte, dass das erste Argument ignoriert wurde, wenn es sich von den Werten „any“ und „none“ unterscheidet. Das Problem tritt in neueren Versionen als OpenSSH 8.7 auf und führt dazu, dass die Prüfung übersprungen wird, wenn nur eine Berechtigung angegeben ist.
  • Ein Angreifer, der den DNS-Server kontrolliert, der zum Auflösen von Namen verwendet wird, kann die Ersetzung von Sonderzeichen (z. B. „*“) in „known_hosts“-Dateien erreichen, wenn die Optionen „CanonicalizeHostname“ und „CanonicalizePermittedCNAMEs“ in der Konfiguration aktiviert sind und der System-Resolver die Richtigkeit dieser Zeichen nicht überprüft Antworten vom DNS-Server. Der Angriff gilt als unwahrscheinlich, da die zurückgegebenen Namen den durch CanonicalizePermittedCNAMEs angegebenen Bedingungen entsprechen müssen.

Weitere Änderungen:

  • Für ssh wurde eine Einstellung „EnableEscapeCommandline“ zu ssh_config hinzugefügt, um zu steuern, ob die clientseitige Verarbeitung der „~C“-Escape-Sequenz, die die Befehlszeile bereitstellt, aktiviert ist. Standardmäßig ist die „~C“-Verarbeitung jetzt deaktiviert, um eine strengere Sandbox-Isolation zu verwenden, wodurch möglicherweise Systeme beschädigt werden, die „~C“ zur Portweiterleitung zur Laufzeit verwenden.
  • Die ChannelTimeout-Direktive wurde zu sshd_config für sshd hinzugefügt, um das Kanalinaktivitäts-Timeout festzulegen (Kanäle, in denen für die in der Direktive angegebene Zeit kein Datenverkehr aufgezeichnet wird, werden automatisch geschlossen). Für Sitzung, X11, Agent und Traffic-Umleitung können unterschiedliche Timeouts eingestellt werden.
  • Die UnusedConnectionTimeout-Direktive wurde zu sshd_config für sshd hinzugefügt, sodass Sie ein Timeout für die Beendigung von Client-Verbindungen festlegen können, die eine bestimmte Zeit lang keine aktiven Kanäle hatten.
  • Die Option „-V“ wurde zu sshd hinzugefügt, um die Version anzuzeigen, ähnlich der ähnlichen Option im SSH-Client.
  • Die Zeile „Host“ wurde zur Ausgabe von „ssh -G“ hinzugefügt, die den Wert des Hostnamen-Arguments widerspiegelt.
  • Die Option „-X“ wurde zu scp und sftp hinzugefügt, um SFTP-Protokollparameter wie die Größe des Kopierpuffers und die Anzahl ausstehender Anforderungen zu steuern.
  • ssh-keyscan ermöglicht das Scannen vollständiger CIDR-Adressbereiche, zum Beispiel „ssh-keyscan 192.168.0.0/24“.

Source: opennet.ru

Kommentar hinzufügen