← Back to CVE Explorer

CVE-2026-49467

Full vulnerability record from the local CVENow database.

Description

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.

Severity
HIGH
CVSS score
8.8 (v3.1)
Vulnerability status
Deferred
Source identifier
Published
2026-08-12 18:17:30.637000
Last modified
2026-10-24 16:10:00.153000
View original CVE JSON
{
  "id": "CVE-2026-49467",
  "sourceIdentifier": "[email protected]",
  "published": "2026-08-12T18:17:30.637",
  "lastModified": "2026-10-24T16:10:00.153",
  "vulnStatus": "Deferred",
  "cveTags": [],
  "descriptions": [
    {
      "lang": "en",
      "value": "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."
    },
    {
      "lang": "es",
      "value": "Pingvin Share X es una plataforma segura y fácil para compartir archivos autoalojada. Una vulnerabilidad en las versiones 1.5.0 a la 1.18.0 permite a un atacante eludir la verificación de contraseña al gestionar la configuración de Contraseña de Un Solo Uso Basada en Tiempo (TOTP). La causa raíz es una palabra clave “await” faltante en las llamadas al método asíncrono “verifyPassword” en “authTotp.service.ts” y al método “authenticateUser” en “auth.service.ts”. En JavaScript, una “Promise” no esperada es siempre veraz. Así, la lógica destinada a lanzar una “ForbiddenException” cuando una contraseña es incorrecta. Nunca se ejecuta porque la expresión evalúa la existencia del objeto “Promise” en lugar de su resultado booleano resuelto. La vulnerabilidad está corregida en la versión 1.18.1 al asegurar que todas las llamadas de autenticación asíncronas sean debidamente esperadas. No hay soluciones alternativas oficiales. Si un usuario queda bloqueado, un administrador debe restablecer manualmente el estado TOTP del usuario en la base de datos."
    }
  ],
  "affected": [
    {
      "source": "[email protected]",
      "affectedData": [
        {
          "vendor": "smp46",
          "product": "pingvin-share-x",
          "versions": [
            {
              "version": ">= 1.5.0, < 1.18.1",
              "status": "affected"
            }
          ]
        }
      ]
    }
  ],
  "metrics": {
    "cvssMetricV31": [
      {
        "source": "[email protected]",
        "type": "Secondary",
        "cvssData": {
          "version": "3.1",
          "vectorString": "CVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:U/C:H/I:H/A:H",
          "baseScore": 8.8,
          "baseSeverity": "HIGH",
          "attackVector": "NETWORK",
          "attackComplexity": "LOW",
          "privilegesRequired": "LOW",
          "userInteraction": "NONE",
          "scope": "UNCHANGED",
          "confidentialityImpact": "HIGH",
          "integrityImpact": "HIGH",
          "availabilityImpact": "HIGH"
        },
        "exploitabilityScore": 2.8,
        "impactScore": 5.9
      }
    ],
    "ssvcV203": [
      {
        "source": "134c704f-9b21-4f2e-91b3-4a467353bcc0",
        "ssvcData": {
          "timestamp": "2026-08-14T21:52:03.631125Z",
          "id": "CVE-2026-49467",
          "options": [
            {
              "exploitation": "none"
            },
            {
              "automatable": "no"
            },
            {
              "technicalImpact": "total"
            }
          ],
          "role": "CISA Coordinator",
          "version": "2.0.3"
        }
      }
    ]
  },
  "weaknesses": [
    {
      "source": "[email protected]",
      "type": "Secondary",
      "description": [
        {
          "lang": "en",
          "value": "CWE-303"
        },
        {
          "lang": "en",
          "value": "CWE-304"
        }
      ]
    }
  ],
  "references": [
    {
      "url": "https://github.com/smp46/pingvin-share-x/security/advisories/GHSA-59q6-jvp6-w282",
      "source": "[email protected]"
    }
  ]
}