Blog: Fortigate CVE-2023-27997 (XORtigate) dans les yeux de Patrowl

Auteur: Flo
Publié le

Patrowl's blog - Fortigate CVE-2023-27997

Le vendredi 11 février 2023, Fortinet a discrètement publié une série de correctifs pour la plupart de ses produits. Les correctifs de sécurité concernent les versions 6.0.17, 6.2.15, 6.4.13, 7.0.12 et 7.2.5.

Love Sunday

Le dimanche 11 juin 2023, Fortinet a discrètement publié un ensemble de correctifs pour la plupart de ses produits. Les correctifs de sécurité comprenaient les versions 6.0.17, 6.2.15, 6.4.13, 7.0.12 et 7.2.5. Cependant, deux jours avant, un tweet de Charles Fol (un grand merci à lui), chercheur en vulnérabilités chez Lexfo Security, a révélé que les mises à jour de FortiOS corrigeaient une vulnérabilité critique d'exécution de code à distance (RCE). La vulnérabilité a été référencée CVE-2023-27997, mais aucun autre détail n'a été fourni dans le tweet : https://twitter.com/cfreal_/status/1667852157536616451?s=20.

Les informations limitées fournies par Fortinet concernant cette publication ont laissé toutes les équipes informatiques dans un état d'incertitude, car elles étaient incapables de déterminer la véritable gravité, l'impact et l'exploitabilité de la vulnérabilité.

Love Patrowl

Compte tenu de l'historique des vulnérabilités récentes sur les produits de Fortinet, telles que le CVE-2022-40684 (contournement d'authentification) largement exploitable, il était crucial de ne prendre aucun risque. Par conséquent, nous avons immédiatement alerté et conseillé à tous nos clients de mettre à jour leurs systèmes avant la publication du bulletin de sécurité Fortinet et la publication probable ultérieure du code d'exploitation.

Cet incident met en évidence la valeur et l'efficacité de Patrowl EASM. Grâce à notre cartographie complète des actifs, nous avons pu identifier rapidement et avec précision toutes les interfaces Fortinet VPN-SSL exposées dans les environnements de nos clients. Au lieu de passer des heures à rechercher manuellement des interfaces potentiellement vulnérables au sein d'une solution EASM plus vaste, notre automatisation a rapidement identifié les interfaces qui étaient très susceptibles d'être vulnérables, exploitées et nécessitantes une correction urgente.

En tirant parti de Patrowl, nos clients ont pu réagir rapidement et efficacement, atténuant les risques associés à cette vulnérabilité.

Plus de 50 interfaces VPN-SSL ont été trouvées et tous nos clients ont été avertis avec toutes les informations qualifiées nécessaires, leur permettant de lancer les processus de déploiements des correctifs de sécurité, avant la publication du bulletin de sécurité Fortinet.

Patrowl's blog - Fortigate CVE-2023-27997

En priorisant les besoins de sécurité et de correctifs de nos clients, nous avons développé une méthode efficace pour vérifier automatiquement si les derniers correctifs de sécurité ont été installés.

Détection à l'aveugle

Le processus de développement et de stabilisation du code d'exploitation pour plus de 50 interfaces différentes, chacune utilisant différentes piles et versions, serait à la fois long et risqué. Considérant que la vulnérabilité semble être un débordement de la mémoire du tas, le potentiel de panne en production est considérablement élevé. Par conséquent, poursuivre dans cette voie n'était pas une option viable.

Cependant, il était crucial pour nous de trouver une solution qui permette une détection précise de l'état de la vulnérabilité sur les Fortinet. De cette façon, nos clients peuvent surveiller efficacement la progression des correctifs et évaluer leur exposition aux risques potentiels.

Comme approche alternative, nous avons envisagé de détecter la version des Fortinet, en boîte noire, d'un point de vue externe. Cependant, cette tâche est intrinsèquement difficile, en particulier pour les interfaces VPN-SSL qui génèrent un nombre minimal de requêtes. Pour compliquer encore les choses, les fabricants ne fournissent aucune indication concernant la version de l'appareil.

Pour y remédier, nous avons mis en place un environnement de laboratoire où nous avons configuré sept versions différentes de FortiOS, chacune avec le VPN-SSL activé. L'objectif était d'identifier les différences notables entre les interfaces VPN-SSL exposées entre ces versions. Voici un extrait mettant en lumière les variations constatées dans la version patchée 6.4.13 : Patrowl's blog - Fortigate CVE-2023-27997Patrowl's blog - Fortigate CVE-2023-27997

Comme vous pouvez le voir, voici quelques différences :

  1. Nous avons un condensat (hash) différent dans le paramètre q sur la demande login.js. Cependant, aucun modèle clair n'a été trouvé sur ce condensat et la version associée (tous les condensats étaient différents dans toutes les interfaces).
  2. Deuxième indice, la taille de https://x.x.x.x:3000/remote/login?lang=en  ( len 972458 contre 972088). Un rapide diff nous permet de voir que sur les dernières versions, un paramètre a été ajouté à la page principale :
$diff 6.4.12.result 6.4.13.result
9592a9593
> "confirm_pkg_upgrade_invalid_signature": "***WARNING: This package file has
no signature for validation.*** <br>Fortinet cannot verify the authenticity
of this package and therefore there may be a risk that the package contains
code unknown to Fortinet. In short, Fortinet cannot validate the package and
makes no warranties or representations concerning the package.",

Parfait ! Après avoir effectué quelques vérifications sur d'autres versions (7.0.12, 7.2.5, etc.), il a été confirmé que cette clé particulière n'était présente que dans la dernière version corrigée. Avec ces informations, nous pouvons procéder à la création d'un modèle de vérification rapide et basique permettant de déterminer avec précision si les interfaces sont corrigées ou non. Cette approche garantit que nous pouvons effectuer les vérifications nécessaires sans risquer d'interruptions de service ou d'impacts négatifs sur les VPN-SSL utilisés dans l'environnement des entreprises.

id: cve-2023-27997

info:
  name: Detect unpatched (cve-2023-27997) FortiOS VPN Interface
  author: Patrowl
  severity: critical
  description: A heap-based buffer overflow vulnerability [CWE-122] in
FortiOS version 7.2.4 and below, version 7.0.11 and below, version 6.4.12 and
below, version 6.0.16 and below and FortiProxy version 7.2.3 and below,
version 7.0.9 and below, version 2.0.12 and below, version 1.2 all versions,
version 1.1 all versions SSL-VPN may allow a remote attacker to execute
arbitrary code or commands via specifically crafted requests.

  reference:
    - [https://blog.lexfo.fr/xortigate-cve-2023-27997.html](https://blog.lexfo.fr/xortigate-cve-2023-27997.html){:target="_blank"}
    - [https://nvd.nist.gov/vuln/detail/CVE-2023-27997](https://nvd.nist.gov/vuln/detail/CVE-2023-27997){:target="_blank"}
    - [https://www.fortiguard.com/psirt/FG-IR-23-097](https://www.fortiguard.com/psirt/FG-IR-23-097){:target="_blank"}
  classification:
    cvss-metrics: CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H
    cvss-score: 9.8
    cve-id: CVE-2023-27997
  tags: cve,cve2023,fortinet,fortios

http:
  - method: GET
    redirects: true
    max-redirects: 3
    path:
      - '{{BaseURL}}/remote/fgt_lang?lang=en'

    matchers-condition: and
    matchers:
      - type: status
        status:
          - 200
      - type: word
        words:
          - "confirm_pkg_upgrade_invalid_signature"
        part: body
        negative: true
      - type: word
        words:
          - "confirm_not_sig"
        part: body

Remarques : Le modèle a été testé et validé pour les versions 7.4.0 (et inférieure), 7.0.12 (et inférieure), 6.4.13 (et inférieure). Mais toutes les nouvelles mises à jour sur d'autres branches majeures semblent inclure le nouveau mot-clé.

Conclusion

Nos clients ont efficacement mis à jour 90% des interfaces Fortinet VPN-SSL détectées en 2 jours et tous les correctifs ont été automatiquement vérifiés par Patrowl.

En utilisant l'approche pragmatique EASM, couplée à un Pentest-as-a-Service automatisé et adapté. Ces mesures ont été prises avant même la publication du bulletin de sécurité Fortinet. Ce succès démontre l'efficacité de notre approche dans la résolution des vulnérabilités de sécurité.

Au fil des ans, les produits Fortinet sont devenus des cibles de choix pour les attaques externes automatisées, comme en témoignent les nombreux CVE critiques et les codes d'exploitation facilement disponibles, comme l'exemple notable de 2022.

Cependant, la façon dont Fortinet gère les bulletins de sécurité et les correctifs suscite des inquiétudes. La publication du bulletin de sécurité quelques jours seulement après le correctif ne fournit pas suffisamment d'informations aux équipes informatiques pour gérer efficacement le processus de correctif, en particulier lorsqu'il s'agit d'interfaces VPN-SSL sensibles sur les appliances de production.

Alors que nous étions conscients de la criticité des CVE sur la base de notre connaissance des vulnérabilités récentes de Fortinet, le processus devrait être révisé pour garantir que les équipes informatiques aient accès à toutes les informations pertinentes. De cette façon, ils peuvent prendre des décisions éclairées concernant la gravité et l'exploitabilité des vulnérabilités corrigées et déterminer le moment approprié pour appliquer les correctifs.

Réferences

https://www.fortiguard.com/psirt/FG-IR-23-097
https://www.bleepingcomputer.com/news/security/fortinet-new-fortios-rce-bug-may-have-been-exploited-in-attacks/
https://twitter.com/cfreal_/status/1667852157536616451
https://blog.lexfo.fr/xortigate-cve-2023-2797.html

Blog: Programme CaRE : les établissements de santé comblent le retard en cybersécurité avec Patrowl

Blog: Lire les articles privés de plus de 700 000 sites

Blog: D'un warning à une CSRF impactant plus de 3 millions de sites