fix(auth): leurre anti-enumeration sur la demande de reset #26
No reviewers
Labels
No labels
auto-merge
No milestone
No project
No assignees
1 participant
Notifications
Due date
No due date set.
Dependencies
No dependencies set.
Reference: AcadeNice/corentin_wakdo#26
Loading…
Add table
Reference in a new issue
No description provided.
Delete branch "fix/reset-enumeration-decoy"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Finding LOW (audit 2026-06-16)
PasswordResetService::requestResetrepondait instantanement et sans ecriture sur un email inconnu, alors que le chemin email-connu fait :random_bytes(32)+sha256+UPDATE user+ envoi de mail. -> oracle de timing + de profil d'ecritures revelant l'existence d'un compte. Le commit P2 (#11) annoncait une parite anti-enumeration "PR-wide (timing + profil d'ecritures identique)" : vraie sur le login, pas sur le reset.Correctif
payEnumerationDecoy(): sur email inconnu, reproduit le cout CPU (token CSPRNG + SHA-256) et une ecriture du chemin connu, mais ciblantid = 0(aucune ligne, rien persiste). Aucun mail. Meme pattern que le leurre du login (UPDATE ... WHERE id = 0).id = 0+ aucun mail (au lieu de 0 ecriture).Suite 188 verte (451 assertions), PHPStan L6 propre. Pas de label auto-merge.