Aikido

Pourquoi il faut détecter les vulnérabilités potentielles par injection dans votre code

Sécurité

Introduction

Les failles d’injection figurent parmi les problèmes de sécurité logicielle les plus dangereux et les plus persistants. Elles surviennent lorsqu'une entrée non fiable est transmise directement à des requêtes, des commandes ou des interpréteurs de code sans validation ou échappement approprié. Cela peut entraîner un accès non autorisé, une corruption de données ou une compromission complète du système.

Alors que les outils SAST traditionnels se concentrent sur les langages courants comme JavaScript, Python ou Java, le moteur de qualité de code basé sur l'IA d'Aikido détecte désormais les vulnérabilités d'injection dans des langages que les outils SAST manquent généralement, tels que Perl, Haskell, Groovy, Erlang, Zig, Delphi, PowerShell, COBOL, ABAP, Visual Basic, Pascal et ColdFusion.

Cette règle garantit que, quelle que soit la langue utilisée par votre équipe, la construction de requêtes ou de commandes non sécurisées est détectée avant qu'elle n'atteigne la production.

Pourquoi c'est important

Les failles d’injection restent l'un des Top 10 OWASP des risques de sécurité.

Ils sont faciles à introduire mais souvent difficiles à détecter par une revue manuelle, surtout dans les langages hérités ou moins courants.

Sans mesures de protection :

  • Les attaquants peuvent injecter des commandes SQL ou OS dans des chaînes construites dynamiquement.
  • Les données sensibles peuvent être exfiltrées ou détruites.
  • Des systèmes entiers peuvent être compromis si l'exécution de code est possible.

En appliquant cette règle, chaque morceau de code qui construit des requêtes ou des commandes doit utiliser des API paramétrées, des bibliothèques sécurisées ou des fonctions d'échappement, réduisant ainsi drastiquement la surface d'attaque.

❌ Exemple non conforme

Ci-dessous un exemple en PowerShell, mais le même problème apparaît dans de nombreux langages.

# Non sécurisé : l'entrée utilisateur est directement concaténée dans une commande système
$userInput = Read-Host "Enter username"
Invoke-Expression ("net user " + $userInput)

Pourquoi c'est dangereux : Invoke-Expression exécute une commande construite dynamiquement.

Un attaquant pourrait saisir john && del C:\* /Q et provoquer un comportement destructeur.

✅ Exemple conforme

# Safe: use parameterized or validated command execution
$userInput = Read-Host "Enter username"

if ($userInput -match '^[a-zA-Z0-9_-]+$') {
    Start-Process "net" -ArgumentList "user", $userInput
} else {
    Write-Host "Invalid input"
}

Pourquoi c'est sûr :

  • Les arguments de commande sont passés sous forme de liste, non pas comme une chaîne concaténée.
  • L'entrée est validée à l'aide d'une regex de liste blanche.
  • Aucune donnée non fiable n'atteint jamais le shell sans être échappée.

Essayez-le dans Aikido Security

Vous pouvez activer cette règle directement dans l'outil Code QualityAikido.

Une fois active, elle recherche automatiquement les schémas d'injection dans tous les langages pris en charge, y compris ceux sans couverture SAST native.

Chaque fois qu'un développeur ouvre une pull request :

  • Le système examine le code nouveau et modifié.
  • Il signale toute utilisation de concaténation ou d'interpolation de chaînes dans les appels de commande, de requête ou d'interpréteur.
  • Le rapport met en évidence la ligne exacte et fournit une courte suggestion de correction (par exemple, « Utilisez des API paramétrées ou des entrées validées »).

Cette règle s'exécute sur chaque PR, assurant une protection cohérente même dans les dépôts multilingues.

Conclusion

La construction dynamique de chaînes est l'une des erreurs les plus simples pouvant entraîner des failles de sécurité critiques.

En détectant les concaténations non sécurisées et en imposant des pratiques de construction de requêtes sécurisées, cette règle prévient des classes entières d'attaques par injection avant qu'elles n'atteignent la production.

Quelle que soit la langue, l'analyse intelligente Aikidocombine une protection statique et assistée par IA pour couvrir un champ d'action plus large que les outils traditionnels.

FAQ

Des questions ?

Quels types d'injections cette règle détecte-t-elle ?

Il détecte les schémas d'injection SQL, de commande, LDAP et de code, partout où des données contrôlées par l'utilisateur sont fusionnées dans des chaînes exécutables.

Fonctionne-t-elle uniquement pour les langages SAST pris en charge ?

Non. Cette règle étend la couverture aux langages où le SAST n'existe pas ou manque de profondeur, par exemple, PowerShell, COBOL ou Haskell.

Quelle est la rigueur de la détection ?

Il signale les constructions à haut risque telles que la concaténation ou l'interpolation de chaînes dans les appels de base de données, de shell ou d'interpréteur. Les faux positifs sont rares car la règle est sensible au langage.

Comment Aikido la remédiation ?

Lorsqu'une violation est détectée, l'outil suggère des alternatives plus sûres, telles que l'utilisation de requêtes préparées, d'API paramétrées ou une validation basée sur une liste blanche.

Pourquoi ne pas se fier uniquement à la validation des entrées ?

La validation seule ne peut garantir la sécurité. Une paramétrisation appropriée garantit que les entrées non fiables ne modifient jamais la structure des requêtes ou des commandes.

Sécurisez-vous maintenant.

Sécuriser votre code, votre cloud et votre runtime dans un système centralisé unique.
Détectez et corrigez les vulnérabilités rapidement et automatiquement.

Pas de carte de crédit requise | Résultats du scan en 32 secondes.