Die Entwickler von OpenSSH haben die Trennung von sshd in mehrere separate ausfĂŒhrbare Dateien fortgesetzt. In der im Mai umgesetzten ersten Phase der Trennung wurden Funktionen, die mit der Sitzungsbehandlung zu tun haben, von sshd in einen separaten Prozess namens sshd-session ausgelagert, wĂ€hrend in sshd nur noch die FunktionalitĂ€t erhalten blieb, die notwendig ist, um neue Netzwerkverbindungen anzunehmen und sshd-session fĂŒr jede neue Sitzung zu starten. Gestern wurde eine Ănderung in den Code von OpenSSH eingefĂŒgt, die einen weiteren Prozess â sshd-auth â hinzufĂŒgt, in den der Code zur DurchfĂŒhrung der Authentifizierung von sshd-session ĂŒbertragen wurde.
Der Prozess sshd-auth wird aus sshd-session gestartet und ermöglicht es, die Authentifizierungsdaten zusĂ€tzlich im Adressraum eines separaten Prozesses zu isolieren, was den Zugriff auf diese Daten im Speicher bei Angriffen auf den Code, der fĂŒr die Bearbeitung der Verbindungsstadien bis zum Abschluss der Authentifizierung verwendet wird, erschwert. DarĂŒber hinaus reduziert die Ănderung geringfĂŒgig den Speicherverbrauch, da der mit der Authentifizierung verbundene Code nun nur im Speicher vorhanden ist, wĂ€hrend die Authentifizierung durchgefĂŒhrt wird, und anschlieĂend beim Abschluss des Prozesses sshd-auth entladen wird.
Analog zu sshd, ssh-session und ssh-agent wurde beim Prozess sshd-auth die Operation der zufĂ€lligen Neukompilierung der ausfĂŒhrbaren Datei wĂ€hrend jeder Systemstarts angewendet. Die zufĂ€llige Neukompilierung macht es schwer vorhersagbar, wo sich die Funktionen in den ausfĂŒhrbaren Dateien und Bibliotheken befinden, was die Erstellung von Exploits, die Techniken der RĂŒcksprung-programmierung (ROP â Return-Oriented Programming) verwenden, erschwert. Bei der Verwendung der ROP-Technik versucht der Angreifer nicht, seinen eigenen Code im Speicher unterzubringen, sondern arbeitet mit bereits vorhandenen Teilen von Maschinenanweisungen, die mit einer RĂŒcksprunganweisung enden (normalerweise sind dies die Enden von Funktionen). Die Funktionsweise des Exploits besteht darin, eine Kette von Aufrufen solcher Blöcke (âGadgetsâ) aufzubauen, um die gewĂŒnschte FunktionalitĂ€t zu erhalten.
Quelle: opennet.ru
