Lucene search

K
githubGitHub Advisory DatabaseGHSA-875X-G8P7-5W27
HistoryJul 15, 2024 - 4:37 p.m.

The FIDO2/Webauthn Support for PHP library allows enumeration of valid usernames

2024-07-1516:37:49
CWE-204
GitHub Advisory Database
github.com
17
fido2
webauthn
php
username enumeration
authentication method
assertion options
attacker
potential targets
security vulnerability

CVSS3

5.3

Attack Vector

NETWORK

Attack Complexity

LOW

Privileges Required

NONE

User Interaction

NONE

Scope

UNCHANGED

Confidentiality Impact

LOW

Integrity Impact

NONE

Availability Impact

NONE

CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:L/I:N/A:N

AI Score

7.1

Confidence

High

EPSS

0

Percentile

9.3%

Summary

The ProfileBasedRequestOptionsBuilder method returns allowedCredentials without any credentials if no username was found.

Details

When WebAuthn is used as the first or only authentication method, an attacker can enumerate usernames based on the absence of the allowedCredentials property in the assertion options response. This allows enumeration of valid or invalid usernames.

Proposal how to resolve it:

return $this->publicKeyCredentialRequestOptionsFactory->create(
            $this->profile,
            count($allowedCredentials) <= 0 ? self::getRandomCredentials(): $allowedCredentials,
            $optionsRequest->userVerification,
            $extensions
);

private static function getRandomCredentials(): array
{
        $credentialSources = [];
        for ($i = 0; $i <= rand(0,1); $i++) {
            $credentialSources[] = new PublicKeyCredentialSource(
                random_bytes(32),
                "public-key",
                [],
                "basic",
                new EmptyTrustPath(),
                Uuid::v7(),
                random_bytes(77),
                Uuid::v7()->__toString(),
                rand(0, 6000),
                null
            );
        }
        return array_map(
            static fn (PublicKeyCredentialSource $credential): PublicKeyCredentialDescriptor => $credential->getPublicKeyCredentialDescriptor(),
            $credentialSources
        );
}

PoC

curl https://example.com/assertion/options
-H ‘content-type: application/json’
–data-raw ‘{“username”:“NotMeRandomUsername123”}’

Impact

By knowing which usernames are valid, attackers can focus their efforts on a smaller set of potential targets, increasing the efficiency and likelihood of successful attacks.

Affected configurations

Vulners
Node
web-authwebauthn-frameworkRange4.5.04.9.0
OR
web-authwebauthn-libRange4.5.04.9.0
VendorProductVersionCPE
web-authwebauthn-framework*cpe:2.3:a:web-auth:webauthn-framework:*:*:*:*:*:*:*:*
web-authwebauthn-lib*cpe:2.3:a:web-auth:webauthn-lib:*:*:*:*:*:*:*:*

CVSS3

5.3

Attack Vector

NETWORK

Attack Complexity

LOW

Privileges Required

NONE

User Interaction

NONE

Scope

UNCHANGED

Confidentiality Impact

LOW

Integrity Impact

NONE

Availability Impact

NONE

CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:L/I:N/A:N

AI Score

7.1

Confidence

High

EPSS

0

Percentile

9.3%

Related for GHSA-875X-G8P7-5W27