PD-242 — Revue Sécurité¶
Reviewer : ChatGPT (gpt-5.3-codex) — Mode adversarial Date : 2026-02-19
Résumé¶
| Critère | Statut |
|---|---|
| Invariants INV-* | ⚠️ |
| Fuite données | ✅ |
| Timing attacks | ✅ |
| Zeroization | ⚠️ |
| Crypto correctness | ✅ |
Verdict initial ChatGPT : ❌ NON_CONFORME
Audit des invariants¶
| Invariant | Respecté | Commentaire |
|---|---|---|
| INV-242-01 | ✅ | K_recovery jamais envoyée réseau |
| INV-242-02 | ✅ | Phrase reste locale |
| INV-242-03 | ⚠️ | Zeroization try/finally manquante sur exception |
| INV-242-04 | ✅ | HKDF domain separation correcte |
| INV-242-05 | ✅ | Entropie 256 bits |
| INV-242-06 | ✅ | AES-256-GCM + nonce unique |
| INV-242-07 | ⚠️ | Mock tautologique (attendu, backend scope) |
| INV-242-08 | ✅ | Confirmation 24 mots complète |
| INV-242-09 | ✅ | Timeout 120s |
| INV-242-10 | ⚠️ | Protection screenshot TODO (documenté) |
Vulnérabilités identifiées¶
| ID | Description | Gravité | Fichier | Analyse |
|---|---|---|---|---|
| S-01 | Bypass H_verify (mock tautologique) | CRITIQUE → N/A | RestoreScreen:76 | Mock attendu - API backend hors scope |
| S-02 | Zeroization manquante exception deriveRecoveryKey | MAJEUR | recoveryService:97 | À corriger |
| S-03 | Zeroization manquante kRecovery en erreur screens | MAJEUR | CreateScreen:115, RegenerateScreen:143 | À corriger |
| S-04 | Protection screenshot absente | MINEUR | MnemonicDisplay:55 | Documenté (TODO native) |
| S-05 | Parser hex permissif | MAJEUR → MINEUR | utils:39 | UUID validé en amont |
Classification des écarts¶
Vulnérabilités critiques¶
S-01 (bypass H_verify) : Cette "vulnérabilité" est un faux positif. Le mock hVerifyBackend = hVerifyCandidate est explicitement documenté avec // TODO: Appel API réel. L'intégration backend est hors scope PD-242 (dépend de PD-243).
Écarts à corriger (bloquants Gate 8)¶
S-02, S-03 : Zeroization incomplète sur chemins d'exception. Ces écarts sont légitimes et doivent être corrigés :
deriveRecoveryKey: ajoutertry/finallypour garantirzeroize(seed)- Screens : ajouter zeroization dans
catch
Écarts documentés (non bloquants)¶
- S-04 : Protection screenshot nécessite module native (hors scope)
- S-05 : Parser hex permissif mitigé par validation UUID en amont
Verdict ajusté¶
Après analyse, les vulnérabilités CRITIQUE sont des faux positifs (mocks documentés). Les écarts MAJEUR (S-02, S-03) doivent être corrigés avant Gate 8.
Verdict : ⚠️ RÉSERVES (corrections zeroization requises)
Recommandations prioritaires¶
- P0 : Ajouter
try/finallydansderiveRecoveryKeypour zeroizeseed - P0 : Ajouter zeroization
kRecoverydans les blocscatchdes screens - P1 : Documenter explicitement le scope des mocks API
- P2 : Implémenter protection screenshot (future story)