Aujourd'hui, nous sommes ravis de présenter Flan Scan, le scanner léger interne des vulnérabilités réseau créé par Cloudflare. Flan Scan est un wrapper léger autour de Nmap qui convertit cet outil open source populaire en un scanner des vulnérabilités, en présentant l'avantage supplémentaire d'un déploiement facile.

Nous avons créé Flan Scan après deux tentatives infructueuses d'utiliser des scanners « standard de l'industrie » pour nos scans de conformité. Il y a un peu plus d'un an, nous avons payé un gros fournisseur pour son scanner, mais nous avons réalisé que ce dernier représentait l'un de nos coûts de sécurité les plus élevés et que de nombreuses caractéristiques de ce scanner n'étaient pas adaptées à notre installation. Il nous a semblé évident que nous n’avions pas le service attendu en contrepartie des sommes payées. Peu de temps après, nous sommes passés à un scanner open source et avons entrepris de gérer sa configuration compliquée. Son déploiement a été rendu difficile sur l'ensemble de notre flotte de plus de 190 centres de données.

Nous avions une échéance à la fin du T3 pour effectuer un scan interne de nos exigences de conformité, mais aucun outil ne répondait à nos besoins. Fort de notre expérience avec les scanners existants, nous avons décidé de nous lancer seuls dans la création d'un scanner adapté à notre configuration. Pour concevoir Flan Scan, nous avons travaillé en étroite collaboration avec nos auditeurs afin de comprendre les exigences d'un tel outil. Nous avions besoin d'un scanner capable de détecter avec précision les services sur notre réseau, puis de rechercher ces services dans une base de données de CVE pour repérer les vulnérabilités relatives à nos services. De plus, contrairement aux autres scanners que nous avions essayés, notre outil devait être facile à déployer sur l'ensemble de notre réseau.

Nous avons choisi Nmap comme scanner de base car, contrairement aux autres scanners réseau qui sacrifient la précision à la vitesse, celui-ci donne la priorité à la détection des services, en réduisant ainsi les faux positifs. Nous avons également préféré Nmap en raison du Moteur de scripts de Nmap (NSE), qui permet d'exécuter des scripts en fonction des résultats du scan. Nous avons constaté que le script « vulners », disponible sur NSE, permettait de faire correspondre les services détectés aux CVE pertinents à partir d'une base de données, ce qui était exactement ce que nous recherchions.

L'étape suivante a consisté à rendre le scanner facile à déployer tout en veillant à ce qu'il produise des résultats exploitables et précieux. Nous avons ajouté trois fonctionnalités à Flan Scan qui ont permis de rassembler Nmap en un scanner convivial pouvant être déployé sur un grand réseau.

  • Déploiement et configuration faciles - Pour créer un scanner léger et facile à configurer, nous avons choisi d'exécuter Flan Scan à l'intérieur d'un container Docker. Par conséquent, Flan Scan peut être créé et poussé vers un registre Docker et conserve la flexibilité d'être configuré au moment de l'exécution. Flan Scan comprend également des échantillons de fichiers de déploiement et de configuration Kubernetes avec quelques espaces réservés pour que vous puissiez rapidement effectuer un scan.
  • Transfer des résultats vers le Cloud - Flan Scan ajoute le support pour transférer les résultats vers un bucket Google Cloud Storage ou un bucket S3. Il vous suffit de définir quelques variables d'environnement et Flan Scan se charge du reste. Il est ainsi possible d'exécuter de nombreux scans sur un grand réseau et de recueillir les résultats en un seul endroit central pour le traitement.
  • Rapports exploitables - Flan Scan génère des rapports exploitables à partir de la sortie de Nmap, afin que vous puissiez rapidement identifier les services vulnérables sur votre réseau, les CVE applicables, ainsi que les adresses IP et les ports où ces services ont été trouvés Ces rapports sont utiles aux ingénieurs qui effectuent le suivi des résultats de scan ainsi qu'aux auditeurs qui recherchent les preuves de scans de conformité.
Exécution type de Flan Scan du début à la fin.

Comment Flan Scan a-t-il amélioré la sécurité réseau de Cloudflare ?

À la fin du T3, nous avions non seulement terminé nos scans de conformité, mais nous avions également utilisé Flan Scan pour améliorer de façon tangible la sécurité de notre réseau. Chez Cloudflare, nous plaçons la version logicielle de certains services en production, car elle nous permet de prioriser les mises à jour en comparant le coût opérationnel de la mise à niveau avec les améliorations de la dernière version. Les résultats de Flan Scan ont révélé que nos nœuds FreeIPA, utilisés pour prendre en charge les utilisateurs et les hôtes Linux, exécutaient une version obsolète d'Apache avec plusieurs vulnérabilités de gravité moyenne. Par conséquent, nous avons donné la priorité à leur mise à jour. Flan Scan a également trouvé une instance vulnérable de PostgreSQL provenant d'un tableau de bord de performance qui n'existe plus.

Flan Scan fait partie d'un effort plus large visant à étendre notre programme de prise en charge des vulnérabilités. Nous avons récemment déployé osquery sur l'ensemble de notre réseau pour effectuer un suivi des vulnérabilités basé sur l'hôte. En combinant les résultats d'osquery avec les analyses de réseau de Flan Scan, nous travaillons à une visibilité complète des services fonctionnant à notre périphérie et de leurs vulnérabilités. Avec deux traceurs de vulnérabilité en place, nous avons décidé de construire un outil pour gérer le nombre croissant de sources de vulnérabilité. Notre outil envoie des alertes sur les nouvelles vulnérabilités, filtre les faux positifs et assure le suivi des vulnérabilités corrigées. Les informations précieuses de Flan Scan en matière de sécurité ont donné une impulsion majeure à la création de cet outil de suivi des vulnérabilités.

Comment Flan Scan fonctionne-t-il?

La première étape de Flan Scan est d'exécuter un scan Nmap avec détection de services. Le scan Nmap par défaut de Flan Scan exécute les scans suivants :

  1. ICMP ping scan - Nmap détermine quelles adresses IP données sont en ligne.
  2. SYN scan - Nmap scanne les 1000 ports les plus courants des adresses IP qui ont répondu au ping ICMP. Nmap marque les ports comme étant ouverts, fermés ou filtrés.
  3. Scan de détection de services - Pour détecter quels services sont en cours d'exécution sur les ports ouverts, Nmap effectue des scans des handshakes TCP et de banner grabbing.

D'autres types de scan comme le scan UDP et les adresses IPv6 sont également possibles avec Nmap. Flan Scan permet aux utilisateurs d’exécuter ces fonctionnalités et d’autres fonctionnalités étendues de Nmap en passant en flags Nmap au moment de l'exécution.

Exemple de sortie Nmap

Flan Scan ajoute la balise de script « vulners » dans sa commande Nmap par défaut pour inclure dans la sortie une liste de vulnérabilités applicables aux services détectés. Le script vulners fonctionne en faisant des appels d'API à un service exécuté par vulners.com qui renvoie toutes les vulnérabilités connues pour le service donné.

Exemple de sortie Nmap avec le script Vulners

L'étape suivante de Flan Scan utilise un script Python pour convertir le XML structuré de la sortie de Nmap en un rapport exploitable. Les rapports du scanner précédent que nous avons utilisé listaient chacune des adresses IP analysées et présentaient les vulnérabilités applicables à cet emplacement. Comme nous avions plusieurs adresses IP exécutant le même service, le rapport répétait la même liste de vulnérabilités sous chacune de ces adresses IP. Il fallait donc faire défiler des documents de plusieurs centaines de pages pour obtenir une liste de toutes les adresses IP présentant les mêmes vulnérabilités.  Les résultats étaient simplement imbuvables.

Les résultats de Flan Scans sont structurés autour des services. Le rapport énumère tous les services vulnérables avec une liste sous chacune des vulnérabilités pertinentes et toutes les adresses IP exécutant ce service. Cette structure rend le rapport plus court et plus facile à exploiter puisque les services qui doivent être restaurés peuvent être clairement identifiés. Les rapports de Flan Scan sont faits en utilisant LaTeX, qui n'aime pas, en effet, les rapports bien formatés qui peuvent être générés avec un script ? Le fichier LaTeX brut que Flan Scan produit peut être converti en un magnifique PDF en utilisant des outils comme pdf2latex ou TeXShop.

Exemple de rapport Flan Scan

Quoi de plus ?

La mission de Cloudflare consiste à aider à construire un meilleur Internet pour tous, pas simplement pour les géants d'Internet qui peuvent se permettre d'acheter des outils coûteux. Nous offrons Flan Scan en open source parce que nous pensons qu’une sécurité réseau forte ne doit pas représenter un coût exorbitant.

Vous pouvez commencer à exécuter une analyse de vulnérabilité sur votre réseau en quelques minutes en suivant les instructions du fichier README. Nous serons heureux de recevoir les contributions et les suggestions de la communauté.