Ce document décrit les politiques de sécurité et les procédures à suivre pour signaler et gérer les vulnérabilités ou les incidents de sécurité dans le projet flask-boilerplate.
Nous prenons la sécurité de ce projet très au sérieux. Si vous découvrez une vulnérabilité, merci de nous en informer de manière responsable en suivant les étapes ci-dessous :
Avant de signaler une vulnérabilité, assurez-vous que :
- La vulnérabilité n'est pas déjà documentée dans les problèmes (issues) ou les discussions (discussions) du dépôt.
- Vous avez reproduit la vulnérabilité dans un environnement contrôlé.
Méthode de signalement préférée : 👉 Utilisez les Security Advisories GitHub
Alternative (pour les rapports sensibles) : 📧 Envoyez un email à cedricgrun+security@gmail.com avec pour objet "[SECURITY] Flask Boilerplate" 🔒 Option de chiffrement : Clé GPG publique
Lorsque vous nous envoyez un rapport de vulnérabilité, veuillez inclure les informations suivantes :
- Titre de la Vulnérabilité : Une description concise de la vulnérabilité.
- Description Détailée : Une explication détaillée de la vulnérabilité, y compris les étapes pour la reproduire.
- Impact : Une description de l'impact potentiel de la vulnérabilité.
- Correctif Proposé : Si possible, proposez un correctif ou une solution pour résoudre la vulnérabilité.
- Coordonnées de Contact : Votre nom et adresse email pour que nous puissions vous recontacter si nécessaire.
Nous traiterons toutes les informations que vous nous fournirez de manière confidentielle et ferons tout effort pour résoudre la vulnérabilité rapidement.
Nous remercions tous ceux qui nous aident à améliorer la sécurité de notre projet. Nous pouvons vous offrir une reconnaissance publique dans le fichier SECURITY_HALL_OF_FAME.md si vous le souhaitez.
| Étape | Délai | Actions |
|---|---|---|
| Accusé de réception | Sous 3 jours ouvrables | Confirmation de réception du rapport |
| Validation | Sous 7 jours | Vérification technique de la vulnérabilité |
| Correctif développé | Sous 30 jours* | Création et test du correctif |
| Publication | Selon criticité | Release sécurisée avec crédits |
*Délais variables selon la complexité
- Code du dépôt principal (
/src) - Configuration par défaut
- Dépendances principales (Flask, SQLAlchemy, etc.)
- Documentation officielle
- Fork personnels du projet
- Dépendances optionnelles (Celery, Redis, etc.)
- Problèmes sans preuve d'exploitation concrète
- Vulnérabilités nécessitant une configuration non standard
Ce projet utilise plusieurs outils de sécurité pour détecter et prévenir les vulnérabilités :
- Description : CodeQL est un outil de recherche de vulnérabilités qui utilise une langue de requête pour analyser le code source.
- Configuration : Les analyses CodeQL sont exécutées automatiquement sur les branches
main,develop,feature/**,release/**, ethotfix/**. - Workflow : codeql-analysis.yml
- Description : Bandit est un outil de sécurité pour analyser le code Python et détecter des vulnérabilités potentielles.
- Configuration : Bandit est intégré dans les hooks
pre-commitpour s'exécuter avant chaque commit et pull request. - Workflow : ci-feature.yml
- Description : pre-commit est un outil qui exécute des hooks de pré-commit pour valider le code avant qu'il ne soit ajouté au dépôt.
- Configuration : Les hooks
pre-commitincluent des outils de sécurité comme Bandit, des validateurs de code comme Ruff, et des formateurs comme Prettier. - Workflow : ci-feature.yml
- Description : Les outils de couverture de code (comme pytest-cov) et Codecov permettent de mesurer la couverture des tests et d'identifier les parties non testées du code.
- Configuration : Les rapports de couverture sont générés et envoyés à Codecov après chaque exécution des tests unitaires.
- Workflow : ci-feature.yml
Ce boilerplate intègre déjà :
- Configuration sécurisée par défaut pour Flask
- Protection contre les attaques CSRF
- Gestion sécurisée des secrets via
.env - Headers HTTP sécurisés (CSP, HSTS, etc.)
- Validation des entrées avec Pydantic
Pour maintenir la sécurité :
# Mettez à jour régulièrement les dépendances
poetry update --dry-run # Vérifiez les mises à jour
poetry update # Appliquez les mises à jour- Description : Commitizen et Conventional Commits aident à standardiser les messages de commit, ce qui facilite la traçabilité et la gestion des changements.
- Configuration : Les messages de commit sont validés automatiquement pour respecter les conventions.
- Workflow : ci-feature.yml
- Description : pre-commit.ci exécute automatiquement les hooks
pre-commitsur chaque pull request et peut corriger certaines vulnérabilités. - Configuration : Les hooks
pre-commitsont configurés pour s'exécuter surpre-commit.ci. - Workflow : ci-feature.yml
- Description : Les fichiers et répertoires spécifiques (comme les fichiers
__init__.py, les tests, et les répertoires de primitives) sont exclus des rapports de couverture pour éviter les faux positifs. - Configuration : Les exclusions sont définies dans le fichier codecov.yml.
Les corrections critiques sont publiées via :
- GitHub Releases
- GitHub Security Advisories
- CVE Database (pour les vulnérabilités critiques)
- Confidentialité des Rapports : Toutes les informations fournies dans les rapports de vulnérabilité seront traitées de manière confidentielle.
- Publicité des Corrections : Une fois la vulnérabilité corrigée, nous publierons une mise à jour du projet et mettrons à jour les notes de version.
- Reconnaissance : Si vous souhaitez une reconnaissance publique, nous vous enverrons une notification une fois que la mise à jour est publiée.
Nous reconnaissons volontiers les contributions à la sécurité :
- Liste des chercheurs en sécurité Vous souhaitez figurer ici ? Indiquez-le dans votre rapport !