[SECURITY] Deny authentication bypass using blowfish/md5 encryption 43/57543/2
authorOliver Hader <oliver@typo3.org>
Thu, 12 Jul 2018 09:31:43 +0000 (11:31 +0200)
committerOliver Hader <oliver.hader@typo3.org>
Thu, 12 Jul 2018 09:31:47 +0000 (11:31 +0200)
Using password hashing methods that are related by class inheritance
can lead to authentication bypass by just knowing a valid username.

Resolves: #84703
Releases: master, 8.7, 7.6
Security-Commit: 17853c536776b6a7332b05b1e10385f4d87868ae
Security-Bulletin: TYPO3-CORE-SA-2018-001
Change-Id: If7a13d3699e217d7d853886b93b84b46f7e22b11
Reviewed-on: https://review.typo3.org/57543
Reviewed-by: Oliver Hader <oliver.hader@typo3.org>
Tested-by: Oliver Hader <oliver.hader@typo3.org>
typo3/sysext/saltedpasswords/Classes/SaltedPasswordService.php

index 9a7b7df..8e03b04 100644 (file)
@@ -109,8 +109,8 @@ class SaltedPasswordService extends \TYPO3\CMS\Sv\AbstractAuthenticationService
             }
             $defaultHashingClassName = \TYPO3\CMS\Saltedpasswords\Utility\SaltedPasswordsUtility::getDefaultSaltingHashingMethod();
             $skip = false;
-            // Test for wrong salted hashing method
-            if ($validPasswd && !(get_class($this->objInstanceSaltedPW) == $defaultHashingClassName) || is_subclass_of($this->objInstanceSaltedPW, $defaultHashingClassName)) {
+            // Test for wrong salted hashing method (only if current method is not related to default method)
+            if ($validPasswd && get_class($this->objInstanceSaltedPW) !== $defaultHashingClassName && !is_subclass_of($this->objInstanceSaltedPW, $defaultHashingClassName)) {
                 // Instantiate default method class
                 $this->objInstanceSaltedPW = \TYPO3\CMS\Saltedpasswords\Salt\SaltFactory::getSaltingInstance(null);
                 $this->updatePassword((int)$user['uid'], ['password' => $this->objInstanceSaltedPW->getHashedPassword($password)]);