fix(ci): applique aussi le chmod du fichier d'authentification DAST via sudo

This commit is contained in:
Dorian
2026-09-22 14:57:29 +02:00
parent f58fc4ba81
commit ea8f9d0a3a
2 changed files with 21 additions and 1 deletions
+7 -1
View File
@@ -192,8 +192,14 @@ jobs:
# ZAP échoue alors dès le lancement (« File not readable: /zap/auth.conf »), et # ZAP échoue alors dès le lancement (« File not readable: /zap/auth.conf »), et
# `zap-api-scan.py` attend `-T` minutes complètes avant d'abandonner : dix minutes qui # `zap-api-scan.py` attend `-T` minutes complètes avant d'abandonner : dix minutes qui
# ressemblent à un scan actif, pour un daemon mort depuis le début. # ressemblent à un scan actif, pour un daemon mort depuis le début.
#
# Piège vécu (numéro deux) : une fois le fichier passé à l'uid 1000 par `sudo chown`,
# l'utilisateur du runner n'en est plus propriétaire et un `chmod` sans `sudo` échoue
# (« Operation not permitted »). Avec le `-e` implicite de bash sur les étapes GitHub
# Actions, cette erreur arrêtait toute l'étape avant même `docker run` : scan « réussi »
# en une fraction de seconde, sans le moindre journal ni rapport produit.
sudo chown 1000:1000 "$RUNNER_TEMP/zap-auth.conf" sudo chown 1000:1000 "$RUNNER_TEMP/zap-auth.conf"
chmod 644 "$RUNNER_TEMP/zap-auth.conf" sudo chmod 644 "$RUNNER_TEMP/zap-auth.conf"
docker run --name zap --network host \ docker run --name zap --network host \
-v "$PWD/zap-out:/zap/wrk:rw" \ -v "$PWD/zap-out:/zap/wrk:rw" \
-v "$RUNNER_TEMP/zap-auth.conf:/zap/auth.conf:ro" \ -v "$RUNNER_TEMP/zap-auth.conf:/zap/auth.conf:ro" \
+14
View File
@@ -313,6 +313,20 @@ Décisions à savoir défendre :
`-config`/`-configfile` chargé à un niveau visible sans `-d` : les copies de `zap.log` et `-config`/`-configfile` chargé à un niveau visible sans `-d` : les copies de `zap.log` et
`zap-stdout.log` publiées en artefact sont donc caviardées avant publication. `zap-stdout.log` publiées en artefact sont donc caviardées avant publication.
**Deux pièges d'autorisation** sur ce fichier de configuration (`zap-auth.conf`), tous les deux
propres au montage bind Docker : le conteneur y lit avec son propre uid (1000), distinct de celui
du runner qui l'a écrit, sans remappage automatique.
- Un `chmod 600` seul rend le fichier illisible pour le conteneur (« File not readable :
/zap/auth.conf »). ZAP échoue dès le lancement, mais `zap-api-scan.py` attend les `-T` minutes
complètes avant d'abandonner : dix minutes qui ressemblent à un scan actif, pour un daemon mort
depuis le début. Corrigé par `sudo chown 1000:1000` du fichier avant de le passer à `644`.
- Ce `chown` déplace la propriété du fichier hors de l'utilisateur du runner : un `chmod` qui
suit sans `sudo` échoue alors (« Operation not permitted »), et le `-e` implicite des étapes
bash de GitHub Actions arrête toute l'étape avant même `docker run` — un scan « réussi » en une
fraction de seconde, sans le moindre journal ni rapport produit. Les deux commandes doivent
passer par `sudo`.
Les routes d'authentification qui changent l'état du compte (`login`, `password`, `logout-all`, Les routes d'authentification qui changent l'état du compte (`login`, `password`, `logout-all`,
`forgot-password`, `reset-password`) sont exclues du scan actif : elles y déclencheraient la `forgot-password`, `reset-password`) sont exclues du scan actif : elles y déclencheraient la
limitation de débit et fermeraient les sessions sans rien apprendre de plus. limitation de débit et fermeraient les sessions sans rien apprendre de plus.