VYPR
High severity8.8NVD Advisory· Published Mar 17, 2026· Updated Apr 25, 2026

CVE-2026-4208

CVE-2026-4208

Description

The extension fails to properly reset the generated MFA code after successful authentication. This leads to a possible MFA bypass for future login attempts by providing an empty string as MFA code to the extensions MFA provider.

Affected packages

Versions sourced from the GitHub Security Advisory.

PackageAffected versionsPatched versions
ralffreit/mfa-emailPackagist
< 1.0.71.0.7
ralffreit/mfa-emailPackagist
>= 2.0.0, < 2.0.12.0.1

Affected products

2
  • Mrsilaz/Mfa Mail2 versions
    cpe:2.3:a:mrsilaz:mfa_mail:*:*:*:*:*:typo3:*:*+ 1 more
    • cpe:2.3:a:mrsilaz:mfa_mail:*:*:*:*:*:typo3:*:*range: <1.0.7
    • cpe:2.3:a:mrsilaz:mfa_mail:2.0.0:*:*:*:*:typo3:*:*

Patches

1
0bb7e85b236a

[BUGFIX] Fix a security issue TYPO3-EXT-SA-2026-007

https://github.com/MrSilaz/mfa_emailDmitry DulepovMar 17, 2026via ghsa
1 file changed · +15 1
  • Classes/Mfa/MailProvider.php+15 1 modified
    @@ -19,6 +19,7 @@
     use TYPO3\CMS\Core\Messaging\FlashMessageService;
     use TYPO3\CMS\Core\Type\ContextualFeedbackSeverity;
     use TYPO3\CMS\Core\Utility\GeneralUtility;
    +use TYPO3\CMS\Core\Utility\MathUtility;
     use TYPO3\CMS\Core\View\ViewFactoryData;
     use TYPO3\CMS\Core\View\ViewFactoryInterface;
     use TYPO3\CMS\Core\View\ViewInterface;
    @@ -111,9 +112,20 @@ public function verify(ServerRequestInterface $request, MfaProviderPropertyManag
             $authCodeInput = trim((string)($request->getQueryParams()['authCode'] ?? $request->getParsedBody()['authCode'] ?? ''));
             $properties = $propertyManager->getProperties();
     
    +        if ($authCodeInput === '' || ($properties['authCode'] ?? '') === '') {
    +            // Cannot verify when authCode was not saved or passed empty
    +            return false;
    +        }
    +
             if ($authCodeInput !== $properties['authCode']) {
    -            $properties['attempts'] = (isset($properties['attempts']) && (int)$properties['attempts'] ? (int)$properties['attempts'] : 0);
    +            if (!isset($properties['attempts']) || !MathUtility::canBeInterpretedAsInteger($properties['attempts'])) {
    +                $properties['attempts'] = 0;
    +            }
                 $properties['attempts']++;
    +            if ($properties['attempts'] >= $this->getMaxAttempts()) {
    +                // Reset the code
    +                $properties['authCode'] = '';
    +            }
                 $propertyManager->updateProperties($properties);
                 return false;
             }
    @@ -170,6 +182,8 @@ public function update(ServerRequestInterface $request, MfaProviderPropertyManag
             }
     
             $properties = [
    +            'attempts' => 0,
    +            'authCode' => '',
                 'email' => $email,
                 'active' => true
             ];
    

Vulnerability mechanics

Generated by null/stub on May 9, 2026. Inputs: CWE entries + fix-commit diffs from this CVE's patches. Citations validated against bundle.

References

6

News mentions

0

No linked articles in our index yet.