En 2026, sécuriser un projet open source n'est plus une option — c'est une nécessité opérationnelle et bientôt une obligation réglementaire. Le rapport OSSRA 2026 montre que 87 % des codebases présentent au moins un risque de sécurité lié à leurs dépendances open source. Les attaques supply chain se multiplient, le Cyber Resilience Act européen entre en vigueur, et les outils d'analyse IA submergent les mainteneurs de rapports. Que vous mainteniez un projet à Paris, Lyon, Nantes ou Toulouse, ce guide vous donne les 9 étapes concrètes pour sécuriser votre projet — avec des outils gratuits et open source.
Étape 1 : Inventorier toutes les dépendances
La première étape — et la plus négligée — est de connaître exactement ce que contient votre projet. La majorité des vulnérabilités open source ne viennent pas de votre code, mais de vos dépendances transitives — les dépendances de vos dépendances, parfois sur 5 ou 6 niveaux de profondeur.
Un projet Node.js typique avec 20 dépendances directes en package.json embarque souvent 800 à 1 200 dépendances transitives dans node_modules. Un projet Python avec 15 packages dans requirements.txt installe régulièrement 80 à 150 packages au total. Chacune de ces dépendances est un vecteur d'attaque potentiel.
Utilisez les outils natifs de votre écosystème pour générer un inventaire complet :
- Node.js/npm :
npm auditanalyse les vulnérabilités connues dans l'arbre de dépendances complet.npm ls --allliste l'arbre exhaustif. - Python :
pip-auditvérifie les dépendances installées contre la base de données de vulnérabilités PyPI.pipdeptreevisualise l'arbre de dépendances. - Rust :
cargo auditintègre la RustSec Advisory Database et signale immédiatement les crates vulnérables. - Go :
govulncheckutilise la base de vulnérabilités Go officielle et ne signale que les vulnérabilités effectivement atteignables dans votre code.
Un développeur à Lyon qui travaille sur une application Next.js pour une PME industrielle a découvert, en faisant cet exercice, que son projet embarquait une version de xmlhttprequest-ssl affectée par une faille de validation de certificat — dans une dépendance transitive de quatrième niveau qu'il n'avait jamais vue. Sans inventaire systématique, cette faille serait passée inaperçue.
Étape 2 : Générer un SBOM (Software Bill of Materials)
Le SBOM est à un logiciel ce que la liste d'ingrédients est à un produit alimentaire : un inventaire standardisé et lisible par machine de tous les composants. En 2026, le SBOM n'est plus un luxe — c'est une exigence du Cyber Resilience Act européen pour tout logiciel commercialisé en Europe, et une bonne pratique recommandée par l'ANSSI pour tous les projets.
Deux formats standard dominent : CycloneDX (OWASP) et SPDX (Linux Foundation). Les deux sont acceptés par les régulateurs européens. Voici comment générer un SBOM avec Syft (Anchore), l'outil le plus polyvalent :
# Installation de Syft
curl -sSfL https://raw.githubusercontent.com/anchore/syft/main/install.sh | sh -s
# Générer un SBOM CycloneDX depuis le répertoire du projet
syft dir:. -o cyclonedx-json > sbom.json
# Générer un SBOM depuis une image Docker
syft your-image:latest -o spdx-json > sbom-container.jsonIntégrez la génération du SBOM dans votre pipeline CI/CD. Chaque release devrait produire un SBOM à jour, publié aux côtés des artefacts de release. Les entreprises qui utilisent votre projet à Paris, Nantes ou Toulouse pourront ainsi vérifier automatiquement qu'aucune de leurs dépendances n'est vulnérable.
Étape 3 : Configurer le scan automatisé de vulnérabilités
L'inventaire et le SBOM sont des instantanés — ils montrent l'état à un moment donné. Pour une sécurité continue, vous avez besoin d'un scan automatisé qui détecte les nouvelles vulnérabilités dès qu'elles sont publiées et qui crée automatiquement des pull requests de mise à jour.
Deux outils dominent le marché en 2026, et les deux sont gratuits pour les projets open source :
- Dependabot (GitHub) : natif, configuration minimale (un fichier
.github/dependabot.yml), crée automatiquement des PR pour les mises à jour de sécurité. Idéal pour les projets simples hébergés sur GitHub. - Renovate (Mend) : plus flexible, supporte GitHub, GitLab, Bitbucket, Gitea. Règles de grouping avancées, gestion des monorepos, automerge configurable. Recommandé pour les projets complexes ou multi-plateformes.
Pour une couverture complète, ajoutez Trivy (Aqua Security) dans votre pipeline CI. Trivy scanne non seulement les dépendances applicatives, mais aussi les images de conteneurs, les fichiers IaC (Terraform, Kubernetes), et les configurations cloud. C'est l'outil le plus complet en open source.
# Scan de vulnérabilités avec Trivy
trivy fs --severity HIGH,CRITICAL .
# Scan d'une image Docker
trivy image your-image:latest
# Intégration GitHub Actions
# .github/workflows/security.yml
name: Security Scan
on: [push, pull_request]
jobs:
trivy:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- uses: aquasecurity/trivy-action@master
with:
scan-type: fs
severity: HIGH,CRITICALÉtape 4 : Activer la signature des commits et des releases
Les attaques supply chain reposent souvent sur l'injection de code malveillant dans un projet légitime. La signature cryptographique est la défense fondamentale contre ce vecteur d'attaque : elle garantit que chaque modification vient d'un contributeur identifié et vérifié.
Pour les commits, configurez la signature GPG ou SSH dans Git. GitHub et GitLab affichent un badge « Verified » sur les commits signés, ce qui permet à tout contributeur ou utilisateur de vérifier l'authenticité du code.
# Configurer la signature SSH (plus simple que GPG)
git config --global gpg.format ssh
git config --global user.signingkey ~/.ssh/id_ed25519.pub
git config --global commit.gpgsign true
git config --global tag.gpgsign truePour les releases, utilisez Sigstore et cosign. Sigstore est un projet Linux Foundation qui fournit une infrastructure de signature sans clé (keyless signing) — vous vous authentifiez via votre compte GitHub/Google, et la signature est vérifiable publiquement via un log de transparence. C'est le standard émergent en 2026 pour la signature d'artefacts open source.
Une équipe de développeurs à Nantes qui publie un framework PHP open source a intégré cosign dans son pipeline de release. Chaque version publiée est signée automatiquement, et les utilisateurs peuvent vérifier la signature en une commande avant installation. C'est transparent, gratuit, et compatible avec la conformité CRA.
Étape 5 : Sécuriser le pipeline CI/CD
Votre pipeline CI/CD est une surface d'attaque critique. Si un attaquant compromet votre pipeline, il peut injecter du code malveillant dans vos releases sans même toucher à votre dépôt de code source. Les attaques sur GitHub Actions ont doublé en 2026, et les runners self-hosted sont particulièrement vulnérables.
Trois règles fondamentales pour un pipeline sécurisé :
- Verrouillez les actions par hash : ne référencez jamais une action GitHub par tag (
@v4) — utilisez le hash SHA du commit (@sha256). Un tag peut être réécrit par un attaquant qui compromet le dépôt de l'action ; un hash est immuable. - Permissions minimales : configurez
permissions: read-allau niveau du workflow et ajoutez des permissions spécifiques uniquement pour les jobs qui en ont besoin. Le principe du moindre privilège s'applique à la CI exactement comme au code. - Isolez les secrets : utilisez les environments GitHub avec des reviewers pour les secrets de déploiement. Ne stockez jamais de secrets dans les variables d'environnement du workflow — utilisez
secretset limitez leur portée au job qui en a besoin.
Pour une méthodologie complète, consultez notre guide dédié : Sécuriser votre pipeline CI/CD GitHub Actions en 7 étapes.
Étape 6 : Mettre en place une security policy
Un fichier SECURITY.md à la racine de votre dépôt est la porte d'entrée officielle pour les rapports de vulnérabilités. Sans cette policy, les chercheurs en sécurité ne savent pas comment vous contacter, les rapports arrivent sur des channels publics (issues GitHub), et les vulnérabilités sont exposées avant correction.
Votre SECURITY.md doit contenir :
- Versions supportées : quelles versions reçoivent des patchs de sécurité (par exemple, les deux dernières releases majeures).
- Processus de signalement : une adresse email dédiée (par exemple
security@votre-projet.org) ou le lien vers GitHub Security Advisories (GHSA). Jamais les issues publiques pour les vulnérabilités. - Délais de réponse : engagement sur un accusé de réception (48h), une évaluation initiale (7 jours), et un correctif ou une communication publique (90 jours maximum).
- Politique de divulgation coordonnée : indiquez clairement que vous pratiquez la divulgation responsable — le rapporteur s'engage à ne pas publier la faille tant que le correctif n'est pas disponible, et vous vous engagez à corriger dans un délai raisonnable.
En 2026, avec l'explosion des rapports générés par IA, ajoutez également un template de rapport qui demande une preuve de concept reproductible. Les rapports IA sans PoC pourront être filtrés automatiquement, réduisant drastiquement la charge de triage.
Étape 7 : Intégrer l'analyse statique de sécurité (SAST)
Les étapes précédentes sécurisent vos dépendances. L'analyse statique de sécurité (SAST) sécurise votre propre code. Elle détecte des vulnérabilités comme les injections SQL, les XSS, les SSRF, les désérialisations non sécurisées, et les fuites de secrets — directement dans le code source, avant même l'exécution.
Deux outils open source dominent en 2026 :
- Semgrep : rapide, extensible, multi-langage (Python, JavaScript, TypeScript, Go, Java, Ruby, PHP). Les règles sont écrites dans un DSL simple qui ressemble au code analysé. La communauté fournit des milliers de règles OWASP prêtes à l'emploi.
- CodeQL (GitHub) : plus puissant mais plus complexe. Modélise le code sous forme de base de données relationnelle et exécute des requêtes d'analyse sémantique. Gratuit pour les dépôts publics sur GitHub.
Pour un démarrage rapide, Semgrep avec les règles OWASP par défaut est le meilleur rapport effort/résultat. Un développeur à Toulouse qui maintient un outil CLI en Python a détecté 3 vulnérabilités d'injection de commande dans son propre code grâce à Semgrep — des os.system() avec des paramètres utilisateur non assainis que subprocess.run() avec shell=False aurait évités.
Étape 8 : Préparer un plan de réponse aux incidents
Même avec les meilleures défenses, un incident de sécurité finira par arriver. La différence entre un incident géré et un désastre, c'est la préparation. Un plan de réponse aux incidents, documenté et répété avant l'incident, réduit drastiquement le temps de réaction et les dommages.
Votre plan doit couvrir quatre phases :
- Détection : comment identifiez-vous qu'un incident est en cours ? Alertes Trivy, rapports via SECURITY.md, surveillance des registres de packages pour détecter des publications non autorisées.
- Containment : comment limitez-vous les dommages ? Révocation de tokens compromis, retrait d'une version affectée de npm/PyPI, mise en maintenance du projet.
- Correction : développement, test et publication du correctif. Délais cibles : 24h pour les failles critiques, 72h pour les failles hautes.
- Communication : notification aux utilisateurs affectés, publication d'un security advisory (GHSA), demande de CVE si applicable, post-mortem public pour les incidents significatifs.
Pour les projets maintenus par une seule personne — ce qui est le cas de nombreux projets français — identifiez un contact de secours : un autre développeur de confiance qui peut publier un correctif d'urgence si vous êtes indisponible. Ce point de défaillance unique est l'une des faiblesses les plus courantes et les plus dangereuses de l'écosystème open source.
Étape 9 : Mesurer et améliorer avec OpenSSF Scorecard
OpenSSF Scorecard est l'outil de référence pour évaluer la posture de sécurité d'un projet open source. Il analyse automatiquement votre dépôt GitHub et attribue un score de 0 à 10 sur une vingtaine de critères : signature des commits, présence d'une security policy, permissions CI/CD, dépendances à jour, protection des branches, présence de code reviews, etc.
# Installer Scorecard
go install github.com/ossf/scorecard/v5/cmd/scorecard@latest
# Évaluer votre projet
scorecard --repo=github.com/votre-org/votre-projet
# Ou via l'API (sans installation)
curl -s "https://api.securityscorecards.dev/projects/github.com/votre-org/votre-projet"L'intérêt de Scorecard est triple. D'abord, il fournit un diagnostic immédiat — en quelques secondes, vous savez où sont vos faiblesses. Ensuite, il crée un objectif mesurable — passer de 5/10 à 8/10 est un objectif concret et motivant. Enfin, il est reconnu par l'industrie — un score élevé sur Scorecard est un signal de qualité pour les entreprises qui évaluent s'ils peuvent adopter votre projet.
Un mainteneur de package npm à Paris a amélioré son score Scorecard de 3,2 à 8,7 en appliquant les 8 étapes précédentes de ce guide. Résultat direct : deux entreprises du CAC 40 ont adopté son package, citant explicitement le score Scorecard comme critère de décision.
Checklist récapitulative
Voici la liste complète des actions, avec les outils recommandés et le temps estimé pour chaque étape.
| Étape | Action | Outil(s) | Temps |
|---|---|---|---|
| 1 | Inventaire dépendances | npm audit / pip-audit / cargo audit | 15 min |
| 2 | Générer SBOM | Syft (CycloneDX / SPDX) | 15 min |
| 3 | Scan automatisé | Dependabot / Renovate + Trivy | 30 min |
| 4 | Signature commits/releases | GPG/SSH + Sigstore/cosign | 20 min |
| 5 | Pipeline CI/CD sécurisé | GitHub Actions (hash pinning) | 1-2h |
| 6 | Security policy | SECURITY.md + GHSA | 30 min |
| 7 | Analyse statique SAST | Semgrep / CodeQL | 30 min |
| 8 | Plan réponse incidents | Documentation interne | 30 min |
| 9 | Scorecard | OpenSSF Scorecard | 10 min |
Total estimé : environ 4 heures pour un projet de taille moyenne (10-50 dépendances). Ensuite, l'essentiel est automatisé — Dependabot/Renovate crée les PR, Trivy scanne en continu, Semgrep analyse chaque commit.
Aller plus loin : ressources et guides complémentaires
Ce guide couvre les fondamentaux. Pour approfondir chaque étape, consultez nos guides spécialisés :
- Auditer vos dépendances open source contre les attaques supply chain en 7 étapes
- Sécuriser votre pipeline CI/CD GitHub Actions en 7 étapes
- Sécuriser les dépendances npm de votre projet open source en 8 étapes
- Auditer la sécurité de vos workflows GitHub Actions en 7 étapes
La sécurité open source est un investissement, pas un coût. Chaque heure passée à sécuriser votre projet est une heure épargnée en gestion de crise, en perte de confiance des utilisateurs, et en dette technique accumulée. En 2026, avec le CRA, les attaques supply chain, et les rapports IA, ne pas sécuriser son projet n'est plus seulement risqué — c'est irresponsable.
Conclusion : Sécuriser un projet open source en 2026 n'a rien de compliqué. Les 9 étapes de ce guide utilisent exclusivement des outils gratuits et open source, prennent environ 4 heures à mettre en place, et s'automatisent ensuite presque entièrement. L'inventaire des dépendances, le SBOM, le scan automatisé, la signature, le pipeline sécurisé, la security policy, le SAST, le plan d'incidents et le Scorecard forment un système de défense en profondeur qui couvre les trois surfaces d'attaque : vos dépendances, votre supply chain, et votre propre code. Contactez D-Open pour un audit de sécurité complet de votre projet open source et une mise en conformité CRA.
Besoin d'un audit de sécurité pour votre projet open source ?
D-Open réalise des audits de sécurité complets pour les projets open source français : inventaire de dépendances, scan de vulnérabilités, sécurisation du pipeline CI/CD, et mise en conformité CRA. De Paris à Lyon, de Nantes à Toulouse — nous accompagnons les mainteneurs sur tout le territoire.
Demander un audit de sécuritéQuestions fréquentes
Quels outils gratuits pour sécuriser un projet open source en 2026 ?▼
Les principaux outils gratuits sont : Dependabot (GitHub) ou Renovate pour la gestion des dépendances, Trivy ou Grype pour le scan de vulnérabilités, Semgrep ou CodeQL pour l'analyse statique SAST, Syft pour la génération de SBOM, Sigstore/cosign pour la signature de releases, et OpenSSF Scorecard pour l'évaluation globale. Tous sont open source et intégrables dans GitHub Actions ou GitLab CI.
Combien de temps faut-il pour sécuriser un projet open source existant ?▼
Pour un projet de taille moyenne (10-50 dépendances), comptez environ 4 heures pour la mise en place initiale des 9 étapes. L'inventaire et le SBOM prennent 30 minutes, Dependabot/Renovate 15 minutes, le pipeline CI/CD sécurisé 1-2 heures, et la security policy avec le plan d'incidents 1 heure. Ensuite, l'essentiel est automatisé.
Le Cyber Resilience Act oblige-t-il les projets open source à se sécuriser ?▼
Le CRA cible principalement les logiciels commercialisés en Europe. Les projets purement communautaires bénéficient d'une exemption. En revanche, si votre projet est utilisé dans un contexte commercial — par vous ou par des tiers — les obligations s'appliquent : gestion des vulnérabilités, notification d'incidents, SBOM. Anticiper protège votre projet et les entreprises qui l'utilisent.
Quelle est la différence entre Dependabot et Renovate ?▼
Dependabot est natif GitHub, simple à configurer, et crée des PR pour les mises à jour de sécurité. Renovate (Mend) est plus flexible : multi-plateformes (GitHub, GitLab, Bitbucket), grouping avancé, meilleure gestion des monorepos. Pour un projet simple sur GitHub, Dependabot suffit. Pour un monorepo ou un projet multi-plateformes, Renovate est recommandé.