VYPR
Moderate severityNVD Advisory· Published Sep 9, 2025· Updated Sep 9, 2025

Insufficient Entropy in Password Generation

CVE-2025-59015

Description

A deterministic three‑character prefix in the Password Generation component of TYPO3 CMS versions 12.0.0–12.4.36 and 13.0.0–13.4.17 reduces entropy, allowing attackers to carry out brute‑force attacks more quickly.

AI Insight

LLM-synthesized narrative grounded in this CVE's description and references.

TYPO3 CMS password generation uses a deterministic three-character prefix, reducing entropy and enabling faster brute-force attacks in versions 12.0.0–12.4.36 and 13.0.0–13.4.17.

Vulnerability

Description The Password Generation component in TYPO3 CMS versions 12.0.0–12.4.36 and 13.0.0–13.4.17 contains a flaw that reduces entropy. The generateRandomPassword method creates passwords that always begin with a deterministic three-character prefix consisting of a lowercase letter, an uppercase letter, and a digit. This prefix reduces the effective entropy of generated passwords, making them more predictable than expected [1][4].

Exploitation

Attack Surface An attacker can exploit this weakness through remote brute-force attacks against accounts that use passwords generated by the affected component. The attack requires network access to the authentication endpoint and benefits from the reduced entropy, which significantly lowers the number of attempts needed to guess valid passwords. No prior authentication is needed, but the attack complexity is considered high due to the need for multiple attempts [4]. The commit diff shows that the prior str_shuffle function was replaced with a cryptographically secure Randomizer::shuffleBytes method to remove the deterministic prefix [3].

Impact

Exploitation allows an attacker to compromise user accounts more quickly by reducing the time required for brute-force attacks. The CVSS score (CVSS:4.0/AV:N/AC:H/AT:P/PR:N/UI:N/VC:L/VI:L/VA:N/SC:N/SI:N/SA:N) indicates medium severity, with low impacts on confidentiality and integrity [4].

Mitigation

The vulnerability has been fixed in TYPO3 versions 12.4.37 LTS and 13.4.18 LTS. Users are advised to update to these versions or apply the security patch from the core repository [2][4].

AI Insight generated on May 19, 2026. Synthesized from this CVE's description and the cited reference URLs; citations are validated against the source bundle.

Affected packages

Versions sourced from the GitHub Security Advisory.

PackageAffected versionsPatched versions
typo3/cms-corePackagist
>= 12.0.0, < 12.4.3712.4.37
typo3/cms-corePackagist
>= 13.0.0, < 13.4.1813.4.18

Affected products

2

Patches

1
d2057cc7b2c2

[SECURITY] Avoid reduced entropy during password generation

https://github.com/TYPO3-CMS/coreOliver HaderSep 9, 2025via ghsa
2 files changed · +19 1
  • Classes/Crypto/Random.php+3 1 modified
    @@ -17,6 +17,7 @@
     
     namespace TYPO3\CMS\Core\Crypto;
     
    +use Random\Randomizer;
     use TYPO3\CMS\Core\Exception\InvalidPasswordRulesException;
     use TYPO3\CMS\Core\Utility\StringUtility;
     
    @@ -105,6 +106,7 @@ public function generateRandomPassword(array $passwordRules): string
                     );
                 }
     
    +            // enforces that at least one character matches the requirements
                 foreach ($characterSets as $characterSet) {
                     $password .= $characterSet[random_int(0, strlen($characterSet) - 1)];
                 }
    @@ -114,7 +116,7 @@ public function generateRandomPassword(array $passwordRules): string
                     $password .= $characters[random_int(0, $charactersCount - 1)];
                 }
     
    -            str_shuffle($password);
    +            $password = (new Randomizer())->shuffleBytes($password);
             }
     
             return $password;
    
  • Tests/Unit/Crypto/RandomTest.php+16 0 modified
    @@ -204,4 +204,20 @@ public function generateRandomPasswordGeneratesRandomWithLength(
         ): void {
             self::assertEquals($length, strlen((new Random())->generateRandomPassword($passwordRules)));
         }
    +
    +    #[Test]
    +    public function generateRandomPasswordIsUnpredictable(): void
    +    {
    +        $subject = new Random();
    +        $max = 1000;
    +        $count = 0;
    +        for ($i = 0; $i < $max; $i++) {
    +            $result = $subject->generateRandomPassword(['passwordLength' => 12]);
    +            if (preg_match('/^[a-z][A-Z][0-9]/', $result)) {
    +                $count++;
    +            }
    +        }
    +        self::assertNotEquals($max, $count);
    +        self::assertLessThan(0.1, $count / $max);
    +    }
     }
    

Vulnerability mechanics

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

References

4

News mentions

0

No linked articles in our index yet.