[SECURITY] Deny authentication bypass using blowfish/md5 encryption 57/57557/2
authorOliver Hader <oliver@typo3.org>
Thu, 12 Jul 2018 09:35:12 +0000 (11:35 +0200)
committerOliver Hader <oliver.hader@typo3.org>
Thu, 12 Jul 2018 09:35:16 +0000 (11:35 +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: 2951c4fc0529ec0fd6047786edd3b7189428e574
Security-Bulletin: TYPO3-CORE-SA-2018-001
Change-Id: I859a20c85305291e1cd79b61e630bbbfc4e0568a
Reviewed-on: https://review.typo3.org/57557
Reviewed-by: Oliver Hader <oliver.hader@typo3.org>
Tested-by: Oliver Hader <oliver.hader@typo3.org>
typo3/sysext/saltedpasswords/Classes/SaltedPasswordService.php

index 93c311c..3caeea0 100644 (file)
@@ -100,8 +100,8 @@ class SaltedPasswordService extends AbstractAuthenticationService
             }
             $defaultHashingClassName = 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)]);