In der vergangenen Woche veröffentlichte Qualys einen Sicherheitshinweis mit dem Titel „ “ () () () ( ), in dem Sicherheitslücken (CVE-2016–0777 und 0778) in den OpenSSH-Client-Versionen 5,4 bis 7,1 offengelegt wurden. Werden diese Sicherheitslücken ausgenutzt, kann dies zum Diebstahl von geheimen Schlüsseln führen. Um die Sicherheitslücke zu beheben, können Administratoren entweder OpenSSH mit der Version 7,1p2 aktualisieren oder bestehende SSH-Clients so konfigurieren, dass die ausnutzbare Funktion deaktiviert wird.
Das Aufspüren anfälliger Versionen von Software wie OpenSSH in einem Unternehmen jeglicher Größe stellt ein großes Problem dar, da es den meisten Unternehmen an der grundlegenden Fähigkeit mangelt, alle Endpunkte innerhalb ihres Netzwerks zu erfassen. Alles, was Sie an einem einzelnen System vornehmen möchten – wie beispielsweise das Beenden von Prozessen, das Unterbringen von Systemen in Quarantäne oder das Installieren von Patches –, kann sich auf allen Endgeräten als schwierig erweisen; dies ist einer der Gründe, warum Tanium eine hervorragende Lösung darstellt.
Erste Untersuchungen
Nachdem wir die Pressemitteilung von Qualys gelesen hatten, mussten wir versuchen, weitere Informationen zu Abhilfemaßnahmen zu finden, idealerweise von den Anbietern des Patches. Theo de Raadt, ein Experte auf diesem Gebiet, , hat unter eine undokumentierte Konfigurationsanweisung „UseRoaming no“ veröffentlicht, die verhindert, dass der Fehler auftritt. Auf den ersten Blick schien die Umgehungslösung trivial zu sein: Man musste lediglich ein Shell-Skript erstellen, um den Eintrag in die Konfigurationsdatei einzufügen. In einer diesbezüglichen Diskussion unter wurde treffend angemerkt, dass das Anhängen der Konfiguration an die Konfigurationsdatei fehlschlagen könnte, wenn in der Konfigurationsdatei Host-Muster definiert sind. Daher muss das Skript die Konfigurationseinstellung für alle Hosts anhängen:

Schnelle Bereitstellung eines Skripts auf anfälligen Rechnern
Die massenhafte Änderung aktiver Konfigurationsdateien dürfte jeden vernünftigen Administrator beunruhigen. Dies sollte nicht ohne eine gewisse Vorsicht und einen Ausweichplan unternommen werden. Wenn wir die Datei ändern, wie können wir die Änderungen dann schnell auf einem oder allen Systemen rückgängig machen? Zunächst haben wir unsere bestehende Konfiguration in einer neuen Datei gesichert und anschließend die Korrektur „ “ „UseRoaming no“„ “ in die Datei „ssh_config“ übernommen:

Bei ersten Tests haben wir festgestellt, dass das Flag „-e“ des Befehls „echo“ nicht auf allen Systemen verfügbar ist; daher haben wir uns aus Gründen der Portabilität für die Verwendung des Konstrukts „$“ entschieden. Daher haben wir den Befehl wie folgt erweitert:

Wir haben erneut auf einem einzelnen System Tests durchgeführt. Hier sehen Sie eine Abbildung, die die letzten Zeilen der alten Datei, die manuelle Durchführung der Korrektur über die Befehlszeile sowie die letzten Zeilen der geänderten Konfigurationsdatei zeigt:

Wir haben den Grenzfall getestet, bei dem die Korrektur mehrfach an die Konfigurationsdatei angehängt wurde, und festgestellt, dass der SSH-Client trotz dieser Redundanz weiterhin einwandfrei funktioniert. Aus operativer Sicht ist dies eine gute Sicherheitsmaßnahme, doch wir haben dies als einen Punkt vermerkt, der im weiteren Verlauf der Entwicklung noch bereinigt werden muss.
Ausfallsicherheit
Am einfachsten ist es, die Sicherungsdatei über die Konfigurationsdatei zu kopieren. Im Idealfall müssten wir dies niemals tun, doch diese vorbeugende Maßnahme könnte sich sehr auszahlen und für zusätzliches Vertrauen sorgen, während wir unternehmensweit zügig Abhilfemaßnahmen ergreifen.
Das Skript ist einfach aufgebaut:

Ermittlung des Ausmaßes der OpenSSH-Sicherheitslücke
Da wir nun über Skripte zum Anwenden und Entfernen des Fixes verfügen, ist es an der Zeit, ein weiteres Skript zu erstellen, um die Anwendbarkeit zu prüfen. Wir werden dieses Skript in einen Tanium-Sensor einbinden, damit wir die Abfrage im gesamten Netzwerk der Endpunkte ausführen können. Da mehrere Tests gezeigt haben, dass sich die Umgehungslösung positiv ausgewirkt hat, besteht die einfachste uns zur Verfügung stehende Methode darin, zu überprüfen, ob die Datei „ssh_config“ die durch die Korrektur beabsichtigte Ausgabe enthält.
Aus Gründen der Portabilität haben wir uns für eine awk-Einzeiler-Implementierung entschieden, die die Zeilen einer Datei ausgibt, die zwischen anderen Übereinstimmungen mit regulären Ausdrücken liegen:

Dies trifft nur auf Fälle zu, in denen die vollständige, aus drei Zeilen bestehende Korrektursequenz in die Datei geschrieben wurde. Wir haben uns dafür entschieden, den String „Potentiell anfällig“ anstelle von „Anfällig“ zurückzugeben, da unsere Lösung unabhängig von der OpenSSH-Version funktioniert. Indem wir einen breiteren Anwendungsbereich abdecken, unabhängig von der jeweiligen Version, müssen wir unseren Code nicht aktualisieren, sollten Forscher weiterhin weitere Sicherheitslücken in derselben Roaming-Funktion von OpenSSH aufdecken. (Die Roaming-Funktion erweist sich in der Praxis nie als nützlich, sodass eine deaktivierung über die Konfiguration die Sicherheit erhöht, ohne den Betrieb zu beeinträchtigen.) Manche erinnern sich vielleicht noch an „ “ () und „Shellshock“ (), bei denen es einige Anläufe und Software-Updates bedurfte, bis die Community alles richtig hinbekam. Unser Ansatz sorgt dafür, dass sich dieses Problem beim SSH-Client nicht wiederholt.
Hier ist die Ausgabe unseres Tests mit einer Standard-ssh_config-Datei:

Und nun gegen einen, den wir gerade besiegt hatten:

Das sieht gut aus! Anschließend haben wir diese Skripte in einen Tanium-Sensor integriert, den wir „SSH-Key-Leak-Workaround-Status“ nennen werden.
Benutzerspezifische SSH-Konfigurationen und die Überarbeitung der Inhalte
Bei unseren Recherchen haben wir in der Community kaum Diskussionen darüber gefunden, auf welchen Rechnern Nutzer möglicherweise eigene ~/.ssh_config-Dateien definiert haben. Da diese Einstellungen Vorrang vor den globalen Konfigurationen haben, müssen die Korrekturen hier vorgenommen werden, um die Sicherheitslücke zu schließen. Dies veranlasste uns zu weiteren Verbesserungen unserer Inhalte, die nun auch die Home-Verzeichnisse durchlaufen. Aufgrund von Plattformunterschieden haben wir letztendlich zwei verschiedene Versionen der Skripte erstellt, um sowohl OS X als auch *nix-Varianten gleichermaßen zu unterstützen.
Zudem haben wir die Logik unserer früheren Skripte, die die Korrektur angewandt haben, verbessert, damit diese nicht mehrfach angewendet wird und die Konfigurationsdateien nicht unnötig aufgebläht werden. Sie sind zwar lang genug, um nicht mehr ordentlich in einen Blogbeitrag zu passen, umfassen aber dennoch nur etwas mehr als 40 Zeilen Code und Kommentare.
Das Ergebnis ist eine Lösung, die Systeme auf *nix- und OS X-Systemen innerhalb von Sekunden als „potenziell anfällig“ identifiziert. Sollten lokale SSH-Konfigurationsdateien die Sicherheitsmaßnahme zum Schutz des Unternehmens nicht enthalten, können Benutzer die Korrektur innerhalb weniger Minuten auf einzelne oder alle Systeme im gesamten Unternehmen anwenden oder rückgängig machen.
Die Plattform Tanium
Tanium erleichtert die Behebung der OpenSSH-Sicherheitslücke, da es als branchenweit einziges System einen Echtzeit-Überblick über den Status aller Endgeräte bietet – unabhängig von der Anzahl der Rechner. Die Plattform bietet den schnellsten und einfachsten Weg, den in diesem Beitrag beschriebenen Ansatz umzusetzen: Beginnen Sie mit Daten aus einer seriösen Quelle, entwickeln Sie Skripte, führen Sie Tests in großem Maßstab durch, verfeinern Sie das Konzept und stellen Sie schließlich das Ergebnis vollständig bereit, das im Wesentlichen zu einer neuen Funktion der Plattform wird.
Teilen Sie uns Ihre Meinung mit, oder wenden Sie sich bitte an Ihren Technical Account Manager, falls Sie daran interessiert sind, die Inhalte in Ihrer eigenen Umgebung bereitzustellen. Falls Sie Tanium noch nicht kennen und mehr darüber erfahren möchten, kontaktieren Sie uns bitte unter , um eine Demo zu vereinbaren.
Rory Prendergast, Leitender Direktor
Peter Oelschlaeger, Leitender Direktor
Möchten Sie Tanium in Aktion erleben? Vereinbaren Sie unter eine individuelle Vorführung oder nehmen Sie an unserem wöchentlichen Webinar teil. Sprechen Sie mit unseren Tanium-Experten bei unseren bevorstehenden Veranstaltungen im Rahmen der „ “ unter.
