
Laboratoire local volontairement vulnérable avec un atelier guidé et des défis CTF pour pratiquer l'exploitation RCE via les options de push Git, la désérialisation non sécurisée, le parsing de clés dupliquées et les écrasements de configuration contre un serveur Git dockerisé.
Un Learning Lab et un Research Lab locaux inspirés des concepts de vulnérabilité publiquement documentés derrière la CVE-2026-3854. Les deux expériences utilisent de véritables pushes Git authentifiés vers ForgeDock, un serveur Git fictif ; le Research Lab.

[!CAUTION] Ce projet est volontairement vulnérable. Exécutez-le uniquement en local. N'exposez pas ses ports sur un réseau public ou partagé. Ne l'utilisez jamais en production.
[!NOTE] Ce dépôt est publié comme référence pédagogique en lecture seule. Il n'accepte ni issues publiques, ni pull requests, ni demandes de fonctionnalités, ni demandes d'assistance. Signalez toute défaillance involontaire de la frontière de sécurité de manière privée, comme décrit dans SECURITY.md.
Un atelier guidé qui enseigne les options de push, la sérialisation non sécurisée, l'analyse des clés dupliquées, la substitution de configuration et la chaîne d'exécution contrainte. Les leçons combinent de brèves explications et des expériences sûres menées sur le laboratoire en cours d'exécution.
Une expérience de type CTF avec trois cartes Challenge séquentielles, des indices facultatifs et des flags générés par le backend. L'interface utilisateur normale n'expose ni le code source, ni les traces, ni la sortie du sérialiseur, ni la sortie de la passerelle d'exécution, ni de procédure guidée pas à pas.
git clone https://github.com/royaleybovich/CVE-2026-3854-lab.git
cd CVE-2026-3854-lab
docker compose up -d --build
Aucune configuration de flag ou d'identifiants n'est requise. Un initialiseur à usage unique crée des valeurs de preuve aléatoires indépendantes et des identifiants de service dans un volume Docker privé lors du premier démarrage. make up est une commande pratique équivalente. Un .env facultatif n'est nécessaire que pour remplacer les valeurs par défaut ou conserver des valeurs explicites en dehors de Docker.
| Service | URL locale |
|---|---|
| Flagship | http://localhost:8080 |
| ForgeDock | http://localhost:3000 |
| Web Terminal | http://localhost:7681 |
Le compte de laboratoire jetable est :
Username: devuser
Password: devpass
Ces identifiants publics n'existent qu'au sein du laboratoire local et jetable. Ne les réutilisez pas ailleurs.
docker compose)La validation de préparation à la publication est vérifiée sur Apple Silicon (arm64). Les autres systèmes d'exploitation et architectures de processeur ne sont pas déclarés comme vérifiés tant que leurs vérifications sur clone propre n'ont pas été enregistrées.
make up # build and start; private lab state is generated automatically
make logs # follow service logs
make reset # delete lab repositories/progress and rebuild
make down # stop the lab without deleting Docker volumes
make test # run unit and live integration tests
make reset supprime les volumes Docker, y compris les dépôts du laboratoire, la progression d'exécution, les valeurs de preuve et les identifiants internes. Le prochain démarrage génère automatiquement de nouvelles valeurs privées.
Les ports publiés sont liés à 127.0.0.1. Redis, l'exécuteur de hooks et les services de traitement internes ne sont pas publiés. L'exécuteur n'a ni socket Docker ni montage du système de fichiers hôte, abandonne les capabilities Linux, utilise un système de fichiers en lecture seule, n'accepte aucune commande shell ni environnement contrôlé par l'appelant, et ne peut invoquer que des exécutables de preuve appartenant exactement au laboratoire. Ces contrôles encadrent l'exercice ; ils ne le rendent pas sûr en cas d'exposition publique.
Browser / Git client
↓
Flagship portal / ForgeDock
↓
Internal processing network
↓
Constrained executor
Consultez la vue d'ensemble du système, le traitement des options de push, le modèle de menace et le guide de déploiement local.
ForgeDock est une reconstruction volontairement simplifiée et sûrement contrainte des concepts de vulnérabilité publiquement documentés derrière la CVE-2026-3854. Elle ne reproduit pas l'implémentation propriétaire de GitHub. Les noms de champs, les frontières de services et le comportement d'exécution diffèrent des implémentations réelles de GitHub et de GitHub Enterprise Server.
Le comportement volontairement vulnérable a été ajouté en aval pour ce laboratoire et ne constitue pas une vulnérabilité amont de Forgejo. ForgeDock n'est pas GitHub, et ce projet n'est ni affilié à, ni approuvé par GitHub, Forgejo, Wiz ou les chercheurs cités.
Ces crédits décrivent des sources et des dépendances ; ils n'impliquent aucune collaboration, approbation ou recommandation.
Les logiciels et contenus pédagogiques créés par Flagship sont sous licence GPL-3.0-or-later, sauf lorsqu'un fichier indique une autre licence compatible. Voir LICENSE, NOTICE.md, la provenance de Forgejo et TRADEMARKS.md. Les licences et mentions de tiers existantes restent en vigueur.