Nach sechs Monaten Entwicklung wurde das Release von OpenSSH 8.9 vorgestellt, einer offenen Implementierung von Client und Server für die Arbeit mit den Protokollen SSH 2.0 und SFTP. In der neuen Version wurde in sshd eine Schwachstelle behoben, die potenziell einen Zugriff ohne Authentifizierung ermöglicht. Das Problem wurde durch einen Überlauf bei der Ganzzahlverarbeitung im Authentifizierungscode verursacht, eine Ausnutzung ist jedoch nur in Kombination mit anderen logischen Fehlern im Code möglich.
In der aktuellen Form ist die Schwachstelle nicht ausnutzbar, wenn der Modus zur Trennung von Rechten aktiviert ist, da ihre Manifestation durch einzelne Prüfungen im Code zur Überwachung der Trennung von Rechten blockiert wird. Der Modus zur Trennung von Rechten wurde 2002 standardmäßig mit OpenSSH 3.2.2 aktiviert und ist seit der Veröffentlichung von OpenSSH 7.5, die 2017 veröffentlicht wurde, verpflichtend. Darüber hinaus wird in den portablen Versionen von OpenSSH ab Version 6.5 (2014) die Schwachstelle durch die Kompilierung mit Aktivierung der Flags zum Schutz vor Ganzzahlüberläufen blockiert.
Weitere Änderungen:
- In der portablen Version von OpenSSH wurde die eingebaute Unterstützung für die Passwort-Hashing-Algorithmen unter Verwendung des MD5-Algorithmus aus sshd entfernt (für Rückgaben ist eine Bindung an externe Bibliotheken wie libxcrypt zulässig).
- In ssh, sshd, ssh-add und ssh-agent wurde ein Subsystem zur Beschränkung der Weiterleitung und Verwendung von Schlüsseln implementiert, die im ssh-agent hinzugefügt wurden. Das Subsystem ermöglicht es, Regeln zu definieren, die festlegen, wie und wo die Schlüssel im ssh-agent verwendet werden können. Zum Beispiel kann der folgende Befehl verwendet werden, um einen Schlüssel hinzuzufügen, der nur zur Authentifizierung verwendet werden kann, wenn sich ein beliebiger Benutzer mit dem Host scylla.example.org, der Benutzer perseus mit dem Host cetus.example.org und der Benutzer medea mit dem Host charybdis.example.org unter Umleitung über den Zwischenhost scylla.example.org verbindet: $ ssh-add -h "perseus@cetus.example.org" \ -h "scylla.example.org" \ -h "scylla.example.org>medea@charybdis.example.org" \ ~\/ssh\/id_ed25519
- In ssh und sshd wurde der hybride Algorithmus "sntrup761x25519-sha512@openssh.com" (ECDH/x25519 + NTRU Prime) standardmäßig zur Liste der KexAlgorithms hinzugefügt, die die Reihenfolge der Schlüsselvereinbarungsmethoden bestimmen. In der Version OpenSSH 8.9 wurde diese Methode der Aushandlung zwischen den Methoden ECDH und DH hinzugefügt, aber in der nächsten Veröffentlichung soll sie standardmäßig genutzt werden.
- In ssh-keygen, ssh und ssh-agent wurde die Handhabung von FIDO-Token-Schlüsseln, die zur Verifizierung von Geräten verwendet werden, einschließlich der Schlüssel für die biometrische Authentifizierung, verbessert.
- In ssh-keygen wurde der Befehl «ssh-keygen -Y match-principals» hinzugefügt, um Benutzernamen in einer Datei mit genehmigten Namen zu überprüfen.
- In ssh-add und ssh-agent wurde die Möglichkeit bereitgestellt, FIDO-Schlüssel, die durch einen PIN-Code geschützt sind, zum ssh-agent hinzuzufügen (der PIN-Anfrage wird im Moment der Authentifizierung angezeigt).
- In ssh-keygen ist die Auswahl des Hash-Algorithmus (sha512 oder sha256) während der Signaturerstellung erlaubt.
- In ssh und sshd wurde das direkte Lesen von Netzwerkdaten in den Puffer für eingehende Pakete verbessert, um das Zwischenspeichern im Stack zu umgehen. Analog wurde auch das direkte Einfügen der empfangenen Daten in den Kanalpuffer implementiert.
- In ssh wurde die Liste der unterstützten Parameter in der Direktive PubkeyAuthentication erweitert (yes|no|unbound|host-bound), um die Auswahl der verwendeten Protokollerweiterung zu ermöglichen.
In einer der nächsten Versionen ist geplant, das Tool scp standardmäßig auf die Verwendung von SFTP anstelle des veralteten SCP/RCP-Protokolls umzustellen. In SFTP werden vorhersehbarere Methoden zur Handhabung von Namen verwendet und es findet keine Verarbeitung von Glob-Mustern in Dateinamen über die Shell auf der anderen Host-Seite statt, was Sicherheitsprobleme schafft. Insbesondere beim Einsatz von SCP und RCP entscheidet der Server, welche Dateien und Verzeichnisse an den Client gesendet werden, während der Client nur die Richtigkeit der zurückgegebenen Objekt-Namen überprüft, was im Fall von unzureichenden Prüfungen auf der Client-Seite es ermöglicht, zu einem Server andere Dateinamen zu übertragen, die von den angeforderten abweichen. Das SFTP-Protokoll hat diese Probleme nicht, unterstützt jedoch nicht die Enthüllung spezieller Pfade wie «~/». Um diesen Unterschied zu beheben, wurde in der letzten Veröffentlichung von OpenSSH eine neue Protokoll-Erweiterung für den SFTP-Server vorgeschlagen, um die Pfade ~/ und ~user/ freizugeben.
Quelle: opennet.ru
