mirror of
https://we.phorge.it/source/phorge.git
synced 2024-11-08 16:02:40 +01:00
Don't use "phutil_hashes_are_identical()" to compare public keys
Summary: Ref T13436. There's no real security value to doing this comparison, it just wards off evil "security researchers" who get upset if you ever compare two strings with a non-constant-time algorithm. In practice, SSH public keys are pretty long, pretty public, and have pretty similar lengths. This leads to a relatively large amount of work to do constant-time comparisons on them (we frequently can't abort early after identifying differing string length). Test Plan: Ran `bin/ssh-auth --sshd-key ...` on `secure` with ~1K keys, saw runtime drop by ~50% (~400ms to ~200ms) with `===`. Maniphest Tasks: T13436 Differential Revision: https://secure.phabricator.com/D20875
This commit is contained in:
parent
24f771c1bc
commit
4a53fc339e
1 changed files with 1 additions and 1 deletions
|
@ -109,7 +109,7 @@ if ($authstruct === null) {
|
||||||
if ($sshd_key !== null) {
|
if ($sshd_key !== null) {
|
||||||
$matches = array();
|
$matches = array();
|
||||||
foreach ($authstruct['keys'] as $key => $key_struct) {
|
foreach ($authstruct['keys'] as $key => $key_struct) {
|
||||||
if (phutil_hashes_are_identical($key_struct['key'], $sshd_key)) {
|
if ($key_struct['key'] === $sshd_key) {
|
||||||
$matches[$key] = $key_struct;
|
$matches[$key] = $key_struct;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in a new issue