CVE-2026-49467
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.
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
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 High
CVSS: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 High
CVSS: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 High
CVSS: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 High
CVSS: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
| Recorded | Changed | Sources |
|---|---|---|
| aliases, published | EUVD | |
| first indexed | CVE 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.