refactor(blue-memory): flag roté hors dépôt via challenge.env - #18
Merged
Merged
Conversation
Le flag n'est plus codé en dur (il était public dans le dépôt). Il provient désormais de setup/challenge.env (gitignoré) ou de la variable d'env FLAG, sinon d'un placeholder inoffensif. - flag_config.py : résolution env > challenge.env > placeholder (partagé) - generate_challenge.py / generate_pcap.py : lisent le flag via resolve_flag() - generate_challenge.py : génère le hash SHA256 du flag (valout/flag.sha256) - validate_flag.py : lit le hash du flag depuis solution/flag.sha256 (build) - Dockerfile : copie le hash dans l'image (jamais le flag en clair) - challenge.env.example + .gitignore (challenge.env, valout/, flag.sha256) - docs/SOLUTION : flag générique (roté par déploiement) Testé : génération + validateur 100/100 avec un flag roté ; mode placeholder OK.
There was a problem hiding this comment.
Pull request overview
Cette PR retire le flag en clair du dépôt pour permettre une rotation par déploiement : le flag est désormais résolu via variable d’environnement / setup/challenge.env (gitignoré), puis seul son hash SHA256 est embarqué côté validateur afin d’éviter tout spoil.
Changes:
- Ajout d’un mécanisme partagé de résolution du flag (
FLAGenv >setup/challenge.env> placeholder). - Génération et export du hash SHA256 du flag au build (
valout/flag.sha256), puis inclusion dans l’image Docker. - Mise à jour de la documentation (solution + déploiement) et des règles
.gitignorepour éviter tout commit accidentel.
Reviewed changes
Copilot reviewed 9 out of 9 changed files in this pull request and generated 2 comments.
Show a summary per file
| File | Description |
|---|---|
| challenges/2-Blue-Team-Memory-Forensics-Jakub/solution/validate_flag.py | Charge le hash du flag depuis flag.sha256 au lieu d’un hash codé en dur. |
| challenges/2-Blue-Team-Memory-Forensics-Jakub/solution/SOLUTION.md | Remplace le flag en clair par une mention de rotation par déploiement. |
| challenges/2-Blue-Team-Memory-Forensics-Jakub/setup/generate_pcap.py | Utilise resolve_flag() pour injecter le flag dans le PCAP. |
| challenges/2-Blue-Team-Memory-Forensics-Jakub/setup/generate_challenge.py | Utilise resolve_flag() et génère valout/flag.sha256 pour le validateur. |
| challenges/2-Blue-Team-Memory-Forensics-Jakub/setup/flag_config.py | Nouveau module de résolution du flag (env / fichier / placeholder). |
| challenges/2-Blue-Team-Memory-Forensics-Jakub/setup/challenge.env.example | Nouveau modèle de fichier challenge.env pour fournir le flag hors dépôt. |
| challenges/2-Blue-Team-Memory-Forensics-Jakub/docs/ADMIN_DEPLOYMENT.md | Documentation admin mise à jour pour fournir le flag via challenge.env. |
| challenges/2-Blue-Team-Memory-Forensics-Jakub/Dockerfile | Copie du flag.sha256 généré au build dans l’image (pas le flag en clair). |
| challenges/2-Blue-Team-Memory-Forensics-Jakub/.gitignore | Ignore challenge.env, valout/ et solution/flag.sha256. |
💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.
Comment on lines
+18
to
+24
| def _load_flag_hash(): | ||
| path = os.path.join(os.path.dirname(os.path.abspath(__file__)), "flag.sha256") | ||
| try: | ||
| with open(path) as f: | ||
| return f.read().strip() | ||
| except OSError: | ||
| return None |
Comment on lines
+1
to
+10
| # ===================================================================== | ||
| # Modele de configuration du flag — challenge Memory Forensics. | ||
| # | ||
| # 1. Copiez : cp challenge.env.example challenge.env | ||
| # 2. Mettez le VRAI flag (roté) dans challenge.env | ||
| # 3. challenge.env est gitignore : il ne sera jamais committe. | ||
| # | ||
| # Le flag est ensuite cuit dans le dump/PCAP au build, et son hash | ||
| # SHA256 est genere pour le validateur. Alternative : passer FLAG en | ||
| # variable d'environnement / --build-arg (priorite sur ce fichier). |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Le flag n'est plus codé en dur (il était public dans le dépôt). Il provient désormais de setup/challenge.env (gitignoré) ou de la variable d'env FLAG, sinon d'un placeholder inoffensif.
Testé : génération + validateur 100/100 avec un flag roté ; mode placeholder OK.