Every CVE Search/ Get API key

CVE-2026-49467

TOTP enrollment hijack: password gate skipped due to unawaited promise

8.8 High

Pingvin Share X is a secure and easy self-hosted file sharing platform. A vulnerability in versions 1.5.0 through 1.18.0 allow an attacker to bypass password verification when managing Time-based One-Time Password (TOTP) settings. The root cause is a missing await keyword on calls to the asynchronous verifyPassword method in authTotp.service.ts and the authenticateUser method in auth.service.ts. In JavaScript, an unawaited Promise is always truthy. So the logic intended to throw a ForbiddenException when a password is incorrect. It never executes because the expression evaluates the existence of the Promise object rather than its resolved boolean result. The vulnerability is fixed in version 1.18.1 by ensuring all asynchronous authentication calls are properly awaited. There are no official workarounds. If a user is locked out, an administrator must manually reset the user's TOTP status in the database.

Attack profile

How easy it is to exploit

Attack vector
Network
Complexity
Low
Privileges needed
Low
User interaction
None

What an attacker can affect

Confidentiality
High
Integrity
High
Availability
High

Exploit likelihood

0.62%Up 0.5 points since Jun 12, 2026
90%50%10%1%

What each source reports

CVE List Score used 8.8

TOTP enrollment hijack: password gate skipped due to unawaited promise

Pingvin Share X is a secure and easy self-hosted file sharing platform. A vulnerability in versions 1.5.0 through 1.18.0 allow an attacker to bypass password verification when managing Time-based One-Time Password (TOTP) settings. The root cause is a missing await keyword on calls to the asynchronous verifyPassword method in authTotp.service.ts and the authenticateUser method in auth.service.ts. In JavaScript, an unawaited Promise is always truthy. So the logic intended to throw a ForbiddenException when a password is incorrect. It never executes because the expression evaluates the existence of the Promise object rather than its resolved boolean result. The vulnerability is fixed in version 1.18.1 by ensuring all asynchronous authentication calls are properly awaited. There are no official workarounds. If a user is locked out, an administrator must manually reset the user's TOTP status in the database.

Record
CVE-2026-49467
CVSS 3.1
8.8 HighCVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:U/C:H/I:H/A:H
Weakness
CWE-303, CWE-304
Updated
2026-11-02
EUVDEUVD-2026-57356 8.8

Pingvin Share X is a secure and easy self-hosted file sharing platform. A vulnerability in versions 1.5.0 through 1.18.0 allow an attacker to bypass password verification when managing Time-based One-Time Password (TOTP) settings. The root cause is a missing await keyword on calls to the asynchronous verifyPassword method in authTotp.service.ts and the authenticateUser method in auth.service.ts. In JavaScript, an unawaited Promise is always truthy. So the logic intended to throw a ForbiddenException when a password is incorrect. It never executes because the expression evaluates the existence of the Promise object rather than its resolved boolean result. The vulnerability is fixed in version 1.18.1 by ensuring all asynchronous authentication calls are properly awaited. There are no official workarounds. If a user is locked out, an administrator must manually reset the user's TOTP status in the database.

Record
EUVD-2026-57356
CVSS 3.1
8.8 HighCVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:U/C:H/I:H/A:H
Updated
2026-11-02
NVD 8.8

Pingvin Share X is a secure and easy self-hosted file sharing platform. A vulnerability in versions 1.5.0 through 1.18.0 allow an attacker to bypass password verification when managing Time-based One-Time Password (TOTP) settings. The root cause is a missing await keyword on calls to the asynchronous verifyPassword method in authTotp.service.ts and the authenticateUser method in auth.service.ts. In JavaScript, an unawaited Promise is always truthy. So the logic intended to throw a ForbiddenException when a password is incorrect. It never executes because the expression evaluates the existence of the Promise object rather than its resolved boolean result. The vulnerability is fixed in version 1.18.1 by ensuring all asynchronous authentication calls are properly awaited. There are no official workarounds. If a user is locked out, an administrator must manually reset the user's TOTP status in the database.

Record
CVE-2026-49467
CVSS 3.1
8.8 HighCVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:U/C:H/I:H/A:H
Weakness
CWE-303, CWE-304
Updated
2026-11-02
OSV 8.8

TOTP enrollment hijack: password gate skipped due to unawaited promise

Pingvin Share X is a secure and easy self-hosted file sharing platform. A vulnerability in versions 1.5.0 through 1.18.0 allow an attacker to bypass password verification when managing Time-based One-Time Password (TOTP) settings. The root cause is a missing await keyword on calls to the asynchronous verifyPassword method in authTotp.service.ts and the authenticateUser method in auth.service.ts. In JavaScript, an unawaited Promise is always truthy. So the logic intended to throw a ForbiddenException when a password is incorrect. It never executes because the expression evaluates the existence of the Promise object rather than its resolved boolean result. The vulnerability is fixed in version 1.18.1 by ensuring all asynchronous authentication calls are properly awaited. There are no official workarounds. If a user is locked out, an administrator must manually reset the user's TOTP status in the database.

Record
CVE-2026-49467
CVSS 3.1
8.8 HighCVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:U/C:H/I:H/A:H
Weakness
CWE-303, CWE-304
Updated
2026-11-02

Affected products

History

History
RecordedChangedSources
aliases, publishedEUVD
first indexedCVE List, NVD, OSV

Dates are when Every CVE recorded each change. Upstream dates may differ.

In short

CVE-2026-49467 is a high vulnerability (CVSS 8.8) in Smp46 Pingvin-share-x, published August 12, 2026. No source lists public exploit code. EPSS puts the chance of exploitation in the next 30 days at 0.62%, the 49th percentile. No source names a fixed version.

References

MoveEnter Open