snappymail/test
djmaze a67c85885e @ZaphodB fix(security): two-factor-auth could be switched off with only a session
With 2-step verification enabled, these plugin actions needed nothing but a
session (and the CSRF token that comes with it):

- EnableTwoFactor with Enable=0 switched it off,
- ClearTwoFactorInfo deleted it,
- CreateTwoFactorSecret overwrote the secret with Enable false, i.e. also
  switched it off,
- ShowTwoFactorSecret returned the secret and QR code.

A stolen cookie or an unlocked machine was enough to drop or copy the second
factor. While 2FA is enabled, all four now require a current TOTP or backup
code, checked as at login; a backup code used here is spent. Enabling and the
first setup are unchanged. Backup codes come from random_int() instead of rand().

The settings page asks for the code (the existing "Verification Code" label)
before those actions and sends it. A refused change reloads the real state;
before, any error made the page show 2FA as not configured. A cancelled or
refused "off" puts the checkbox back. TwoFactorAuthSettings.min.js, which is
what is served, is now the same file as the source rather than a separate
hand-minified copy.

test/two-factor-reauth.php drives the real gate with storage and provider
stubbed: open while not enabled; refused with no, a wrong or an unknown backup
code while enabled; allowed with a valid TOTP or backup code, which is spent.
2026-10-27 22:27:03 +01:00
..
carddav.php Test CardDAV for #79 2021-04-15 12:41:01 +02:00
crypt-forgery.php Resolve test load path 2026-10-27 01:33:48 +01:00
header-injection.php Resolve test load path 2026-10-27 01:33:48 +01:00
raw-inline-type.php Resolve test load path 2026-10-27 01:33:48 +01:00
sasl.php Resolve #695 2022-11-23 16:26:26 +01:00
smime-verify.php Resolve test load path 2026-10-27 01:33:48 +01:00
sso.php Resolve test load path 2026-10-27 01:33:48 +01:00
ssrf-ranges.php @ZaphodB fix(security): SSRF gate let through CGNAT, multicast and the server's own IPs 2026-10-27 01:30:31 +01:00
two-factor-reauth.php @ZaphodB fix(security): two-factor-auth could be switched off with only a session 2026-10-27 22:27:03 +01:00