Flan Scan, der schlanke Netzwerk-Schwachstellenscanner von Cloudflare, der bisher nur intern verwendet wurde, ist ab heute ein Open-Source-Produkt. Flan Scan ist ein einfacher Wrapper für Nmap, der aus diesem beliebten Open-Source-Tool einen Scanner für Schwachstellen macht und zudem ganz einfach bereitzustellen ist.
Wir haben Flan Scan entwickelt, nachdem zwei Versuche gescheitert sind, „branchenübliche“ Scanner für unsere Compliance-Scans zu nutzen. Vor etwas mehr als einem Jahr haben wir noch einen großen Anbieter für seinen Scanner bezahlt. Aber dann erkannten wir, dass dies einer unserer größten Kostenfaktoren in Sachen Sicherheit war, viele seiner Funktionen für unser Setup aber nicht relevant waren. Wir bekamen nicht genug Gegenwert für unser Geld. Bald darauf wechselten wir zu einem Open-Source-Scanner und nahmen es auf uns, das komplizierte Setup selbst zu verwalten. Die Implementation in unseren mehr als 190 Rechenzentren war deshalb schwierig.
Wir hatten die Vorgabe, am Ende des dritten Quartals für unsere Compliance-Anforderungen einen internen Scan durchzuführen, aber kein Tool, das unseren Anforderungen entsprach. Nach unseren Erfahrungen mit existierenden Scannern entschieden wir uns schließlich, auf eigene Faust einen Scanner zu entwickeln, der für unser Setup funktioniert. Bei der Entwicklung von Flan Scan haben wir eng mit unseren Auditoren zusammengearbeitet, um die Anforderungen für ein solches Tool zu verstehen. Wir brauchten einen Scanner, der die Dienste in unserem Netzwerk korrekt erkennen und dann in einer Datenbank von CVEs nachschlagen kann, um Schwachstellen zu finden, die für unsere Dienste relevant sind. Im Gegensatz zu anderen von uns getesteten Scannern musste unser Tool außerdem auf einfache Weise in unserem gesamten Netzwerk bereitgestellt werden.
Wir haben uns für Nmap als einfachen Scanner entschieden, da es im Gegensatz zu anderen Netzwerkscannern, denen Geschwindigkeit wichtiger ist als Korrektheit, die Erkennung von Diensten priorisiert und so weniger falsch-positive Ergebnisse liefert. Nmap hat uns auch wegen der Nmap Scripting Engine (NSE) gefallen, mit der man Skripts auf den Scan-Ergebnissen ausführen kann. Wir haben festgestellt, dass das Skript „vulners“, das auf NSE verfügbar ist, die erkannten Dienste relevanten CVEs aus einer Datenbank zuordnen kann, und das war genau das, was wir brauchten.
Der nächste Schritt bestand darin, die Bereitstellung des Scanners zu vereinfachen und gleichzeitig zu gewährleisten, dass er umsetzbare und wertvolle Ergebnisse liefert. Wir haben drei weitere Features für Flan Scan entwickelt, mit denen Nmap zu einem benutzerfreundlichen Scannerpaket wird, das über ein großes Netzwerk hinweg bereitgestellt werden kann.
Einfache Bereitstellung und Konfiguration: Um einen schlanken Scanner mit einfacher Konfiguration zu entwickeln, haben wir uns entschieden, Flan Scan in einem Docker-Container auszuführen. Nach der Erstellung wird Flan Scan in eine Docker-Registry verschoben, er ist gleichzeitig aber so flexibel, dass er zur Laufzeit konfiguriert werden kann. Flan Scan enthält auch Beispiele für Kubernetes-Konfigurations- und Bereitstellungsdateien mit einigen Platzhaltern, damit Sie schnell einsteigen und scannen können.
Ergebnisse in die Cloud übertragen: Flan Scan unterstützt das Übertragen von Ergebnissen in einen Google Cloud Storage Bucket oder einen S3-Bucket. Dafür müssen Sie nur ein paar Umgebungsvariablen einrichten, Flan Scan erledigt den Rest. So können Sie viele Scans über ein großes Netzwerk hinweg ausführen und die Ergebnisse zur Verarbeitung zentral sammeln.
Maßnahmenorientierte Berichte: Flan Scan generiert aus der Nmap-Ausgabe Berichte, die sich in Maßnahmen umsetzen lassen. Sie können anfällige Dienste in Ihrem Netzwerk, die entsprechenden CVEs sowie die IP-Adressen und Ports, in denen diese Dienste gefunden wurden, schnell identifizieren. Die Berichte sind nützlich für Entwickler, die den Ergebnissen des Scans nachgehen, und für Auditoren, die Belege für Compliance-Scans brauchen.
Beispielausführung von Flan Scan von Anfang bis Ende.
Wie hat Flan Scan bei Cloudflare die Netzwerksicherheit verbessert?
Am Ende des dritten Quartals hatten wir nicht nur unsere Compliance-Scans abgeschlossen. Mit Flan Scan hatten wir auch die Sicherheit unseres Netzwerks spürbar verbessert. Bei Cloudflare fixieren wir die Softwareversion einiger Dienste in der Produktion. So können wir Upgrades priorisieren, indem wir die Betriebskosten des Upgrades gegen die Verbesserungen der neuesten Version abwägen. Aus den Ergebnissen von Flan Scan haben wir entnommen, dass auf unseren FreeIPA-Knoten zur Verwaltung von Linux-Nutzern und -Hosts eine veraltete Version von Apache mit mehreren Schwachstellen mittleren Schweregrads ausgeführt wurde. Dieses Update haben wir dementsprechend priorisiert. Mit Flan Scan fanden wir auch eine anfällige Instanz von PostgreSQL, ein Überbleibsel eines gar nicht mehr vorhandenen Performance-Dashboards.
Flan Scan ist Teil einer größeren Maßnahme zur Erweiterung unseres Programms zum Schwachstellenmanagement. Kürzlich haben wir in unserem gesamten Netzwerk osquery für hostbasierte Schwachstellenverfolgung bereitgestellt. Durch die Zusammenführung der Ergebnisse von osquery mit den Netzwerkscans von Flan Scan möchten wir die in unserer Edge ausgeführten Dienste umfassend durchleuchten. Als diese beiden Schwachstellen-Tracker eingeführt waren, beschlossen wir, ein Tool zur Verwaltung der wachsenden Anzahl von Quellen solcher Schwachstellen zu entwickeln. Unser Tool sendet Warnmeldungen zu neuen Schwachstellen, filtert falsch positive Ergebnisse heraus und verfolgt behobene Schwachstellen weiter. Die wertvollen Sicherheitserkenntnisse aus Flan Scan waren ein wichtiger Impuls für die Erstellung dieses Tools zur Schwachstellenverfolgung.
Wie funktioniert Flan Scan?
Der erste Schritt bei Flan Scan besteht darin, einen Nmap-Scan mit Diensterkennung auszuführen. Der standardmäßige Nmap-Scan von Flan Scan führt folgende Scans aus:
ICMP-Ping-Scan: Nmap stellt fest, welche der angegebenen IP-Adressen online sind.
SYN-Scan: Nmap scannt die 1000 häufigsten Ports der IP-Adressen, die auf den ICMP-Ping geantwortet haben. Nmap kennzeichnet Ports als geöffnet, geschlossen oder gefiltert.
Diensterkennungsscan: Um zu erkennen, welche Dienste auf offenen Ports ausgeführt werden, führt Nmap TCP-Handshake- und Banner-Grabbing-Scans durch.
Nmap bietet auch andere Scanmöglichkeiten wie UDP-Scannen und IPv6-Adressen. Mit Flan Scan kann der Anwender diese und alle anderen erweiterten Features von Nmap ausführen. Dazu werden zur Laufzeit Nmap-Flags übergeben.
Beispiel-Ausgabe von Nmap
Flan Scan fügt das Skript-Tag „vulners“ in seinen Standardbefehl Nmap ein, damit eine Liste von Schwachstellen der erkannten Dienste in die Ausgabe aufgenommen wird. Mit dem vulners-Skript werden API-Aufrufe an einen Dienst bei vulners.com ausgeführt, der alle bekannten Schwachstellen des angegebenen Dienstes zurückgibt.
Beispiel-Ausgabe von Nmap mit vulners-Skript
Im nächsten Schritt verwendet Flan Scan ein Python-Skript, um aus dem strukturierten XML der Nmap-Ausgabe einen maßnahmenorientierten Bericht zu machen. In den Berichten des von uns vorher verwendeten Scanners wurden alle gescannten IP-Adressen aufgeführt und die für diesen Standort geltenden Schwachstellen dargestellt. Da derselbe Dienst auf mehreren IP-Adressen ausgeführt wurde, wurde dieselbe Liste von Schwachstellen unter jeder dieser IP-Adressen wiederholt. So kamen Dokumente mit Hunderten von Seiten zustande, auf denen man hin- und herscrollen musste, um eine Liste aller IP-Adressen mit den gleichen Schwachstellen zu erhalten. Die Ergebnisse waren unbrauchbar.
Die Ergebnisse von Flan Scan sind auf Dienste ausgerichtet. Im Bericht werden alle anfälligen Dienste aufgeführt, jeder mit einer Liste der relevanten Schwachstellen und aller IP-Adressen, auf denen dieser Dienst ausgeführt wird. Durch diesen Aufbau ist der Bericht kürzer und praktisch nutzbar, denn die Dienste, bei denen Handlungsbedarf besteht, werden eindeutig identifiziert. Die Berichte von Flan Scan werden mit LaTeX erstellt, schließlich freut sich jeder über schön formatierte Berichte, die mit einem Skript generiert werden können. Die unformatierte LaTeX-Datei, die Flan Scan ausgibt, kann mit Tools wie pdf2latex oder TeXShop in ein schickes PDF umgewandelt werden.
Beispielbericht von Flan Scan
Wie geht es weiter?
Die Mission von Cloudflare besteht darin, das Internet für alle besser zu machen, nicht nur für Internetgiganten, die es sich leisten können, teure Tools zu kaufen. Wir machen Flan Scan zu Open Source, weil wir glauben, dass starke Netzwerksicherheit keine gewaltigen Beträge kosten sollte.
Schon in wenigen Minuten können Sie den ersten Schwachstellenscan in Ihrem Netzwerk ausführen. Gehen Sie einfach nach der Anleitung unter README vor. Wir freuen uns über Beiträge und Anregungen aus der Community.