OpenSSH 9.8 wurde veröffentlicht, eine Open-Source-Implementierung des Clients und Servers fĂŒr die Protokolle SSH 2.0 und SFTP. Neben der Beseitigung einer separat angekĂŒndigten kritischen SicherheitsanfĂ€lligkeit (CVE-2024-6387), die die AusfĂŒhrung von Code mit Root-Rechten vor der Authentifizierung ermöglicht, wurden in der neuen Version eine weitere weniger kritische Schwachstelle behoben und mehrere wesentliche Ănderungen zur Verbesserung der Sicherheit vorgeschlagen.
Die zweite Schwachstelle erlaubt es, den in Version OpenSSH 9.5 implementierten Schutz gegen Seitenkanalangriffe zu umgehen, die Verzögerungen zwischen TastenschlĂ€gen analysieren, um Eingaben zu rekonstruieren. Die Schwachstelle ermöglicht es, Pakete, die HintergrundaktivitĂ€ten durch das Simulieren von fiktiven TastenschlĂ€gen erzeugen, von Paketen zu unterscheiden, die beim DrĂŒcken echter Tasten gesendet werden, was die EffektivitĂ€t des Mechanismus zur Verheimlichung der Eigenschaften interaktiver Eingaben im SSH-Verkehr verringert. Informationen ĂŒber Tasteneingaben ermöglichen Angriffe, die Eingaben basierend auf der Analyse von Verzögerungen zwischen den TastenschlĂ€gen beim Tippen rekonstruieren, die von der Anordnung der Tasten auf der Tastatur abhĂ€ngen (zum Beispiel ist die Reaktion beim Eingeben des Buchstabens âFâ schneller als beim Eingeben von âQâ oder âXâ, da weniger Fingerbewegungen erforderlich sind).
DarĂŒber hinaus stellte sich heraus, dass der implementierte Algorithmus zum Senden von Paketen mit echten und fiktiven TastenschlĂ€gen die ZuverlĂ€ssigkeit einer anderen Schutzmethode gegen Seitenkanalangriffe verringert hat. Begonnen mit der Veröffentlichung
OpenSSH 2.9.9 Server sendete Pakete mit fiktiven TastenschlĂ€gen fĂŒr die Konsoleneingabe im echo-off-Modus, der beispielsweise beim Eingeben von Passwörtern in su oder sudo verwendet wird. Die neue Logik zum Senden fiktiver Pakete ermöglichte es, bei passiver Analyse des Verkehrs Pakete mit echten TastenschlĂ€gen im echo-off-Modus zu identifizieren, um sie separat zu analysieren. Dabei wird die Genauigkeit der Zeitangaben ĂŒber TastendrĂŒcke jedoch eingeschrĂ€nkt, da die Pakete nach dem Tippen nicht sofort, sondern in festen Zeitintervallen (standardmĂ€Ăig 20 ms) gesendet werden.
Weitere Ănderungen in OpenSSH 9.8:
- Im Zusammenbau ist die UnterstĂŒtzung fĂŒr digitale Signaturen auf Basis des DSA-Algorithmus standardmĂ€Ăig deaktiviert. Anfang 2025 wird die Implementierung von DSA aus dem Code entfernt. Als Grund fĂŒr die Entfernung wird das nicht mehr zeitgemĂ€Ăe Schutzniveau von DSA genannt. Die Kosten fĂŒr die FortfĂŒhrung der UnterstĂŒtzung des unsicheren DSA-Algorithmus rechtfertigen sich nicht, und seine Entfernung wird es ermöglichen, die UnterstĂŒtzung von DSA in anderen SSH-Implementierungen und kryptografischen Bibliotheken einzustellen.
- Um zusĂ€tzlichen Schutz gegen Methoden zur Ausnutzung von Verwundbarkeiten zu bieten, die eine groĂe Anzahl an Verbindungen zum sshd erfordern, wurde ein neuer Schutzmodus implementiert und standardmĂ€Ăig aktiviert, der auch beim Blockieren automatisierter Angriffe zur Passwortermittlung hilft, bei denen Bots versuchen, das Benutzerpasswort durch Ausprobieren verschiedener gĂ€ngiger Kombinationen zu erraten. Der Schutz erfolgt durch eine Blockierung IP-Adressen, bei denen eine groĂe Anzahl gescheiterter Verbindungsversuche verzeichnet wird â der sshd ĂŒberwacht den Status der Beendigung von Kindprozessen, um Situationen zu erkennen, in denen die Authentifizierung fehlgeschlagen ist oder ein Prozess aufgrund eines Fehlers abgestĂŒrzt ist. Bei Ăberschreitung eines bestimmten Schwellenwerts beginnt er, Anfragen von problematischen IPs oder Subnetzen zu blockieren. FĂŒr die Konfiguration des Schwellenwerts der Blockierung, der Masken der blockierten Subnetze und der Ausnahmeliste wurden die Parameter PerSourcePenalties, PerSourceNetBlockSize und PerSourcePenaltyExemptList vorgeschlagen.
- Der sshd-Prozess wurde in mehrere separate ausfĂŒhrbare Dateien unterteilt. Aus dem sshd wurde der Prozess sshd-session ausgegliedert, der fĂŒr die Aufgaben der Sitzungsbearbeitung verantwortlich ist. Im sshd verbleiben Funktionen, die fĂŒr den Empfang von Netzwerkverbindungen, die ĂberprĂŒfung der Konfiguration, das Laden von HostschlĂŒsseln und die Verwaltung der gestarteten Prozesse gemÀà dem Parameter MaxStartups zustĂ€ndig sind. Somit enthĂ€lt die ausfĂŒhrbare Datei sshd nun die minimal erforderliche FunktionalitĂ€t, um eine neue Netzwerkverbindung entgegenzunehmen und den sshd-session fĂŒr die Sitzungsbearbeitung zu starten.
- Der Text einiger Fehlermeldungen, die im Protokoll aufgezeichnet werden, hat sich geĂ€ndert. Insbesondere werden einige Nachrichten nun im Namen des Prozesses âsshd-sessionâ und nicht mehr von âsshdâ gesendet.
- In der Dienstprogramm ssh-keyscan wird die Ausgabe der Versionsinformationen des Protokolls und des Hostnamens nun in den Standardausgabestrom anstatt in STDERR geleitet. Eine Option â-qâ wurde angeboten, um die Ausgabe zu deaktivieren.
- In ssh wurde die Möglichkeit implementiert, ĂŒber die Direktive HostkeyAlgorithms von der Verwendung des Host-SchlĂŒsselzertifikats zu einfachen (plain) Host-SchlĂŒsseln zurĂŒckzukehren.
- In der portablen Version von sshd wird die Verwendung des Wertes argv[0] zur Bestimmung des PAM-Dienstnamens eingestellt. Um den PAM-Dienstnamen in sshd_config festzulegen, wurde die neue Direktive "PAMServiceName" hinzugefĂŒgt, die standardmĂ€Ăig auf "sshd" eingestellt ist.
- In der portablen Version von sshd wurde sichergestellt, dass automatisch generierte Dateien (wie das Skript configure, config.h.in usw.) im Git-Zweig mit den Releases (z.B. V_9_8) gespeichert werden, was die Synchronisierung der Zusammensetzung signierter tar-Archive und der Zweige in Git ermöglicht hat.
- In der portablen Version von ssh und ssh-agent wurde der Modus festgelegt.
SSH_ASKPASS wird aktiviert, wenn die Umgebungsvariable WAYLAND_DISPLAY vorhanden ist, Ă€hnlich wie es fĂŒr X11 bei Vorhandensein der Umgebungsvariable DISPLAY gehandhabt wurde. - In der portablen Version von sshd wurde die UnterstĂŒtzung fĂŒr das Senden von Benachrichtigungen an systemd beim Erstellen eines wartenden Netzwerksockets oder beim Neustart hinzugefĂŒgt, wobei ein separater Code verwendet wird, der nicht auf die libsystemd-Bibliothek zugreift.
Quelle: opennet.ru
