Rétrospective — PD-180 Webhooks¶
Date : 2026-03-07
Patterns récurrents identifiés¶
1. SSRF DNS Rebinding (NOUVEAU)¶
- Occurrences : PD-180 (première occurrence)
- Pattern : Toute requête HTTP sortante utilisant un hostname (pas une IP directe) est vulnérable au DNS rebinding si la résolution DNS n'est pas pinnée.
axios,fetch, etgotre-résolvent le DNS par défaut. - Recommandation : Ajouter une règle CLAUDE.md pour toute story avec requêtes HTTP sortantes : exiger IP pinning via
https.Agent({ lookup }).
2. Trigger append-only incomplet (RÉCURRENT)¶
- Occurrences : PD-37 (HSM audit), PD-39 (TSA), PD-180 (webhook attempts)
- Pattern : Les triggers
BEFORE UPDATEsansDELETElaissent une brèche dans l'immutabilité. La purge technique nécessite un bypass explicite (SECURITY DEFINER). - Recommandation : Template de trigger append-only standardisé dans les prompts d'implémentation (étape 6b).
3. Phase 7 comme filet de sécurité (RÉCURRENT)¶
- Occurrences : PD-55, PD-82, PD-248, PD-250, PD-180
- Pattern : Les reviews LLM en phase 7 détectent systématiquement des écarts que ni ESLint, ni TSC, ni Sonar ne voient (sémantique, architecture, sécurité réseau).
- Recommandation : Maintenir les 3 reviews parallèles (code/tests/sécurité). Le ROI est confirmé : Gate 8 GO en v1 grâce aux corrections préalables.
4. Couverture de tests partielle sur composants d'orchestration (RÉCURRENT)¶
- Occurrences : PD-55 (workers), PD-180 (processor, listener, delivery service)
- Pattern : Les tests générés (étape 2) couvrent les services de base mais pas les composants d'orchestration (processors, listeners, workers).
- Recommandation : Ajouter dans le prompt de tests (étape 2) une directive : "Inclure au minimum un test par composant d'orchestration (processor, listener, worker)."
Actions process recommandées¶
| # | Action | Cible | Priorité |
|---|---|---|---|
| 1 | Ajouter règle CLAUDE.md : IP pinning obligatoire pour HTTP sortant | .claude/rules/learnings.md | HAUTE |
| 2 | Template trigger append-only (UPDATE OR DELETE + SECURITY DEFINER purge) | templates/ ou prompt step 6b | MOYENNE |
| 3 | Directive tests orchestration dans prompt étape 2 | Prompt step 2 | MOYENNE |