Aller au contenu principal
Expert Cybersécurité & IAv9.0
Centres de ressources conformité
Besoin d'un accompagnement expert ?
Devis personnalisé sous 24h — audit, conformité, incident
Checklists Sécurité — Audit & Durcissement
Formats disponibles
📄 PDF 📊 Excel 🌐 Web

11 checklists professionnelles couvrant 2 200+ points de contrôle. Téléchargement gratuit, aucune inscription.

Custom Rules SAST

devsecops

Définition

Les Custom Rules SAST (règles SAST personnalisées) sont des règles de détection de vulnérabilités écrites spécifiquement pour les patterns de code, les frameworks, ou les politiques de sécurité propres à une organisation, en complément des règles prédéfinies des outils SAST. Là où les règles standard couvrent les vulnérabilités universelles (injection SQL, XSS), les règles personnalisées permettent de détecter les patterns dangereux spécifiques au contexte de l'organisation : utilisation d'APIs internes dépréciées, violation des politiques de sécurité locales, ou patterns propres à une technologie maison. Les scénarios typiques justifiant des règles SAST personnalisées incluent : la détection de l'utilisation d'APIs internes dépréciées ou marquées "unsafe" (une fonction legacy qui effectue une requête SQL sans paramètres préparés, qu'une règle custom peut détecter à chaque appel), la vérification de l'utilisation correcte de bibliothèques de sécurité internes (s'assurer que tous les appels à la base de données passent par l'ORM de l'organisation et non des requêtes SQL directes), la détection de patterns de secrets spécifiques à l'organisation (format des clés API internes), et l'enforcement de conventions de sécurité locales (toujours utiliser le logger de sécurité interne plutôt que System.out.println). Les outils SAST modernes facilitent la création de règles personnalisées. Semgrep est particulièrement adapté : sa syntaxe YAML/patterns basée sur la structure du code source (pas du texte brut) permet de créer des règles précises sans connaissance approfondie de la théorie des compilateurs. Une règle Semgrep peut détecter, par exemple, tous les appels à db.query() avec un argument de type string construit par concaténation, signalant une injection SQL potentielle, avec une précision plus élevée qu'une règle regex naïve. La gouvernance des règles personnalisées SAST inclut : le versionnage des règles dans un dépôt dédié (règles traitées comme du code avec PR reviews), des tests unitaires pour chaque règle (cas de test "doit détecter" et "ne doit pas détecter"), et un processus de contribution permettant aux Security Champions des équipes de proposer des règles spécifiques à leur domaine.

Écrire une règle Semgrep personnalisée

Structure d'une règle Semgrep personnalisée en YAML : rules: - id: myorg-unsafe-db-query (identifiant unique), message: "Utiliser db.query_safe() au lieu de db.query() direct" (description actionnable), severity: ERROR, languages: [python], patterns: - pattern: db.query($QUERY) - pattern-not: db.query_safe(...) (exclure les appels sûrs), - pattern-inside: def $FUNC(...): ... (limiter la portée), fix: db.query_safe($QUERY) (suggestion de correction automatique). Les opérateurs patterns, pattern-not, pattern-inside, pattern-regex permettent une précision chirurgicale.

Tests unitaires des règles SAST personnalisées

Chaque règle SAST personnalisée doit avoir des tests unitaires pour valider son comportement : fichiers de test contenant des exemples qui doivent déclencher la règle (annotés # ruleid: myorg-unsafe-db-query) et des exemples qui ne doivent pas la déclencher (annotés # ok: myorg-unsafe-db-query). La commande semgrep --test chemin/vers/tests/ valide que toutes les règles détectent exactement ce qu'elles sont supposées détecter. Ces tests préviennent les régressions lors des mises à jour des règles ou de l'outil.

Distribution des règles personnalisées dans l'organisation

Les règles SAST personnalisées d'une organisation sont distribués via : un dépôt Git central (myorg/semgrep-rules) contenant toutes les règles validées, référencé dans les configurations CI de tous les projets (semgrep --config https://raw.githubusercontent.com/myorg/semgrep-rules/main/rules/ .), et mis à jour automatiquement via des dépendances versionnées. Des règles par domaine (myorg/semgrep-rules/api/, myorg/semgrep-rules/auth/, myorg/semgrep-rules/data/) permettent à chaque équipe de ne charger que les règles pertinentes à son contexte technologique.

Articles liés

Un projet cybersécurité ?

Expert dispo · Réponse 24h

Devis