Aikido

Détecter les vulnérabilités potentielles en matière d'injection

Sécurité

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.

FAQ

Vous avez des questions ?

Quels types d'injections cette règle permet-elle de détecter ?

Il détecte les modèles d'injection SQL, de commande, LDAP et de code, c'est-à-dire tout endroit où des données contrôlées par l'utilisateur sont fusionnées avec des chaînes exécutables.

Cela ne fonctionne-t-il que pour les langues SAST prises en charge ?

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

Quelle est la rigueur de la détection ?

Elle signale les constructions à haut risque telles que la concaténation ou l'interpolation de chaînes de caractères dans les appels à la base de données, à l'interpréteur de commandes ou à l'interpréteur. Les faux positifs sont rares car la règle tient compte de la langue.

Comment l'Aïkido gère-t-il la remédiation ?

Lorsqu'une violation est constatée, l'outil propose des solutions plus sûres, telles que l'utilisation d'instructions préparées, d'API paramétrées ou d'une validation basée sur une liste blanche.

Pourquoi ne pas s'appuyer uniquement sur la validation des entrées ?

La validation seule ne peut pas garantir la sécurité. Un paramétrage approprié permet de s'assurer qu'une entrée non fiable ne modifie jamais la structure des requêtes ou des commandes.

Obtenir la sécurité gratuitement

Sécurisez votre code, votre cloud et votre environnement d'exécution dans un système central.
Trouvez et corrigez rapidement et automatiquement les vulnérabilités.

Aucune carte de crédit n'est requise | Scanner les résultats en 32sec.