Introduction
Les failles d'injection comptent parmi les problèmes de sécurité logicielle les plus dangereux et les plus anciens. Elles se produisent lorsque des données non fiables sont transmises directement dans des requêtes, des commandes ou des interpréteurs de code sans validation ou échappement appropriés. Cela peut conduire à un accès non autorisé, à la corruption de données ou à la compromission complète du système.
Alors que les outils SAST traditionnels se concentrent sur les langages courants tels que JavaScript, Python ou Java, le moteur de qualité de code d'Aikido, alimenté par l'IA, détecte désormais les vulnérabilités d'injection dans des langages que les outils SAST ne détectent généralement pas, 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, les requêtes ou les commandes dangereuses sont détectées avant d'être mises en production.
Pourquoi c'est important
Les failles d'injection restent l'une des OWASP Top 10 de l'OWASP.
Ils sont faciles à introduire mais souvent difficiles à détecter par un examen manuel, en particulier dans les langues anciennes ou moins répandues.
Sans garanties :
- 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 pris en charge si l'exécution du code est possible.
En appliquant cette règle, chaque élément de code qui construit des requêtes ou des commandes doit utiliser des API paramétrées, des bibliothèques sûres ou des fonctions d'échappement, ce qui réduit considérablement la surface d'attaque.
Exemple de non-conformité
Vous trouverez ci-dessous un exemple en PowerShell, mais le même problème se pose dans de nombreuses langues.
# Non sécurisé : entrée utilisateur directement concaténée dans une commande système
$userInput = Read-Host "Entrez le nom d'utilisateur"
Expression d'invocation ("net user " + $userInput)Pourquoi ce n'est pas sûr : Invoke-Expression exécute une commande construite dynamiquement.
Un attaquant pourrait saisir john && del C:\* /Q et provoquer un comportement destructeur.
✅ Exemple de conformité
# 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 transmis sous la forme d'une liste, et non d'une chaîne concaténée.
- L'entrée est validée à l'aide d'une liste d'expressions rationnelles.
- Aucune donnée non fiable n'atteint jamais le shell sans être codée.
Essayez-le en Aikido Sécurité
Vous pouvez activer cette règle directement dans l'outil Code Quality d'Aikido.
Une fois activé, il recherche automatiquement des modèles d'injection dans tous les langages pris en charge, y compris ceux qui ne bénéficient pas de la couverture native de SAST.
Chaque fois qu'un développeur ouvre une demande d'extraction :
- Le système examine les codes nouveaux et modifiés.
- Il signale toute utilisation de la concaténation ou de l'interpolation de chaînes de caractères dans les appels de commandes, de requêtes ou d'interprètes.
- Le rapport met en évidence la ligne exacte et fournit une brève suggestion de correction (par exemple, "Utiliser des API paramétrées ou des entrées validées").
Cette règle s'applique à chaque PR, ce qui garantit une protection cohérente, même dans les dépôts multilingues.
Conclusion
La construction de chaînes dynamiques est l'une des erreurs les plus simples qui peuvent entraîner des failles de sécurité critiques.
En détectant les concaténations dangereuses et en appliquant des pratiques de construction de requêtes sûres, cette règle permet d'éviter des classes entières d'attaques par injection avant qu'elles n'atteignent le stade de la production.
Quelle que soit la langue, l'analyse intelligente d'Aikido associe la protection statique et la protection assistée par l'IA pour couvrir plus de terrain que les outils traditionnels ne pourraient jamais le faire.
.avif)
