« Volver al listado

CVE-2026-21871

Estado: AnalizadaMedia (6.1)—

NiceGUI is a Python-based UI framework. From versions 2.13.0 to 3.4.1, there is a XSS risk in NiceGUI when developers pass attacker-controlled strings into ui.navigate.history.push() or ui.navigate.history.replace(). These helpers are documented as History API wrappers for updating the browser URL without page reload. However, if the URL argument is embedded into generated JavaScript without proper escaping, a crafted payload can break out of the intended string context and execute arbitrary JavaScript in the victim’s browser. Applications that do not pass untrusted input into ui.navigate.history.push/replace are not affected. This issue has been patched in version 3.5.0.

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).

Tecnologías afectadas (1)

CWE

Referencias

JSON original (NVD)

Mostrar
{
  "id": "CVE-2026-21871",
  "cveTags": [],
  "metrics": {
    "ssvcV203": [
      {
        "source": "134c704f-9b21-4f2e-91b3-4a467353bcc0",
        "ssvcData": {
          "id": "CVE-2026-21871",
          "role": "CISA Coordinator",
          "options": [
            {
              "exploitation": "poc"
            },
            {
              "automatable": "no"
            },
            {
              "technicalImpact": "partial"
            }
          ],
          "version": "2.0.3",
          "timestamp": "2026-01-08T15:14:43.571499Z"
        }
      }
    ],
    "cvssMetricV31": [
      {
        "type": "Secondary",
        "source": "security-advisories@github.com",
        "cvssData": {
          "scope": "CHANGED",
          "version": "3.1",
          "baseScore": 6.1,
          "attackVector": "NETWORK",
          "baseSeverity": "MEDIUM",
          "vectorString": "CVSS:3.1/AV:N/AC:L/PR:N/UI:R/S:C/C:L/I:L/A:N",
          "integrityImpact": "LOW",
          "userInteraction": "REQUIRED",
          "attackComplexity": "LOW",
          "availabilityImpact": "NONE",
          "privilegesRequired": "NONE",
          "confidentialityImpact": "LOW"
        },
        "impactScore": 2.7,
        "exploitabilityScore": 2.8
      }
    ]
  },
  "affected": [
    {
      "source": "security-advisories@github.com",
      "affectedData": [
        {
          "vendor": "zauberzeug",
          "product": "nicegui",
          "versions": [
            {
              "status": "affected",
              "version": ">= 2.13.0, < 3.5.0"
            }
          ]
        }
      ]
    }
  ],
  "published": "2026-01-08T10:15:55.300",
  "references": [
    {
      "url": "https://github.com/zauberzeug/nicegui/releases/tag/v3.5.0",
      "tags": [
        "Release Notes"
      ],
      "source": "security-advisories@github.com"
    },
    {
      "url": "https://github.com/zauberzeug/nicegui/security/advisories/GHSA-7grm-h62g-5m97",
      "tags": [
        "Exploit",
        "Vendor Advisory"
      ],
      "source": "security-advisories@github.com"
    }
  ],
  "vulnStatus": "Analyzed",
  "weaknesses": [
    {
      "type": "Secondary",
      "source": "security-advisories@github.com",
      "description": [
        {
          "lang": "en",
          "value": "CWE-79"
        }
      ]
    }
  ],
  "descriptions": [
    {
      "lang": "en",
      "value": "NiceGUI is a Python-based UI framework. From versions 2.13.0 to 3.4.1, there is a XSS risk in NiceGUI when developers pass attacker-controlled strings into ui.navigate.history.push() or ui.navigate.history.replace(). These helpers are documented as History API wrappers for updating the browser URL without page reload. However, if the URL argument is embedded into generated JavaScript without proper escaping, a crafted payload can break out of the intended string context and execute arbitrary JavaScript in the victim’s browser. Applications that do not pass untrusted input into ui.navigate.history.push/replace are not affected. This issue has been patched in version 3.5.0."
    },
    {
      "lang": "es",
      "value": "NiceGUI es un framework de interfaz de usuario (UI) basado en Python. Desde las versiones 2.13.0 hasta la 3.4.1, existe un riesgo de XSS en NiceGUI cuando los desarrolladores pasan cadenas controladas por el atacante a ui.navigate.history.push() o ui.navigate.history.replace(). Estas funciones auxiliares están documentadas como envoltorios de la API de History para actualizar la URL del navegador sin recargar la página. Sin embargo, si el argumento de la URL se incrusta en JavaScript generado sin el escape adecuado, una carga útil diseñada puede salir del contexto de cadena previsto y ejecutar JavaScript arbitrario en el navegador de la víctima. Las aplicaciones que no pasan entradas no confiables a ui.navigate.history.push/replace no se ven afectadas. Este problema ha sido parcheado en la versión 3.5.0."
    }
  ],
  "lastModified": "2026-06-17T10:19:03.873",
  "configurations": [
    {
      "nodes": [
        {
          "negate": false,
          "cpeMatch": [
            {
              "criteria": "cpe:2.3:a:zauberzeug:nicegui:*:*:*:*:*:*:*:*",
              "vulnerable": true,
              "matchCriteriaId": "09329AA3-8C5E-402E-97FB-3BE65F4F0DF7",
              "versionEndExcluding": "3.5.0",
              "versionStartIncluding": "2.13.0"
            }
          ],
          "operator": "OR"
        }
      ]
    }
  ],
  "sourceIdentifier": "security-advisories@github.com"
}