Aller au contenu

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