verify(security): seed STATE+SECURITY + defenseur rescan (#76) #79

Merged
maximus merged 1 commit from fix/vuln-C-verification into master 2026-04-24 18:14:35 +00:00
Owner

Closes #76

Generated autonomously by /autopilot run of 2026-04-24

Summary

PR de verification pour la milestone overnight-2026-04-24-vuln-simpl-liste. Seed de STATE.md + SECURITY.md qui documentent l'etat securite post-overrides (#77 + #78).

Base : construite sur fix/vuln-B-uuid-override (PR #78), qui est construite sur fix/vuln-A-xmldom-override (PR #77). Merge sequentiel : #77#78#79.

Resultats verification

Defenseur scan (post-overrides)

Checks: 12/13 passed
Findings: 18 total
  MEDIUM: 18

Analyse :

  • Les 4 HIGH xmldom ont disparu (override ^0.8.13 OK).
  • Les 18 MEDIUM restants remontent TOUTES a GHSA-w5hq-g745-h8pq (uuid) via la chaine transitive xcode/ngrok/@expo/*. Une seule advisory racine, cascade via les packages qui ont uuid dans leur tree.
  • Non-exploitable en pratique : xcode + @expo/ngrok utilisent uniquement uuid.v4(), le bug concerne v3/v5/v6+buf.

Critere d'acceptation spec : 0 HIGH + 0 MEDIUMNON satisfait (18 MEDIUM residuels, tous derives).

Decision Max requise (label status:needs-clarification applique a issue #76) :

  • Option A : accepter le residuel. Mettre a jour SECURITY.md et spec-plan-vuln-simpl-liste.md pour refleter la realite de l'advisory range.
  • Option B : bump uuid a ^14.0.0 — casse potentielle xcode + ngrok (ESM-only). A tester en CI isole avant de merger.

EAS build preview — FINISHED OK

Les overrides n'ont pas casse la chaine de build Android. xmldom et uuid fonctionnent correctement au build time.

Docs crees

  • STATE.md — pattern 3-sections (Position actuelle / Decisions recentes / Blockers actifs) avec flag explicite du blocker uuid residuel.
  • SECURITY.md — table CVE resolues + nouvelle section "CVE residuelles" (ajout autopilot au format spec D10) pour documenter la mitigation partielle.

Caveats (review humaine requise)

  • EAS build preview : FINISHED (APK disponible, build time nominal)
  • Defenseur retourne 18 MEDIUM, spec exige 0 MEDIUM — trancher Option A/B
  • SECURITY.md ajoute une section "CVE residuelles" non prevue par la spec — valider le format
  • Spec plan spec-plan-vuln-simpl-liste.md et spec-decisions-vuln-simpl-liste.md restent non-commit sur master — a trier (archiver ou supprimer apres merge)

Decisions (autopilot)

  • [MEDIUM] Ship docs + flag needs-clarification plutot qu'abort : les docs sont utiles independamment du choix final sur uuid, et le fix xmldom est definitivement resolu.
  • [MEDIUM] Ajout section "CVE residuelles" dans SECURITY.md (non specifiee par D10) pour documenter correctement la mitigation partielle.
  • [HIGH] Pas de bump version/versionCode (D8).
  • [HIGH] EAS build preview reussi — smoke test valide, chaine de build non cassee par overrides.
Closes #76 Generated autonomously by /autopilot run of 2026-04-24 ## Summary PR de verification pour la milestone `overnight-2026-04-24-vuln-simpl-liste`. Seed de `STATE.md` + `SECURITY.md` qui documentent l'etat securite post-overrides (#77 + #78). > **Base** : construite sur `fix/vuln-B-uuid-override` (PR #78), qui est construite sur `fix/vuln-A-xmldom-override` (PR #77). **Merge sequentiel** : #77 → #78 → #79. ## Resultats verification ### Defenseur scan (post-overrides) ``` Checks: 12/13 passed Findings: 18 total MEDIUM: 18 ``` **Analyse** : - Les 4 HIGH xmldom ont disparu (override ^0.8.13 OK). - Les 18 MEDIUM restants remontent TOUTES a `GHSA-w5hq-g745-h8pq` (uuid) via la chaine transitive xcode/ngrok/@expo/*. Une seule advisory racine, cascade via les packages qui ont uuid dans leur tree. - Non-exploitable en pratique : xcode + @expo/ngrok utilisent uniquement `uuid.v4()`, le bug concerne v3/v5/v6+buf. **Critere d'acceptation spec** : `0 HIGH + 0 MEDIUM` — **NON satisfait** (18 MEDIUM residuels, tous derives). **Decision Max requise** (label `status:needs-clarification` applique a issue #76) : - Option A : accepter le residuel. Mettre a jour `SECURITY.md` et `spec-plan-vuln-simpl-liste.md` pour refleter la realite de l'advisory range. - Option B : bump `uuid` a `^14.0.0` — casse potentielle xcode + ngrok (ESM-only). A tester en CI isole avant de merger. ### EAS build preview — **FINISHED** OK - Build ID : `15ded604-9835-4503-a02c-9b431115238e` - App version : `1.6.1` / versionCode `13` (inchange per D8) - Duration : ~3min 17s (11:30:03 -> 11:33:21 UTC, demarrage rapide malgre queue Free tier) - Artifact APK : https://expo.dev/artifacts/eas/3GD1xNYJwLSrxGBrRZ4cNN.apk - Viewer : https://expo.dev/accounts/lacompagniemaximus/projects/simpl-liste/builds/15ded604-9835-4503-a02c-9b431115238e Les overrides n'ont pas casse la chaine de build Android. xmldom et uuid fonctionnent correctement au build time. ### Docs crees - `STATE.md` — pattern 3-sections (Position actuelle / Decisions recentes / Blockers actifs) avec flag explicite du blocker uuid residuel. - `SECURITY.md` — table CVE resolues + nouvelle section "CVE residuelles" (ajout autopilot au format spec D10) pour documenter la mitigation partielle. ## Caveats (review humaine requise) - [x] EAS build preview : FINISHED (APK disponible, build time nominal) - [ ] Defenseur retourne 18 MEDIUM, spec exige 0 MEDIUM — trancher Option A/B - [ ] `SECURITY.md` ajoute une section "CVE residuelles" non prevue par la spec — valider le format - [ ] Spec plan `spec-plan-vuln-simpl-liste.md` et `spec-decisions-vuln-simpl-liste.md` restent non-commit sur `master` — a trier (archiver ou supprimer apres merge) ## Decisions (autopilot) - [MEDIUM] Ship docs + flag needs-clarification plutot qu'abort : les docs sont utiles independamment du choix final sur uuid, et le fix xmldom est definitivement resolu. - [MEDIUM] Ajout section "CVE residuelles" dans SECURITY.md (non specifiee par D10) pour documenter correctement la mitigation partielle. - [HIGH] Pas de bump version/versionCode (D8). - [HIGH] EAS build preview reussi — smoke test valide, chaine de build non cassee par overrides.
maximus added 3 commits 2026-04-24 11:31:20 +00:00
Resolves 4 HIGH CVE in the xmldom transitive dep chain (Expo CLI + xcode/plist).
Not runtime-exploitable in APK (build-time deps only) but cleaned for audit hygiene.

- GHSA-2v35-w6hq-6mfw (DoS — uncontrolled recursion in XML serialization)
- GHSA-f6ww-3ggp-fr8h (XML injection via DOCTYPE serialization)
- GHSA-x6wf-f3px-wcqx (XML injection via processing instruction serialization)
- GHSA-j759-j44w-7fr8 (XML injection via comment serialization)

Refs #74

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
Resolves GHSA-w5hq-g745-h8pq in the transitive chain (xcode + @expo/ngrok).
Per spec decision D3, we pin ^11.0.0 (not ^14.0.0) to avoid ESM-only breaking
CJS consumers. Actual vulnerable code paths (v3/v5/v6 with buf param) are not
used by xcode or @expo/ngrok — they only call uuid.v4() — so the override is
safe in practice even though npm advisory range is <14.0.0.

Refs #75

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
STATE.md follows the 3-section monorepo pattern (Position actuelle, Decisions
recentes, Blockers actifs). SECURITY.md tracks resolved CVE (4 HIGH xmldom)
and residuals (GHSA-w5hq-g745-h8pq uuid, non-exploitable in practice).

Refs #76

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
maximus added the
autopilot:pending-human
status:review
type:security
labels 2026-04-24 11:31:28 +00:00
maximus merged commit cc1e187c85 into master 2026-04-24 18:14:35 +00:00
Sign in to join this conversation.
No reviewers
No milestone
No project
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set.

Reference: maximus/simpl-liste#79
No description provided.