Aller au contenu principal
Expert Cybersécurité & IAv9.0
Centres de ressources conformité
Besoin d'un accompagnement expert ?
Devis personnalisé sous 24h — audit, conformité, incident
Checklists Sécurité — Audit & Durcissement
Formats disponibles
📄 PDF 📊 Excel 🌐 Web

11 checklists professionnelles couvrant 2 200+ points de contrôle. Téléchargement gratuit, aucune inscription.

CodeQL

devsecops

Définition

CodeQL est un moteur d'analyse de code sémantique développé par GitHub (acquis via Semmle en 2019), qui se distingue des SAST classiques par son approche : le code source est traité comme une base de données interrogeable via un langage de requêtes spécialisé, permettant aux équipes de sécurité d'écrire leurs propres règles d'analyse sous forme de requêtes déclaratives. Le principe fondamental de CodeQL est la transformation du code source en une base de données relationnelle représentant la structure du programme : classes, méthodes, flux de données, graphes de contrôle de flux, et relations entre éléments syntaxiques. Des requêtes CodeQL (fichiers .ql) interrogent ensuite cette base pour identifier des patterns de vulnérabilités, similairement à des requêtes SQL sur une base de données. Cette approche permet une flexibilité d'analyse que les outils à base de règles fixes ne peuvent pas atteindre. CodeQL supporte C/C++, C#, Java/Kotlin, JavaScript/TypeScript, Python, Ruby, Go, et Swift. Il est disponible gratuitement pour les projets open source via GitHub Code Scanning, et en version entreprise via GitHub Advanced Security. La bibliothèque de requêtes standard couvre les CVE connues, OWASP Top 10, et CWE Top 25. Des centaines de requêtes supplémentaires sont disponibles dans des dépôts communautaires. L'un des cas d'usage les plus puissants de CodeQL est la recherche de variantes de vulnérabilités. Après la découverte d'une CVE dans un projet open source, les équipes de sécurité écrivent une requête CodeQL capturant le pattern de la vulnérabilité et la ré-appliquent sur l'ensemble de leur codebase pour identifier des patterns similaires. GitHub a utilisé cette approche pour identifier des centaines de variantes de Log4Shell (CVE-2021-44228) dans des projets tiers. L'intégration de CodeQL dans les workflows GitHub Actions est native et gratuite pour les dépôts publics. Pour les organisations GitHub Enterprise, GitHub Advanced Security inclut CodeQL avec une interface de gestion centralisée des alertes. Les résultats sont exportables en format SARIF pour intégration dans d'autres plateformes de sécurité.

Architecture : le code comme base de données

CodeQL extrait une représentation sémantique du code sous forme de base de données relationnelle (tables de classes, méthodes, expressions, flux de données). Les requêtes .ql interrogent ces tables avec un langage déclaratif orienté objet, permettant de formuler des patterns complexes impossibles à exprimer dans des règles statiques classiques. Cette approche rend CodeQL particulièrement adapté à la recherche de variantes de vulnérabilités.

Écrire des requêtes CodeQL personnalisées

Une requête CodeQL typique définit des sources (entrées utilisateur), des sinks (fonctions dangereuses) et des sanitizers (fonctions de validation), puis applique une analyse de flux de données pour identifier les chemins non sécurisés. Le CodeQL Pack system facilite le partage de bibliothèques et requêtes entre équipes. Des kits de démarrage existent pour les patterns OWASP Top 10 dans chaque langage supporté.

Intégration GitHub Actions et GHAS

Pour les dépôts GitHub, CodeQL s'intègre via le workflow code-scanning-action en deux étapes : initialisation (création de la base de données) et analyse (exécution des requêtes). Les résultats apparaissent dans l'onglet Security de GitHub avec une interface de triage intuitive. GitHub Advanced Security ajoute la gestion centralisée multi-dépôts, les métriques de couverture et les alertes de dépendances enrichies.

Articles liés

Un projet cybersécurité ?

Expert dispo · Réponse 24h

Devis