Changes for version 0.05 - 2026-08-25
- SECURITY (CVE-2026-78619): totp_use_recovery compared the row's user_id with the challenged user's numerically, so identifiers with no leading digits all coerced to 0 and compared equal
- SECURITY (CVE-2026-78655): the challenge route counted failed attempts in the session, which without a session store is a signed cookie the client can replay from before its failures. The count moves to the user row, as totp_failed and totp_failed_at, and belongs to the account rather than the session.
- ADDS: attempt_window (default 900), how long a failed attempt counts for.
- The punk_totp Sqitch change adds the two columns.
- ADDS: plugin 'TOTP' => { sqitch => 1 } ships the five columns as the Sqitch project punk_totp
Modules
a second factor for Punk applications
HOTP and TOTP one-time passwords
Examples
- example/demo.psgi
- example/plugin-demo/README.md
- example/plugin-demo/app.psgi
- example/plugin-demo/config/punk.yml
- example/plugin-demo/lib/TOTPDemo.pm
- example/plugin-demo/lib/TOTPDemo/Backend/Memory.pm
- example/plugin-demo/lib/TOTPDemo/Controller/Web/Account.pm
- example/plugin-demo/lib/TOTPDemo/Controller/Web/Auth.pm
- example/plugin-demo/lib/TOTPDemo/Controller/Web/Vault.pm
- example/plugin-demo/lib/TOTPDemo/Model/Token.pm
- example/plugin-demo/lib/TOTPDemo/Model/User.pm
- example/plugin-demo/root/static/style.css
- example/plugin-demo/root/templates/challenge.tmpl
- example/plugin-demo/root/templates/enrol.tmpl
- example/plugin-demo/root/templates/home.tmpl
- example/plugin-demo/root/templates/layout.tmpl
- example/plugin-demo/root/templates/login.tmpl
- example/plugin-demo/root/templates/vault.tmpl
- example/plugin-demo/t/01-basic.t