Skip to main content

Aperçu

Le SAST natif de l’IA est la solution de scan de code nouvelle génération de Corgea. Elle détecte et corrige les vulnérabilités du code applicatif, en mettant particulièrement l’accent sur les failles de logique métier, d’authentification et de code. Contrairement aux outils traditionnels de test statique de sécurité des applications (SAST), le SAST natif de l’IA s’appuie sur des techniques avancées pilotées par l’IA pour améliorer la précision de la détection, réduire les faux positifs et fournir des informations directement exploitables aux développeurs et aux équipes de sécurité. En combinant la puissance des grands modèles de langage (LLM) et l’analyse statique, le SAST natif de l’IA acquiert une compréhension contextuelle plus fine du code et détecte des vulnérabilités qui peuvent échapper aux outils SAST classiques. Ce document présente son fonctionnement technique, les vulnérabilités qu’il peut détecter et son intégration aux workflows de développement.

Caractéristiques clés

  • Combine les capacités de raisonnement des LLM avec l’analyse statique du code
  • Détecte avec précision les vulnérabilités grâce à une compréhension contextuelle
  • Identifie aussi bien les vulnérabilités de logique métier que les vulnérabilités SAST classiques
  • Un faible taux de faux positifs réduit le bruit dans les résultats d’analyse
  • Des analyses exploitables avec des explications claires
  • Intégration fluide avec les pipelines CI/CD et les pull requests
  • Détection des vulnérabilités en logique métier
  • Failles d’authentification et d’autorisation
  • Détection complète des vulnérabilités dans plusieurs catégories

Classes de vulnérabilité détectées

Le SAST natif de l’IA excelle dans la détection des vulnérabilités de logique métier, qui échappent souvent aux outils SAST traditionnels. Voici quelques-unes des vulnérabilités qu’il détecte :
  • Contrôle d’accès défaillant (CWE-639): absence de contrôles d’autorisation permettant un accès non autorisé
  • Références directes non sécurisées à des objets (CWE-639): accès direct à des objets sans autorisation adéquate
  • Path traversal (CWE-22): traversée de répertoires permettant d’accéder à des fichiers non autorisés
  • Autorisation non sécurisée (CWE-285): contrôles d’accès insuffisants
  • Escalade des privilèges (CWE-269): Gestion inappropriée des privilèges
  • Contrôle d’accès au niveau de fonction manquant (CWE-285): Fonctions administratives non protégées
  • Injection SQL (CWE-89): requêtes SQL non assainies permettant de manipuler la base de données
  • Injection de commandes (CWE-78): injection de commandes du système d’exploitation
  • Cross-site scripting (XSS) (CWE-79): injection de scripts malveillants dans les pages web
  • Injection LDAP (CWE-90): manipulation de requêtes LDAP
  • Injection XML (CWE-91): manipulation de contenu XML
  • Injection de code (CWE-94): Vulnérabilités d’exécution dynamique de code
  • Injection de langage d’expression (CWE-917): Injection dans les langages d’expression
  • Injection de template (CWE-1336): injection de templates côté serveur
  • Authentification non sécurisée (CWE-287): absence de MFA ou gestion non sécurisée des tokens
  • Authentification défaillante (CWE-287): Mécanismes d’authentification faibles
  • Mauvaise gestion des sessions (CWE-384): Mauvaise gestion de l’ID de session
  • Gestion des identifiants (CWE-255): stockage ou transmission inadéquats des identifiants
  • Exigences de mot de passe faibles (CWE-521): Application insuffisante de la complexité des mots de passe
  • Stockage de données non sécurisé (CWE-311): Chiffrement faible ou stockage en clair
  • Cryptographie faible (CWE-327): Utilisation d’algorithmes cryptographiques défaillants ou risqués
  • Entropie insuffisante (CWE-330): Génération prévisible de nombres aléatoires
  • Secrets codés en dur (CWE-798): Identifiants intégrés
  • Exposition aux données sensibles (CWE-200): Fuites d’informations
  • Validation incorrecte des certificats (CWE-295): échecs de validation SSL/TLS
  • Traitement non sécurisé des données (CWE-20): validation insuffisante des entrées
  • Encodage incorrect des sorties (CWE-116) : échappement insuffisant des sorties
  • Affectation de masse (CWE-915): liaison de paramètres de requête à des objets internes
  • Entité externe XML (XXE) (CWE-611): vulnérabilités des parseurs XML
  • Désérialisation des données non fiables (CWE-502): Désérialisation d’objets non sécurisés
  • Mauvaise configuration de sécurité (CWE-16): Mauvais réglages de sécurité
  • Configurations par défaut (CWE-1188): Utilisation de paramètres par défaut non sécurisés
  • En-têtes de sécurité manquants (CWE-693): absence d’en-têtes HTTP de protection
  • Messages d’erreur trop détaillés (CWE-209): divulgation d’informations dans les erreurs
  • Listing de répertoire (CWE-548): exposition du contenu des répertoires
  • Vulnérabilités de la logique métier (CWE-840): Défauts qui permettent aux utilisateurs de manipuler ou de contourner des processus critiques
  • Vulnérabilités de la logique de code (CWE-633): Erreurs dans les conditions ou boucles menant à des comportements inattendus
  • Vulnérabilités dépendantes du contexte (CWE-696): Erreurs basées sur le temps ou dépendantes de l’état
  • Conditions de concurrence (CWE-362): synchronisation ou ordre des opérations non maîtrisé
  • Attaques temporelles (CWE-208): fuites d’informations fondées sur le temps d’exécution
  • SSRF (CWE-918): falsification de requête côté serveur permettant des requêtes internes non autorisées
  • Redirection d’URL (CWE-601): redirections et transferts non validés
  • DNS rebinding (CWE-350): attaques SSRF fondées sur le DNS
  • Journalisation incorrecte (CWE-532): Données sensibles dans les journaux
  • Journalisation insuffisante (CWE-778): Journalisation des événements de sécurité manquants
  • Mauvaise gestion des erreurs (CWE-209): Fuites d’informations dans les messages d’erreur
  • Gestion incorrecte des exceptions (CWE-248): Risques de sécurité liés à une mauvaise gestion des exceptions
  • Trace d’audit manquante (CWE-778): Suivi insuffisant de l’activité
  • Code malveillant (CWE-506): Actions nuisibles non autorisées
  • Portes dérobées (CWE-288): Mécanismes d’accès cachés
  • Bombes à retardement (CWE-511): Actions malveillantes déclenchées
  • Attaques sur la chaîne d’approvisionnement (CWE-1357): Dépendances ou mises à jour compromises
  • Exfiltration de données (CWE-319): Transmission de données non autorisée
  • Collecte de données non éthique (CWE-359): Collecte de données inappropriée
  • Activité réseau malveillante (CWE-293): connexions suspectes
  • Minage de cryptomonnaies (CWE-400): Utilisation non autorisée des ressources
  • Épuisement des ressources (CWE-400): Refus de service par consommation de ressources
Outre les vulnérabilités de logique métier, le SAST natif de l’IA détecte également les failles de sécurité courantes couvertes par les scans SAST classiques, soit environ 900 Common Weakness Enumerations (CWE).

Analyse des secrets

Corgea offre également une analyse complète des secrets afin de détecter les identifiants codés en dur, les clés API et les données sensibles. Découvrez la détection des secrets et les solutions de stockage sécurisé.

Couverture complète des vulnérabilités

Le SAST natif de l’IA de Corgea offre une couverture étendue des vulnérabilités, au-delà des référentiels du secteur tels que l’OWASP Top 10 et le Top 25 des CWE. Notre plateforme enrichit continuellement sa base de vulnérabilités pour anticiper les menaces émergentes et traiter un large éventail de problèmes de sécurité dans différents langages et frameworks.

Profondeur et étendue de la couverture

Notre couverture des vulnérabilités s’étend à plusieurs dimensions afin de garantir une analyse approfondie de votre code :
Corgea comprend les subtilités des différents langages de programmation et leurs enjeux de sécurité propres. Nos modèles d’IA sont entraînés à identifier les vulnérabilités propres à chaque langage pris en charge, des problèmes de gestion de la mémoire en C/C++ aux difficultés liées au typage dynamique en Python et Ruby.
Les frameworks populaires introduisent leurs propres problématiques de sécurité. L’analyse de Corgea tient compte des particularités de frameworks tels que .NET, Django, Ruby on Rails, Gin, Express.js et Spring afin de cibler la détection et la remédiation des vulnérabilités.
Au-delà des problèmes propres à chaque langage, notre plateforme traite les vulnérabilités communes à plusieurs langages, notamment :
  • Pratiques cryptographiques non sécurisées
  • Validation d’entrée incorrecte
  • Conditions de concurrence
  • Failles d’authentification et d’autorisation
Nos modèles d’IA sont continuellement mis à jour pour rester en avance, assurant la détection et la correction des nouvelles vulnérabilités au fur et à mesure qu’elles apparaissent dans un paysage de sécurité en constante évolution.

Pourquoi une couverture complète est essentielle

Réduction du risque

Minimisez le risque de failles de sécurité, de fuites de données et d’autres menaces potentielles en traitant un large éventail de vulnérabilités

Conformité

Respecter les exigences de sécurité et les normes réglementaires spécifiques à chaque secteur, réduisant ainsi le risque de pénalités de non-conformité

Efficacité

Simplifiez les processus de contrôle de sécurité grâce à la détection des faux positifs et des capacités de correction automatisée par IA

Amélioration continue

Restez protégé à mesure que le paysage de la sécurité évolue grâce à l’expansion continue des bases de données de vulnérabilités et de l’intelligence sur les menaces

Examiner l’analyse de taint

Pour les problèmes de code dont Corgea peut identifier le flux de données, la Vue complète comporte un onglet Analyse de taint. Celui-ci permet de suivre le cheminement de données non fiables depuis leur source, à travers l’application, jusqu’au sink vulnérable, y compris lorsque le flux traverse plusieurs fichiers.
1

Ouvrez un problème

Depuis la liste des problèmes d’un scan, cliquez sur une ligne de problème pour ouvrir la barre latérale des détails du problème.
2

Ouvrir la vue complète

Dans la barre latérale, cliquez sur Ouvrir la vue complète. L’onglet Analyse de taint est disponible dans la vue complète, mais pas dans l’aperçu de la barre latérale.
Issue de la barre latérale de vue rapide avec le bouton Ouvrir la vue complète en surbrillance
3

Ouvrir l’onglet Analyse de taint

Sélectionnez Analyse de taint. Corgea charge une trace ordonnée du flux de données. Lors de la première ouverture de l’onglet, sa génération peut prendre quelques secondes.
4

Cliquez sur la trace

Chaque étape indique son rôle, le chemin du fichier, le numéro de ligne et une brève description. Cliquez sur une étape pour ouvrir le fichier dans le visualiseur de code intégré et accéder directement à la ligne concernée.
L’onglet d’analyse de taint dans la vue complète du problème affiche les étapes de source, de propagation et de sink à côté d’une visionneuse de code
La trace est regroupée en trois types d’étapes :
  • Source — où une entrée non fiable entre dans l’application
  • Propagation — fonctions ou fichiers intermédiaires qui transmettent la valeur contaminée
  • Sink — point où les données atteignent l’opération vulnérable
Selon les données dont Corgea dispose pour le problème, la trace peut provenir du flux de données calculé pendant le scan (par exemple, à partir de résultats Semgrep, SARIF ou Checkmarx), d’un graphe d’appels d’accessibilité ou d’une analyse générée par l’IA lorsqu’aucune trace n’est disponible au moment du scan. L’en-tête de l’onglet indique la source utilisée.

Technologie du SAST natif de l’IA

Le SAST natif de l’IA repose sur la technologie propriétaire CodeIQ de Corgea, qui associe l’IA aux arbres syntaxiques abstraits (AST) pour offrir une analyse complète :
1

Analyse au niveau du projet

Le SAST natif de l’IA analyse l’ensemble du projet afin d’obtenir une vue complète des interactions entre les composants du code et de ne manquer aucune vulnérabilité.
2

Intelligence contextuelle

Le moteur d’IA comprend le contexte du code, y compris le middleware, les configurations et les modèles.
3

Réduction des faux positifs

La compréhension du contexte et de la logique réduit les faux positifs courants dans les outils traditionnels.

Comparaison avec les méthodes traditionnelles

Les techniques traditionnelles d’analyse statique présentent des limites importantes :
  • L’analyse source-sink ne tient pas compte de certaines étapes de validation
  • Les graphes d’appels ne rendent pas compte de certains comportements à l’exécution
  • La recherche vectorielle et le RAG souffrent d’une généralisation excessive

Intégration et flux de travail

Points d’intégration

  • Pipelines CI/CD: scan automatique lors des commits et des pull requests
  • Revues de pull requests: analyse des vulnérabilités avant fusion
  • Intégration à l’IDE: retour en temps réel pendant le développement

Langages et frameworks pris en charge

Corgea prend entièrement en charge le scan, la détection des faux positifs et la correction automatique dans de nombreux langages de programmation et frameworks courants, avec une couverture d’environ 900 Common Weakness Enumerations (CWE).

Langages pris en charge

Prise en charge native du langage: prise en charge robuste des constructions C#, notamment LINQ, les patterns async/await et les génériques.Frameworks: .NET, ASP.NET Core, BlazorCorgea excelle dans la sécurisation des applications .NET d’entreprise et traite notamment les défauts d’authentification, la désérialisation non sécurisée et les vulnérabilités CSRF.
Prise en charge native du langage: analyse les fonctionnalités propres à Python telles que les décorateurs, les gestionnaires de contexte et les compréhensions.Frameworks: Django, Flask, FastAPICouvre les applications web et les services backend, notamment les injections SQL, les XSS et les références directes non sécurisées à des objets.
Prise en charge native du langage: comprend la nature dynamique de Ruby, notamment la métaprogrammation et les blocs.Frameworks: Ruby on Rails, SinatraSpécialisé dans l’identification et la correction des vulnérabilités spécifiques à Ruby, y compris les problèmes d’attribution de masse, les routes non protégées et les téléchargements de fichiers non sécurisés.
Prise en charge native du langage: analyse les constructions propres à Go telles que les goroutines, les channels et les interfaces.Frameworks: Gin, Echo, FiberCible les problématiques de sécurité propres à Go, comme les conditions de concurrence, la gestion incorrecte des erreurs et l’utilisation non sécurisée des fonctions cryptographiques.
Prise en charge native du langage: prend en charge JavaScript et TypeScript, notamment async/await, les closures et le système de types de TypeScript.Frameworks: Node.js, Express.js, Next.js, NestJS, Angular, React, Vue.jsCouvre la sécurité côté client comme côté serveur, notamment la pollution de prototype, les dépendances non sécurisées et les XSS basées sur le DOM.
Prise en charge native du langage: analyse les fonctionnalités propres à Java telles que les génériques, les annotations et les expressions lambda.Frameworks: Spring, Jakarta EE, Play FrameworkCible les écosystèmes Java d’entreprise et traite notamment les attaques par entité externe XML (XXE), les injections LDAP et la désérialisation non sécurisée d’objets.
Prise en charge native du langage: gère la syntaxe et les constructions propres à PHP, notamment les traits et les attributs.Traite les vulnérabilités courantes des applications web telles que l’exécution de code à distance, l’inclusion de fichiers et les injections SQL.
Prise en charge native du langage: analyse les fonctionnalités propres à Kotlin, notamment la null safety, les coroutines et les fonctions d’extension.Spécialisé dans la sécurité des applications Android et côté serveur, traitant des problèmes tels que l’exposition inappropriée des données et la communication non sécurisée.
Prise en charge native du langage: analyse les fonctionnalités propres à Swift, notamment les optionnels, les extensions de protocole, les génériques et les types valeur.Renforce la sécurité du développement d’applications iOS et macOS en traitant notamment le stockage non sécurisé des données, la validation incorrecte des certificats SSL/TLS et les communications interprocessus non sécurisées.
Prise en charge native du langage: gère les constructions de bas niveau, notamment les pointeurs, la gestion de la mémoire et les templates.Il se concentre sur les vulnérabilités liées à la mémoire, les débordements de tampons et les problèmes de sécurité au niveau système courants dans les applications C/C++.Disponible pour la détection des faux positifs et la correction automatique. Le scan sera bientôt pris en charge.

Capacités clés

Analyse complète

Des algorithmes avancés analysent votre base de code pour identifier d’éventuelles vulnérabilités de sécurité, couvrant un large éventail de CWE

Détection de faux positifs

Le système alimenté par l’IA distingue avec précision les véritables vulnérabilités des faux positifs

Correction automatisée

Fournit des correctifs exploitables et contextuels qui peuvent être appliqués automatiquement ou examinés avant la mise en œuvre

Analyse propre au framework

Comprend les subtilités des différents frameworks au sein de chaque langage pour obtenir des insights de sécurité ciblés

Filtrage intelligent des fichiers

Pour optimiser les performances et la précision du scan, Corgea exclut automatiquement les fichiers qui ne sont pas pertinents pour l’analyse de sécurité :

Fichiers exclus

  • Fichiers multimédias (images, vidéos, polices)
  • Fichiers de style (CSS, SCSS, LESS)
  • Documentation et fichiers Markdown
  • Archives de configuration et fichiers compressés
  • Fichiers de test et répertoires de test
  • Données de mocks et fixtures
  • Rapports de couverture du code
  • Fichiers de code générés automatiquement
  • Code minifié ou bundlé
  • Fichiers de migration de base de données
  • Fichiers de définition de type
  • Binaires compilés et sorties de compilation

Fichiers utilisés pour le contexte

Même s’ils ne sont pas directement scannés à la recherche de vulnérabilités, certains fichiers peuvent être consultés par Corgea afin d’améliorer le contexte de l’analyse, notamment les fichiers README, les exemples de configuration et les fichiers de paramètres de l’application.

Configuration personnalisée

Vous pouvez personnaliser davantage le comportement des scans à l’aide d’un fichier de configuration corgea.yaml placé à la racine de votre dépôt :
Cela vous permet d’exclure des répertoires ou des motifs de fichiers spécifiques en fonction des besoins de votre projet.

Pourquoi nous filtrons

Notre approche de filtrage intelligent :
  • Améliore la précision en se concentrant sur le code applicatif réel
  • Réduit le bruit provenant des fichiers de test et du code tiers
  • Optimise les performances pour des résultats d’analyse plus rapides
  • Priorise les résultats dans le code que vous maintenez
Bientôt disponible: prise en charge de Rust