Aller au contenu

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, et got re-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 UPDATE sans DELETE laissent 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