Points clés
- Catégorie
- Sécurité et validation
- Types d’entrée
- textarea, text, number
- Type de sortie
- json
- Couverture des échantillons
- 4
- API disponible
- Yes
Vue d’ensemble
Le Scanner ReDoS pour regex est un outil de sécurité conçu pour analyser vos expressions régulières et détecter les risques de backtracking catastrophique. En combinant des heuristiques statiques et la simulation d'entrées malveillantes (near-miss inputs), il évalue la vulnérabilité de vos motifs et vous propose des alternatives plus sûres pour protéger vos applications contre les attaques par déni de service (ReDoS).
Quand l’utiliser
- •Lors de l'audit de sécurité du code source pour identifier les expressions régulières vulnérables avant le déploiement en production.
- •Lors de l'acceptation d'expressions régulières fournies par les utilisateurs ou de la validation de champs de saisie complexes.
- •Pour optimiser les performances des regex existantes en vérifiant leur temps d'exécution face à des chaînes de caractères malveillantes.
Comment ça marche
- •Collez une ou plusieurs expressions régulières dans le champ principal, à raison d'une par ligne, sans les barres obliques (slashes) d'encadrement.
- •Définissez les options facultatives telles que les drapeaux (flags), la longueur maximale de l'entrée malveillante et le nombre de tours de simulation.
- •L'outil exécute une analyse statique et génère des chaînes de test spécifiques pour mesurer le temps d'exécution et détecter les boucles infinies.
- •Consultez le rapport JSON généré pour découvrir le niveau de risque de chaque regex et obtenir des suggestions de réécriture sécurisées.
Cas d’usage
Exemples
1. Audit d'une regex de validation de login
Développeur Backend- Contexte
- Un développeur souhaite s'assurer que la regex utilisée pour valider les identifiants des utilisateurs ne peut pas être exploitée pour faire tomber le serveur d'authentification.
- Problème
- Vérifier si une regex contenant des groupes répétés est vulnérable au backtracking catastrophique.
- Comment l’utiliser
- Collez la regex `^(\w+\s?)*$` dans la liste, laissez les drapeaux vides, et lancez l'analyse avec 200 tours de simulation.
- Configuration d’exemple
-
regexList: "^(\w+\s?)*$" maxEvilInputLength: 32 simulationRuns: 200 - Résultat
- Le rapport JSON identifie la regex comme ayant un niveau de risque 'critical' en raison de quantificateurs imbriqués et propose une alternative sécurisée.
2. Vérification d'un lot de regex de filtrage
Ingénieur Sécurité- Contexte
- L'équipe de sécurité doit auditer une liste d'expressions régulières utilisées dans le pare-feu applicatif pour bloquer les requêtes malveillantes.
- Problème
- Évaluer rapidement plusieurs regex pour s'assurer qu'aucune d'entre elles ne ralentit le traitement des requêtes légitimes.
- Comment l’utiliser
- Collez toutes les regex dans le champ principal (une par ligne), définissez la longueur maximale d'entrée malveillante sur 64 pour des tests plus poussés, et exécutez le scan.
- Configuration d’exemple
-
regexList: "(a+)+$\n^[0-9]+[a-z]+$" maxEvilInputLength: 64 simulationRuns: 500 - Résultat
- L'outil génère un résumé indiquant quelles regex sont sûres et lesquelles présentent un risque de ReDoS, permettant à l'ingénieur de cibler ses corrections.
Tester avec des échantillons
regexFAQ
Qu'est-ce qu'une attaque ReDoS ?
Une attaque ReDoS (Regular Expression Denial of Service) exploite des expressions régulières mal conçues en leur fournissant des chaînes spécifiques qui provoquent un temps de traitement exponentiel, bloquant ainsi le serveur.
Comment l'outil détecte-t-il le backtracking catastrophique ?
Il utilise une combinaison d'analyse statique pour repérer les quantificateurs imbriqués et de tests dynamiques en simulant des entrées malveillantes (near-miss) pour mesurer les temps d'exécution.
Puis-je tester plusieurs regex en même temps ?
Oui, vous pouvez coller une liste d'expressions régulières dans le champ principal, en veillant à n'en mettre qu'une seule par ligne.
À quoi sert le paramètre de longueur maximale d'entrée malveillante ?
Il définit la taille maximale de la chaîne de caractères générée pour tester la regex. Une chaîne plus longue permet de mieux mettre en évidence les ralentissements exponentiels.
L'outil corrige-t-il automatiquement mes regex ?
L'outil ne modifie pas votre code directement, mais il fournit des suggestions de réécriture plus sûres dans le rapport JSON pour vous aider à corriger les vulnérabilités.