Project

General

Profile

Bug #22030 » 0013372.diff

Administrator Admin, 2010-01-30 12:17

View differences:

typo3/sysext/saltedpasswords/sv1/class.tx_saltedpasswords_sv1.php (working copy)
*/
protected $objInstanceSaltedPW = NULL;
/**
* Determines if no further authentication service should
* by tried when authentication fails.
*
* Prevents authentication bypass. See vulnerability report:
* { @link http://bugs.typo3.org/view.php?id=13372 }
*
* @var boolean
*/
protected $boolOverwriteOnlyAuthService = FALSE;
/**
* Checks if service is available. In case of this service we check that
* following prerequesties are fulfilled:
......
if (is_object($this->objInstanceSaltedPW)) {
$validPasswd = $this->objInstanceSaltedPW->checkPassword($password,$user['password']);
// record is in format of Salted Hash password but authentication failed
// skip further authentication methods
if (!$validPasswd) {
$this->boolOverwriteOnlyAuthService = TRUE;
}
$defaultHashingClassName = tx_saltedpasswords_div::getDefaultSaltingHashingMethod();
$skip = FALSE;
......
$validPasswd = $this->objInstanceSaltedPW->checkPassword(md5($password), substr($user['password'], 1));
}
// skip further authentication methods
if (!$validPasswd) {
$this->boolOverwriteOnlyAuthService = TRUE;
}
// password is stored as md5
} else if (preg_match('/[0-9abcdef]{32,32}/', $user['password'])) {
$validPasswd = (!strcmp(md5($password), $user['password']) ? TRUE : FALSE);
// skip further authentication methods
if (!$validPasswd) {
$this->boolOverwriteOnlyAuthService = TRUE;
}
// password is stored plain or unrecognized format
} else {
$validPasswd = (!strcmp($password, $user['password']) ? TRUE : FALSE);
......
// instanciate default method class
$this->objInstanceSaltedPW = tx_saltedpasswords_salts_factory::getSaltingInstance(NULL);
$this->updatePassword(
intval($user['uid']),
intval($user['uid']),
array('password' => $this->objInstanceSaltedPW->getHashedPassword($password))
);
}
......
);
}
if (!$validPasswd && intval($this->extConf['onlyAuthService'])) {
if (!$validPasswd && (intval($this->extConf['onlyAuthService']) || $this->boolOverwriteOnlyAuthService)) {
// Failed login attempt (wrong password) - no delegation to further services
$this->writeLog(
TYPO3_MODE . ' Authentication failed - wrong password for username \'%s\'',
(1-1/2)