Skip to content

refactor(blue-memory): flag roté hors dépôt via challenge.env - #18

Merged
Jacob-dot-bit merged 1 commit into
mainfrom
Blue-Team-Memory-Forensics-flag-rotation
Jul 24, 2026
Merged

refactor(blue-memory): flag roté hors dépôt via challenge.env#18
Jacob-dot-bit merged 1 commit into
mainfrom
Blue-Team-Memory-Forensics-flag-rotation

Conversation

@Jacob-dot-bit

Copy link
Copy Markdown
Owner

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.

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.
Copilot AI review requested due to automatic review settings July 24, 2026 13:31

Copilot AI left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

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 (FLAG env > 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 .gitignore pour é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).
@Jacob-dot-bit
Jacob-dot-bit merged commit 01a6ff5 into main Jul 24, 2026
1 check passed
@Jacob-dot-bit
Jacob-dot-bit deleted the Blue-Team-Memory-Forensics-flag-rotation branch July 24, 2026 13:43
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants