Aller au contenu principal

Nomenclature des composants

fremforge est délibérément transparent sur l’outillage qui se trouve derrière chaque contrôle. Les clients soumis à une revue BSI C5, ISO 27001, BaFin ou réglementée par l’ENISA ont besoin d’une piste d’audit au niveau des outils, et nous préférons que vous puissiez faire un grep dans notre code source plutôt que de devoir rétro-ingénierer une boîte noire.

Cette page est l’inventaire de référence. Le tableau plus court de l’aperçu des fonctionnalités de sécurité en est un sous-ensemble à consulter rapidement ; celui-ci est le registre complet : versions, sources de récupération, emplacement d’exécution de chaque composant, attestation de chaîne d’approvisionnement qui l’accompagne et licence.

Intégrité de la chaîne d’approvisionnement

Chaque dépendance, image de conteneur et binaire de cet inventaire passe par la règle de contact amont de fremforge :

  • Le code hébergé sur GitHub transite par le miroir natif de Forgejo (pull mirror) à frem.sh/<canonical-org>/<repo> (synchronisation toutes les 8 heures). Les workflows clients qui résolvent uses: actions/checkout@v4 atteignent frem.sh/actions/checkout : aucune récupération directe sur github.com dans le chemin critique du client.
  • Les images de conteneur (docker.io / ghcr.io / quay.io / public.ecr.aws) sont mises en cache via un miroir interne situé dans l’UE. Les manifestes de production ne référencent jamais directement un registre amont.
  • Les binaires de release qui ne sont pas distribués en OCI (par exemple opengrep, cosign) sont encapsulés dans de petites images de cache servies depuis ce même miroir interne dans l’UE. Renovate suit la version de la release GitHub amont et ouvre chaque semaine une pull request de mise à jour.

La CI vérifie les Dockerfile et les manifestes à la recherche de toute référence qui contournerait le miroir, de sorte que chaque dépendance amont est résolue via le cache hébergé dans l’UE plutôt que directement depuis un registre public.

CI et outillage de chaîne d’approvisionnement

OutilVersionUtilisationLicenceSource de récupération
Forgejov15.xHébergement des dépôts, revue de code, protocole des runners Actions, sources d’authentification SSOGPLv3Miroir interne UE (build fremforge)
forgejo-runner (act_runner)v13.2.0Enregistrement d’un runner éphémère sur une VM ECS par commitMITMiroir interne UE
Gitleaksv8.xDétection de secrets en pre-receiveMITMiroir interne UE
OpenGrepv1.22SAST sur chaque PR (successeur libre de Semgrep, issu du changement de licence)LGPLv2.1Miroir interne UE
Trivyv0.74Analyse des images de la CI client + contrôle des CVE intégré à l’image des runnersApache 2.0Miroir interne UE
osv-scannerDernièreAnalyse des CVE/GHSA des dépendances au moment de la PRApache 2.0Miroir interne UE
SyftDernièreSBOM CycloneDX 1.6 + SPDX 2.3 à chaque analyse de PR (les deux sont acceptés à l’ingestion)Apache 2.0Miroir interne UE
cosignDernièreSignature et vérification d’images (CI client via cosign-verify.yaml)Apache 2.0Miroir interne UE
Fulciov1.8.5 (Helm 2.9.0)Autorité de certification de signature de code auto-hébergée à sign.frem.sh. CA racine dans T Cloud Public DEW KMS (HSM FIPS 140-2 niveau 3). Ce n’est PAS le Fulcio public de Sigstore : fremforge exploite le sienApache 2.0Miroir interne UE
Sigstore TSADernièreAutorité d’horodatage RFC 3161 à tsa.frem.sh. Clé dans DEW KMS. Ce n’est PAS la TSA publique de SigstoreApache 2.0Miroir interne UE
gitsignDernièreClient git côté client ; signature de commits liée à OIDC auprès du Fulcio localApache 2.0Installation côté client (brew install sigstore/tap/gitsign)
RenovateDernièreBot hébergé de mise à jour des dépendances, cron toutes les 15 min, désactivable par dépôtAGPLv3Miroir interne UE
kanikoDernièreBuild de conteneurs sans root dans les workflows clients (alternative à BuildKit lorsque le client ne peut pas exécuter de conteneur privilégié)Apache 2.0Miroir interne UE
ClamAVDernièreAnalyse antimalware des téléversements (objets LFS, pièces jointes, téléversements de paquets) et analyse optionnelle du proxy de dépendances. Les sources de signatures sont listées sous Contenu de détectionGPLv2Miroir interne UE
scorecardDernièreExécution hebdomadaire des bonnes pratiques OpenSSF par dépôtApache 2.0Miroir interne UE
openssl + python3 (bibliothèque standard)n/aVérification côté client des attestations de publication émises par fremforge : les enveloppes DSSE sont signées avec une simple clé Ed25519, la vérification se résume donc à une courte recette curl/jq/openssl/python3 (voir Provenance SLSA), et non au slsa-verifier amont—Outils fournis par défaut par la distribution

Contenu de détection

Les règles, bases d’avis de sécurité et signatures de malwares auxquelles les scanners se comparent. Chacun est épinglé ou actualisé selon la fréquence indiquée, et aucun n’est récupéré par une analyse pendant son exécution.

ContenuUtilisé parLicenceSource de récupération
GitLab sast-rules, uniquement les dossiers par langage (C#, Go, Java, JavaScript, Python, Scala)SAST, et /opt/sast-rules dans l’image des runners hébergésMIT ; les règles Go sous Apache-2.0 (dérivées de gosec). Le reste du dépôt amont, qui contient du contenu sous d’autres licences, est supprimé au moment du build, et le build échoue si un fichier conservé porte une licence autre que MIT, Apache-2.0 ou BSDMiroir frem.sh, commit épinglé
0xdea semgrep-rules, rules/cSAST pour C et C++MITMiroir frem.sh, commit épinglé
Règles SAST de fremforgeSAST pour JavaScript et TypeScript, Python, Bash, PHP, Ruby, Rust, Kotlin et SwiftMITCode source de fremforge
Bases de vulnérabilités Trivy (trivy-db, trivy-java-db)Analyse des images de conteneur, trivy fs sur les pull requestsApache-2.0 pour le build de la base ; chaque enregistrement conserve les conditions de sa source (GitHub Advisory Database, données de sécurité Red Hat et SUSE : CC-BY-4.0)Miroir interne UE, actualisé quotidiennement
Base OSV, copie hors ligneAnalyse des dépendances, paquets malveillants, politiques de paquets, audits du proxy de dépendancesCC-BY-4.0 ; chaque enregistrement conserve les conditions de sa sourceMiroir interne de l’export OSV, actualisé quotidiennement
Base de vulnérabilités GoAtteignabilité Go (govulncheck)CC-BY-4.0Export Go du miroir OSV, actualisé quotidiennement
GitHub Advisory DatabaseVia OSV et les bases TrivyCC-BY-4.0Via les miroirs OSV et Trivy
Signatures SaneSecurityAnalyse antimalware ClamAVConditions de SaneSecurity : gratuites, financées par les donsUn miroir public SaneSecurity, toutes les 4 heures
YARA-Forge CoreAnalyse antimalware ClamAVDetection Rule License 1.1 ; usage commercial autorisé avec attribution aux auteurs des règlesToutes les 4 heures, releases amont hebdomadaires
Signatures Linux Malware DetectAnalyse antimalware ClamAVGPLv2Toutes les 4 heures, amont quotidien
Signature de test EICARTest de fumée de l’analyse antimalwareLibre d’utilisation (EICAR)Statique, livrée avec le scanner

Fondation de la plateforme

CoucheOutil / fournisseurUtilisationLicence / positionnement
Registre de conteneursT Cloud Public SWRToutes les images fremforge. Source unique pour les récupérations à l’exécution ; miroir de chaque registre amontFournisseur (Deutsche Telekom, eu-de)
KubernetesT Cloud Public CCE Turbo (Cloud Native Network 2.0)Charges de travail de la plateforme (Forgejo, monolithe du plan de contrôle, jobs). ENI + groupe de sécurité par pod via le CNI Yangtse. Les runners CI ne s’exécutent pas ici : voir la ligne ECS ci-dessousFournisseur (Deutsche Telekom, eu-de)
Calcul des runners CI hébergésT Cloud Public ECS (VM éphémère par commit)Une VM ECS éphémère par commit/PR ; noyau dédié (isolé par hyperviseur), supprimée après le job ; groupe de sécurité VPC par VM (aucun trafic entrant, trafic VM à VM refusé, sortie via le proxy des runners protégé contre le SSRF)Fournisseur (Deutsche Telekom, eu-de)
Stockage objet (opérateur)T Cloud Public OBSAncre WORM de la chaîne d’audit, archive des SBOM, export de données, état OpenTofuFournisseur (Deutsche Telekom, eu-de)
Base de données relationnelleT Cloud Public RDS (PostgreSQL 15)État de l’API, tables des tenants et des résultats, chaîne d’auditFournisseur (Deutsche Telekom, eu-de)
Cache en mémoireT Cloud Public DCS RedisCompteurs de limitation de débit, IP déjà vues lors de l’échange de jetons, cache de sessionFournisseur (Deutsche Telekom, eu-de)
Gestion des clésT Cloud Public DEWMASTER_ENCRYPTION_KEY, CA racine Fulcio, clé de signature de la TSAFournisseur (HSM FIPS 140-2 niveau 3, Allemagne)
Function-as-a-serviceT Cloud Public FunctionGraphTâches cron planifiées et tâches de nettoyageFournisseur (Deutsche Telekom, eu-de)
Journaux et métriquesT Cloud Public LTS + CESJournaux applicatifs, alarmes par mot-clé, métriques de SLOFournisseur (Deutsche Telekom, eu-de)
Edge / CDNBunny CDNTerminaison TLS, mise en cache en périphérie dans l’UE, règles edge, plancher de limitation de débitFournisseur (siège en Slovénie, hébergé dans l’UE, aucun sous-traitant américain)
E-mail transactionnelLettermintE-mails d’authentification, avis de facturation, alertesFournisseur (Pays-Bas, conforme au RGPD)
Boîte aux lettres opérationnellemailbox.orgCourrier d’administration entrant *@frem.shFournisseur (Allemagne)
Traitement des paiementsMollieCarte et prélèvement SEPAFournisseur (Pays-Bas, conforme au RGPD)
ComptabilitéDineroÉmission des factures et comptabilitéFournisseur (Danemark, conforme au RGPD)
Sonde de disponibilité externeupdown.ioSondes de disponibilité hors réseau (API, Forgejo, Kuma, site marketing, Authentik)Fournisseur (France)

Chaque fournisseur de cette liste est contractuellement hébergé dans l’UE, sans sous-traitant américain dans le chemin des données. Le DPA complet et la chaîne de sous-traitants figurent sur la page de confiance.

Ce que nous n’utilisons délibérément pas

Fournisseur / outil écartéPourquoi
github.com (en direct)Souveraineté européenne + Schrems II + règle de contact amont. Uniquement via miroir.
GitHub Advanced Security (CodeQL, etc.)Règles de détection propriétaires que vous ne pouvez pas auditer. Nous utilisons OpenGrep + Trivy + osv-scanner : tous open source, tous auditables.
Microsoft 365, Entra, DefenderMême raison. Le produit fremforge n’a aucune empreinte Microsoft. (L’informatique interne de fremverk relève d’un monde d’identité distinct.)
Fulcio/Rekor publics de Sigstore (sigstore.dev)Hébergés aux États-Unis ; le chemin de vérification ferait un aller-retour hors de l’UE. Nous exploitons notre propre Fulcio + TSA dans eu-de, avec la CA racine dans DEW KMS. Pas de Rekor ni de journal de transparence, par conception : l’horodatage ancré par la TSA est la primitive d’intégrité.
AWS, GCP, AzureClouds sous contrôle américain. T Cloud Public est exploité par Deutsche Telekom sur une pile dérivée de Huawei ; le provider OpenTofu est le fork maintenu pour OTC (opentelekomcloud/opentelekomcloud, jamais huaweicloud/huaweicloud).
Cloudflare, Fastly, AkamaiEdge sous contrôle d’un cloud américain. Bunny CDN a son siège dans l’UE et est contractuellement hébergé dans l’UE.
Ressources chargées depuis les CDN Google Fonts, jsDelivr, unpkgUn CDN tiers expose les schémas de trafic à des points de présence américains. Toutes les polices et tous les JS/CSS sont auto-hébergés à www.frem.sh/fonts/ via Bunny UE.
Identifiants de compte de service à longue durée de vie dans les workflows clientsLa fédération de jetons OIDC (OIDC des workflows) et l’authentification native pour les agents les remplacent. Les clés à longue durée de vie sont une voie optionnelle et dépréciée, signalée par une bannière de dépréciation.

Comment intégrer cette nomenclature à votre propre dossier d’audit

Pour une réponse à un appel d’offres ou un questionnaire fournisseur : liez directement cette page. L’URL est stable : https://docs.frem.sh/security/bill-of-materials/.

Pour des preuves BSI C5 ou ISO 27001 : demandez l’instantané PDF daté à security@frem.sh. Nous pouvons aussi produire sur demande un SBOM au format CycloneDX de la plateforme elle-même (et pas seulement par release), utile pour rapprocher les CVE transitives.

Pour une vérification continue : chaque release de chaque composant fremforge publie un SBOM CycloneDX généré par Syft, et la provenance SLSA-L2 côté client épingle le condensé de chaque artefact attesté. La provenance est une enveloppe DSSE / in-toto signée en Ed25519 (<asset>.intoto.jsonl) ; vérifiez-la par rapport à la racine de confiance publiée par fremforge avec la recette curl/jq/openssl/python3 de Provenance SLSA.

Dérive : cette nomenclature est aujourd’hui maintenue à la main. Écrivez à security@frem.sh si vous avez besoin d’un instantané à jour avant un audit.

Voir aussi