« Volver al listado

CVE-2026-33746

Estado: AnalizadaCrítica (9.8)—

Convoy is a KVM server management panel for hosting businesses. From version 3.9.0-beta to before version 4.5.1, the JWTService::decode() method did not verify the cryptographic signature of JWT tokens. While the method configured a symmetric HMAC-SHA256 signer via lcobucci/jwt, it only validated time-based claims (exp, nbf, iat) using the StrictValidAt constraint. The SignedWith constraint was not included in the validation step.

Leer descripción completaMostrar menos

This means an attacker could forge or tamper with JWT token payloads — such as modifying the user_uuid claim — and the token would be accepted as valid, as long as the time-based claims were satisfied. This directly impacts the SSO authentication flow (LoginController::authorizeToken), allowing an attacker to authenticate as any user by crafting a token with an arbitrary user_uuid. This issue has been patched in version 4.5.1.

CVSS

Probabilidad de explotación (EPSS)

EPSS (Exploit Prediction Scoring System, de FIRST) estima la probabilidad de que una vulnerabilidad sea explotada en 30 días. Complementa a CVSS (impacto) y a CISA KEV (explotación confirmada).

🎯 Técnicas ATT&CK

Cómo se explota esta vulnerabilidad y qué consigue el atacante, en el lenguaje de MITRE ATT&CK.

AV:N/AC:L/PR:N sin UI permite explotación remota sin autenticación (T1190). El bypass de firma JWT permite forjar tokens con user_uuid arbitrario para autenticarse como cualquier usuario (T1078), comprometiendo SSO.

Inferido por nuestro agente de análisis a partir de la descripción oficial, el vector CVSS y la CWE, y comprobado por un supervisor. Puede contener errores.

🛡️ Mitigaciones ATT&CK que cubren estas técnicas

Tecnologías afectadas (1)

CWE

Referencias

JSON original (NVD)

Mostrar
{
  "id": "CVE-2026-33746",
  "cveTags": [],
  "metrics": {
    "ssvcV203": [
      {
        "source": "134c704f-9b21-4f2e-91b3-4a467353bcc0",
        "ssvcData": {
          "id": "CVE-2026-33746",
          "role": "CISA Coordinator",
          "options": [
            {
              "exploitation": "none"
            },
            {
              "automatable": "yes"
            },
            {
              "technicalImpact": "total"
            }
          ],
          "version": "2.0.3",
          "timestamp": "2026-04-02T18:49:33.555330Z"
        }
      }
    ],
    "cvssMetricV31": [
      {
        "type": "Secondary",
        "source": "security-advisories@github.com",
        "cvssData": {
          "scope": "UNCHANGED",
          "version": "3.1",
          "baseScore": 9.8,
          "attackVector": "NETWORK",
          "baseSeverity": "CRITICAL",
          "vectorString": "CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H",
          "integrityImpact": "HIGH",
          "userInteraction": "NONE",
          "attackComplexity": "LOW",
          "availabilityImpact": "HIGH",
          "privilegesRequired": "NONE",
          "confidentialityImpact": "HIGH"
        },
        "impactScore": 5.9,
        "exploitabilityScore": 3.9
      }
    ]
  },
  "affected": [
    {
      "source": "security-advisories@github.com",
      "affectedData": [
        {
          "vendor": "ConvoyPanel",
          "product": "panel",
          "versions": [
            {
              "status": "affected",
              "version": ">= 3.9.0-beta, < 4.5.1"
            }
          ]
        }
      ]
    }
  ],
  "published": "2026-04-02T16:16:22.803",
  "references": [
    {
      "url": "https://github.com/ConvoyPanel/panel/releases/tag/v4.5.1",
      "tags": [
        "Release Notes"
      ],
      "source": "security-advisories@github.com"
    },
    {
      "url": "https://github.com/ConvoyPanel/panel/security/advisories/GHSA-92pg-3w49-4w5x",
      "tags": [
        "Vendor Advisory"
      ],
      "source": "security-advisories@github.com"
    }
  ],
  "vulnStatus": "Analyzed",
  "weaknesses": [
    {
      "type": "Secondary",
      "source": "security-advisories@github.com",
      "description": [
        {
          "lang": "en",
          "value": "CWE-287"
        },
        {
          "lang": "en",
          "value": "CWE-347"
        }
      ]
    }
  ],
  "descriptions": [
    {
      "lang": "en",
      "value": "Convoy is a KVM server management panel for hosting businesses. From version 3.9.0-beta to before version 4.5.1, the JWTService::decode() method did not verify the cryptographic signature of JWT tokens. While the method configured a symmetric HMAC-SHA256 signer via lcobucci/jwt, it only validated time-based claims (exp, nbf, iat) using the StrictValidAt constraint. The SignedWith constraint was not included in the validation step. This means an attacker could forge or tamper with JWT token payloads — such as modifying the user_uuid claim — and the token would be accepted as valid, as long as the time-based claims were satisfied. This directly impacts the SSO authentication flow (LoginController::authorizeToken), allowing an attacker to authenticate as any user by crafting a token with an arbitrary user_uuid. This issue has been patched in version 4.5.1."
    },
    {
      "lang": "es",
      "value": "Convoy es un panel de gestión de servidores KVM para empresas de alojamiento. Desde la versión 3.9.0-beta hasta antes de la versión 4.5.1, el método JWTService::decode() no verificaba la firma criptográfica de los tokens JWT. Aunque el método configuraba un firmante simétrico HMAC-SHA256 a través de lcobucci/jwt, solo validaba las reclamaciones basadas en el tiempo (exp, nbf, iat) utilizando la restricción StrictValidAt. La restricción SignedWith no estaba incluida en el paso de validación. Esto significa que un atacante podría falsificar o manipular las cargas útiles de los tokens JWT - como modificar la reclamación user_uuid - y el token sería aceptado como válido, siempre que las reclamaciones basadas en el tiempo se cumplieran. Esto impacta directamente el flujo de autenticación SSO (LoginController::authorizeToken), permitiendo a un atacante autenticarse como cualquier usuario creando un token con un user_uuid arbitrario. Este problema ha sido parcheado en la versión 4.5.1."
    }
  ],
  "lastModified": "2026-07-24T21:10:00.143",
  "configurations": [
    {
      "nodes": [
        {
          "negate": false,
          "cpeMatch": [
            {
              "criteria": "cpe:2.3:a:convoypanel:convoy:*:*:*:*:*:*:*:*",
              "vulnerable": true,
              "matchCriteriaId": "2833A04F-7442-4174-A9EA-C4C44F1F882A",
              "versionEndExcluding": "4.5.1"
            }
          ],
          "operator": "OR"
        }
      ]
    }
  ],
  "sourceIdentifier": "security-advisories@github.com"
}