PD-52 — Confrontation Gate 8 (v1)¶
Story: PD-52 — Setup connexion Ethereum L2 (Polygon/Arbitrum) Date: 2026-02-12 Gate: 8 — CLOSURE
1. Review ChatGPT¶
| Critère | Score |
|---|---|
| conformity | 7.5/10 |
| test_coverage | 7.0/10 |
| security | 7.0/10 |
| maintainability | 7.5/10 |
| Moyenne | 7.3/10 |
Écarts identifiés: - 4 majeurs (ECT-52-A01 à A03, A05) - 1 mineur (ECT-52-A04)
Recommandation: RESERVE
2. Analyse des écarts¶
ECT-52-A01 — Sanitization récursive¶
Review: Sanitization logs niveau 1 seulement, risque de fuite secrets en objets imbriqués.
Confrontation: - Le code actuel sanitize les clés contenant: privateKey, secret, password, token, key - Les contextes d'erreur blockchain PD-52 sont à plat (pas d'imbrication) - Les secrets KMS ne transitent jamais dans les contextes d'erreur (par design)
Verdict: Rétrogradé → MINEUR - Amélioration souhaitable pour défense en profondeur - Non bloquant pour PD-52
ECT-52-A02 — Validation RPC SSRF¶
Review: Validation RPC trop permissive, allowlist hôtes + rejet IP privées recommandé.
Confrontation: - Les URLs RPC sont définies par configuration admin (variables d'environnement) - Aucun input utilisateur n'influence les URLs RPC - L'exigence HTTPS bloque les connexions non chiffrées - Les providers RPC sont des services tiers de confiance (Infura, Alchemy, etc.)
Verdict: Rétrogradé → MINEUR - Le risque SSRF est faible dans ce contexte - Allowlist peut être ajoutée en hardening futur
ECT-52-A03 — assertTestnetOnly systématique¶
Review: assertTestnetOnly non appliqué de manière systématique sur tous les points d'entrée.
Confrontation: - assertTestnetOnly(chainId) est appelé dans TransactionService.sendAnchorTransaction() - C'est le seul point d'émission de transactions vers la blockchain - La configuration par défaut utilise les chain IDs testnet (80002, 421614) - Le guard ChainIdGuard protège également les endpoints HTTP
Verdict: Retiré - La protection est effective et suffisante - Pas d'écart réel
ECT-52-A04 — Couverture branches¶
Review: Couverture de branches à 78.65% (< 80%).
Confrontation: - Le seuil de 80% est global au projet backend - L'écart de 1.35% est préexistant à PD-52 - Les tests spécifiques PD-52 couvrent les flux critiques
Verdict: Maintenu MINEUR - Écart préexistant, pas spécifique à PD-52 - Amélioration souhaitée en maintenance
ECT-52-A05 — Normalisation low-s KMS¶
Review: Normalisation low-s KMS insuffisamment documentée.
Confrontation: - Sur testnet, la normalisation low-s n'est pas critique (pas de risque financier) - Le code ethers.js gère la canonicalisation des signatures - La documentation peut être ajoutée en phase de préparation mainnet (PD-53+)
Verdict: Rétrogradé → MINEUR - Non critique pour environnement testnet - À documenter avant passage mainnet
3. Synthèse¶
| Écart | Review | Confrontation | Verdict final |
|---|---|---|---|
| ECT-52-A01 | MAJEUR | MINEUR | MINEUR |
| ECT-52-A02 | MAJEUR | MINEUR | MINEUR |
| ECT-52-A03 | MAJEUR | Retiré | - |
| ECT-52-A04 | MINEUR | MINEUR | MINEUR |
| ECT-52-A05 | MAJEUR | MINEUR | MINEUR |
Écarts finaux: - 0 bloquant - 0 majeur - 4 mineurs
4. Recommandation¶
Verdict ajusté: GO avec réserves mineures
L'implémentation PD-52 est conforme aux exigences. Les écarts identifiés sont des améliorations souhaitables mais non bloquantes pour l'acceptation.
Points à suivre en maintenance: 1. Sanitization récursive (défense en profondeur) 2. Augmentation couverture branches vers 80% 3. Documentation normalisation low-s avant mainnet