Analyse de sécurité¶
Le thème Zer0-Mistakes utilise GitHub CodeQL pour l'analyse automatisée des vulnérabilités de sécurité dans plusieurs langages.
Vue d'ensemble de CodeQL¶
CodeQL est le moteur d'analyse sémantique de code de GitHub qui détecte les vulnérabilités de sécurité dans votre base de code.
Langages analysés¶
| Langage | Mode de compilation | Couverture |
|---|---|---|
| Ruby | Aucun (interprété) | Code du gem, plugins |
| JavaScript/TypeScript | Aucun | Ressources frontend |
| Python | Aucun | Scripts, utilitaires |
| GitHub Actions | Aucun | Fichiers de workflow |
Configuration du workflow¶
Déclencheurs¶
L'analyse CodeQL s'exécute :
- À chaque push vers
main - À chaque pull request vers
main - Hebdomadairement (dimanche à 1h37 UTC)
Fichier de workflow¶
name: "CodeQL Advanced"
on:
push:
branches: [ "main" ]
pull_request:
branches: [ "main" ]
schedule:
- cron: '37 1 * * 0'
jobs:
analyze:
runs-on: ubuntu-latest
permissions:
security-events: write
packages: read
actions: read
contents: read
strategy:
matrix:
include:
- language: javascript-typescript
- language: ruby
- language: python
- language: actions
Consulter les résultats¶
Onglet Security de GitHub¶
- Accédez à l'onglet Security du dépôt
- Cliquez sur Code scanning alerts
- Examinez les vulnérabilités par gravité
Niveaux de gravité des alertes¶
| Niveau | Action requise |
|---|---|
| Critique | Corriger immédiatement |
| Élevé | Corriger avant la prochaine version |
| Moyen | Corriger lors du prochain sprint |
| Faible | Suivre et corriger quand c'est possible |
Types de vulnérabilités courants¶
Ruby¶
- Injection SQL
- Injection de commande
- Traversée de répertoire
- Désérialisation non sécurisée
JavaScript¶
- Cross-site scripting (XSS)
- Pollution de prototype
- Génération aléatoire non sécurisée
- Problèmes de manipulation du DOM
GitHub Actions¶
- Injection de script
- Exposition d'identifiants
- Checkout non sécurisé
Corriger les vulnérabilités¶
Exemple : injection SQL¶
Code vulnérable :
Code corrigé :
Exemple : prévention du XSS¶
Code vulnérable :
Code corrigé :
Bonnes pratiques de sécurité¶
Gestion des dépendances¶
Gestion des secrets¶
- Ne jamais valider de secrets dans le dépôt
- Utilisez GitHub Secrets pour les valeurs sensibles
- Faites tourner les identifiants régulièrement
Validation des entrées¶
- Validez toutes les entrées utilisateur
- Assainissez les données avant leur affichage
- Privilégiez les listes d'autorisation aux listes de blocage
Requêtes personnalisées¶
Vous pouvez ajouter des requêtes CodeQL personnalisées pour des vérifications spécifiques au projet :
- name: Initialize CodeQL
uses: github/codeql-action/init@v4
with:
languages: ${{ matrix.language }}
queries: security-extended,security-and-quality
Rejet des alertes¶
Pour rejeter un faux positif :
- Accédez à l'alerte dans l'onglet Security
- Cliquez sur Dismiss alert
- Sélectionnez la raison :
- Ne sera pas corrigé
- Faux positif
- Utilisé dans les tests
Dépannage¶
Délai d'analyse dépassé¶
Pour les grandes bases de code :
- Utilisez des runners plus puissants
- Excluez les répertoires non essentiels
- Répartissez l'analyse par langage
Échecs de build¶
Si un build manuel est requis :
- name: Run manual build steps
if: matrix.build-mode == 'manual'
run: |
bundle install
bundle exec jekyll build
Réponse de sécurité¶
Signalement des vulnérabilités¶
Si vous découvrez une vulnérabilité de sécurité :
- N'ouvrez pas de ticket public
- Signalez les problèmes de sécurité en privé par e-mail
- Suivez le principe de divulgation responsable
Avis de sécurité¶
Pour les problèmes critiques :
- Créez un Security Advisory
- Demandez un CVE si nécessaire
- Publiez le correctif et l'avis simultanément
Ressources associées¶
Voir aussi¶
- [[Development]]
- [[Dependency Updates]]
- [[CI/CD Pipeline]]