Skip to content
KitploitKITPLOIT
OutilsExploitsBlog
Log in
Soumettre
OutilsExploitsBlog
Soumettre

Outils de Hacking, PenTest et Cybersécurité pour votre Arsenal de Sécurité !

Kitploit est un répertoire d'outils de hacking, de cybersécurité et de pentesting. Découvrez les dernières mises à jour des projets pour trouver des vulnérabilités, analyser des systèmes, automatiser les tests et renforcer votre sécurité.

FluxContactConfidentialité© 2026 Kitploit

Répertoire d'outils

Catégories

Voir toutes les catégories
Loading categories
CVE-2026-42533-Config-Scanner — Scanner de configuration statique qui signale les configurations nginx vulnérables au bug complex_value two-pass capture-clobbering (regex map + regex capture → heap overflow / info leak). | Kitploit
Outils/GitHubGitHub/0xcyberstan/cve-2026-42533-config-scanner
Analyse StatiqueScanners de VulnérabilitésAnalyse de CodeAudit de ConfigurationSécurité WebDevSecOpsMauvaise Configuration
GitHub0xcyberstan/cve-2026-42533-config-scanner

CVE-2026-42533-Config-Scanner

Scanner de configuration statique qui signale les configurations nginx vulnérables au bug complex_value two-pass capture-clobbering (regex map + regex capture → heap overflow / info leak).

Voir le dépôt
29540il y a 3 moisVérifié par Kitploit

Populaires

Voir tout →

Découvrez les outils les plus utilisés par notre communauté.

Explorer tous les outils

Parcourez notre collection d'outils

Voir tous les outils →
Partager

Scanner de capture-clobber pour nginx

Un scanner statique en lecture seule qui signale les configurations nginx vulnérables à la classe de bugs de capture-clobbering à deux passes complex_value (avis F5/nginx SIRT, juillet 2026). Il analyse votre configuration et signale le motif vulnérable avec la raison et l'emplacement. Il n'exploite rien et ne touche pas au serveur en cours d'exécution.

Fichier unique, bibliothèque standard uniquement, Python 3.6+.

Analyse complète de la vulnérabilité : https://cyberstan.co.uk/nginx-rce/

Le bug

nginx construit de nombreuses valeurs de directives en deux passes. Une passe LEN mesure la longueur et alloue un tampon, puis une passe VALUE y écrit. Les captures regex ($1 à $9, ou nommées (?P<name>...)) sont lues depuis un état partagé par requête. Un map dont la clé de correspondance est une expression régulière exécute une nouvelle correspondance PCRE au moment où sa variable est évaluée, et cette correspondance écrase l'état de capture partagé. Si une capture est mesurée dans la passe LEN puis qu'un map regex s'exécute avant que la passe VALUE ne réécrive cette capture, les deux passes divergent :

  • le clobber rend la valeur plus longue que mesurée : débordement de tampon sur le tas (écriture hors limites contrôlée par l'attaquant)
  • le clobber rend la valeur plus courte que mesurée : tas non initialisé renvoyé au client (fuite d'informations sur les pointeurs libc/tas)

Les deux directions sont déclenchables à distance lorsque l'entrée du map est influencée par l'attaquant ($request_body, $http_*, $arg_*, $uri, $ssl_preread_server_name, etc.).

Ce qui est considéré comme vulnérable

Le scanner signale un emplacement ou un serveur lorsque tous ces éléments aboutissent dans un même tampon à deux passes, dans l'ordre exploitable :

  1. Source de capture : un location ~ regex, server_name ~, rewrite, if (... ~ ...), ou un map regex avec un groupe de capture.
  2. Déclencheur de clobber : un map (http ou stream) avec une clé de correspondance regex ~ ou ~*, référencé par sa variable de sortie.
  3. Puits à deux passes utilisant à la fois une référence de capture et la variable de map regex :
    • directives à valeur unique (return, set, add_header, proxy_method, proxy_pass, rewrite, index, et autres) : les deux références dans la même valeur.
    • les familles param/header (proxy_set_header, proxy_set_body, fastcgi_param, scgi_param, uwsgi_param, grpc_set_header) : celles-ci construisent un tampon par requête pour toute la famille, donc les deux références peuvent se trouver dans des directives séparées au sein du même emplacement.
  4. Ordre : la capture doit être évaluée avant le map regex. Un map regex s'exécute une fois et met en cache, donc un map-avant-capture lit un état cohérent et n'est pas vulnérable. Le scanner les signale comme cleared (sûr mais fragile, ne pas réordonner).

Utilisation

# scan a single config (follows include directives by default)
python3 nginx_capture_clobber_scan.py /etc/nginx/nginx.conf

# scan a directory (uses nginx.conf if present, else all *.conf)
python3 nginx_capture_clobber_scan.py /etc/nginx/

# scan several roots
python3 nginx_capture_clobber_scan.py site-a.conf site-b.conf

# machine-readable output
python3 nginx_capture_clobber_scan.py /etc/nginx/nginx.conf --json

# do not expand include directives
python3 nginx_capture_clobber_scan.py /etc/nginx/nginx.conf --no-includes

Options

OptionEffet
--jsonÉmet un rapport JSON au lieu de texte.
--no-includesNe pas suivre les directives include.

Codes de sortie

CodeSignification
0Aucune configuration vulnérable trouvée.
1Au moins une configuration vulnérable trouvée.
2Erreur d'utilisation (aucun chemin fourni, ou aucun trouvé).

Utilisable en CI, puisqu'une configuration vulnérable renvoie un code non nul :

python3 nginx_capture_clobber_scan.py /etc/nginx/nginx.conf || echo "review needed"

Sortie

Le mode texte affiche, pour chaque résultat : le fichier et la ligne, la portée englobante, la directive de sink, les variables de capture et de map impliquées, la map déclencheuse, et une raison sur une ligne. Une section effacée liste les coexistences en ordre sûr. --json produit :

{
  "vulnerable": true,
  "findings": [
    {
      "file": "/etc/nginx/conf.d/api.conf",
      "line": 12,
      "scope": "location ~ ^/api/(.+)$",
      "directive": "proxy (family buffer)",
      "captures": ["$1"],
      "map_vars": ["$is_bot"],
      "triggers": ["$is_bot <- regex-map on $http_user_agent [nginx.conf:30]"],
      "reason": "..."
    }
  ],
  "cleared_safe_order": [],
  "regex_maps": [],
  "missing_includes": []
}

Corriger ce qu'il détecte

  1. Appliquez le correctif du fournisseur (nginx 1.30.4 stable / 1.31.3 mainline, NGINX Plus R36 P7 / 37.0.3.1). C'est la seule correction complète. Le correctif ajoute une garde de limite (ngx_http_script_check_length()) qui empêche la passe VALUE d'écrire au-delà du tampon alloué, et calcule la longueur de la chaîne renvoyée à partir des octets réellement écrits plutôt que de la mesure de la passe LEN, fermant ainsi à la fois la direction du débordement et celle de la fuite d'informations.
  2. Durcissement de configuration intermédiaire (défense en profondeur, ne remplace pas le correctif) :
    • Ne référencez pas une variable map de type regex dans la même location ou le même tampon qu'une référence $1 à $9 ou à une capture nommée.
    • Ne réutilisez pas le même groupe (?P<name>...) à travers plusieurs maps regex.
    • Gardez les références de capture et les références de map regex hors de la même famille proxy_set_header ou fastcgi_param.

Limitations

  • Analyse statique : il lit la configuration, pas le comportement à l'exécution. Il ne peut pas résoudre les valeurs produites par des variables définies dynamiquement via set.
  • Les cibles include illisibles (par exemple des chemins absolus qui n'existent pas localement) sont signalées sous missing_includes, et non ignorées silencieusement. Exécutez-le sur l'hôte où la configuration se résout pour une couverture complète.
  • Un signalement de capture-avant-map peut être désamorcé à l'exécution si cette variable de map a déjà été évaluée plus tôt dans la même requête (elle serait déjà en cache). Le scanner les signale tout de même, ce qui est le choix conservateur pour un auto-scan de sécurité.

Référence

Analyse de la vulnérabilité et chaîne d'exploitation : https://cyberstan.co.uk/nginx-rce/

Télécharger l’outil