CVE-2026-98764

Estado: RecibidaSin puntuar—
Gravedad—Sin puntuar
Probabilidad de explotación0.17 %mayor que el 6 % de las CVE
Explotación activaNono figura en el catálogo de CISA
Exploit públicoNo conocidosin código público localizado

En el kernel de Linux se ha resuelto la siguiente vulnerabilidad:

usb: gadget: f_fs: Corregir la desreferencia de puntero NULL en FUNCTIONFS_ENDPOINT_DESC

Cuando el espacio de usuario configura FunctionFS solo con descriptores de velocidad completa (por ejemplo, flags = FUNCTIONFS_HAS_FS_DESC) y el gadget funciona a una velocidad superior (como USB_SPEED_HIGH o USB_SPEED_SUPER), config_ep_by_speed() detecta que la función carece de descriptores para la velocidad actual, registra una advertencia y recurre a los descriptores de velocidad completa. A continuación, el endpoint se habilita correctamente mediante usb_ep_enable(), y epfile->ep pasa a ser válido.

Leer descripción completaMostrar menos

Sin embargo, cuando el espacio de usuario emite posteriormente el ioctl FUNCTIONFS_ENDPOINT_DESC para consultar el descriptor del endpoint, ffs_epfile_ioctl() selecciona el índice del descriptor únicamente en función de gadget->speed:

Como el espacio de usuario solo ha proporcionado descriptores de velocidad completa, epfile->ep->descs[1] es NULL. La desreferencia de desc->bLength provoca de inmediato un pánico del kernel por desreferencia de puntero NULL.

Para corregirlo, se recorren los descriptores de velocidad inferior si no se ha proporcionado el descriptor de la velocidad actual, de forma coherente con la lógica de recurso de config_ep_by_speed() y con el comportamiento histórico de f_fs. Si aun así falta, se recurre a epfile->ep->ep->desc (el descriptor activo), y se devuelve -EINVAL de forma segura si no se encuentra ningún descriptor válido. Además, se marca desc como const para que coincida con struct usb_ep::desc y no se descarten calificadores.

Detalles técnicos trazas, registros y código del informe original
	switch (epfile->ffs->gadget->speed) {
	case USB_SPEED_SUPER:
	case USB_SPEED_SUPER_PLUS:
		desc_idx = 2;
		break;
	case USB_SPEED_HIGH:
		desc_idx = 1;
		break;
	default:
		desc_idx = 0;
	}
	desc = epfile->ep->descs[desc_idx];
	memcpy(&desc1, desc, desc->bLength);

Traducción automática del texto original de NVD (en inglés).

CVSS

NVD no ha asignado puntuación CVSS a esta CVE (habitual desde el cambio de política de abril de 2026).

Probabilidad de explotación (EPSS)

Probabilidad de explotación en los próximos 30 días
0.17 %
Percentil entre todas las CVEs puntuadas
6
Fecha de la puntuación
20/10/2026

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)

⚠ Inferidas por IA a partir de la descripción — NVD aún no ha analizado esta CVE; no son CPE verificados.

Referencias

Mostrar las 4 referencias

JSON original (NVD)

Mostrar
{
  "id": "CVE-2026-98764",
  "cveTags": [],
  "metrics": {},
  "affected": [
    {
      "source": "416baaa9-dc9f-4396-8d5f-8c081fb06d67",
      "affectedData": [
        {
          "repo": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git",
          "vendor": "Linux",
          "product": "Linux",
          "versions": [
            {
              "status": "affected",
              "version": "c559a353410939c0884e83bdb0e2420a986ac53b",
              "lessThan": "9d8761b3c133f6c6a6d3486839dac60e2cf4bfe3",
              "versionType": "git"
            },
            {
              "status": "affected",
              "version": "c559a353410939c0884e83bdb0e2420a986ac53b",
              "lessThan": "7811d8e26c77f8eea79e22d0d14c67ec0658b348",
              "versionType": "git"
            },
            {
              "status": "affected",
              "version": "c559a353410939c0884e83bdb0e2420a986ac53b",
              "lessThan": "35ab269602e1f7c4c0fe6ea3477264bea77eced3",
              "versionType": "git"
            },
            {
              "status": "affected",
              "version": "c559a353410939c0884e83bdb0e2420a986ac53b",
              "lessThan": "9cd072788c76595529eb38f42bf94d23852f8534",
              "versionType": "git"
            }
          ],
          "programFiles": [
            "drivers/usb/gadget/function/f_fs.c"
          ],
          "defaultStatus": "unaffected"
        },
        {
          "repo": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git",
          "vendor": "Linux",
          "product": "Linux",
          "versions": [
            {
              "status": "affected",
              "version": "3.18"
            },
            {
              "status": "unaffected",
              "version": "0",
              "lessThan": "3.18",
              "versionType": "semver"
            },
            {
              "status": "unaffected",
              "version": "6.12.113",
              "versionType": "semver",
              "lessThanOrEqual": "6.12.*"
            },
            {
              "status": "unaffected",
              "version": "6.18.56",
              "versionType": "semver",
              "lessThanOrEqual": "6.18.*"
            },
            {
              "status": "unaffected",
              "version": "7.2.10",
              "versionType": "semver",
              "lessThanOrEqual": "7.2.*"
            },
            {
              "status": "unaffected",
              "version": "7.3",
              "versionType": "original_commit_for_fix",
              "lessThanOrEqual": "*"
            }
          ],
          "programFiles": [
            "drivers/usb/gadget/function/f_fs.c"
          ],
          "defaultStatus": "affected"
        }
      ]
    }
  ],
  "published": "2026-10-18T16:17:30.217",
  "references": [
    {
      "url": "https://git.kernel.org/stable/c/35ab269602e1f7c4c0fe6ea3477264bea77eced3",
      "source": "416baaa9-dc9f-4396-8d5f-8c081fb06d67"
    },
    {
      "url": "https://git.kernel.org/stable/c/7811d8e26c77f8eea79e22d0d14c67ec0658b348",
      "source": "416baaa9-dc9f-4396-8d5f-8c081fb06d67"
    },
    {
      "url": "https://git.kernel.org/stable/c/9cd072788c76595529eb38f42bf94d23852f8534",
      "source": "416baaa9-dc9f-4396-8d5f-8c081fb06d67"
    },
    {
      "url": "https://git.kernel.org/stable/c/9d8761b3c133f6c6a6d3486839dac60e2cf4bfe3",
      "source": "416baaa9-dc9f-4396-8d5f-8c081fb06d67"
    }
  ],
  "vulnStatus": "Received",
  "descriptions": [
    {
      "lang": "en",
      "value": "In the Linux kernel, the following vulnerability has been resolved:\n\nusb: gadget: f_fs: Fix NULL pointer dereference in FUNCTIONFS_ENDPOINT_DESC\n\nWhen user space sets up FunctionFS with only full-speed descriptors\n(e.g., flags = FUNCTIONFS_HAS_FS_DESC) and the gadget operates at a\nhigher speed (such as USB_SPEED_HIGH or USB_SPEED_SUPER),\nconfig_ep_by_speed() detects that the function lacks descriptors for\nthe current speed, logs a warning, and falls back to full-speed\ndescriptors. The endpoint is then successfully enabled via\nusb_ep_enable(), and epfile->ep becomes valid.\n\nHowever, when user space subsequently issues the FUNCTIONFS_ENDPOINT_DESC\nioctl to query the endpoint descriptor, ffs_epfile_ioctl() selects the\ndescriptor index solely based on gadget->speed:\n\n\tswitch (epfile->ffs->gadget->speed) {\n\tcase USB_SPEED_SUPER:\n\tcase USB_SPEED_SUPER_PLUS:\n\t\tdesc_idx = 2;\n\t\tbreak;\n\tcase USB_SPEED_HIGH:\n\t\tdesc_idx = 1;\n\t\tbreak;\n\tdefault:\n\t\tdesc_idx = 0;\n\t}\n\tdesc = epfile->ep->descs[desc_idx];\n\tmemcpy(&desc1, desc, desc->bLength);\n\nBecause user space only supplied full-speed descriptors,\nepfile->ep->descs[1] is NULL. Dereferencing desc->bLength triggers an\nimmediate kernel NULL pointer dereference panic.\n\nFix this by falling back through lower speed descriptors if the current\nspeed descriptor was not supplied, matching the fallback logic in\nconfig_ep_by_speed() and historical f_fs behavior. If still missing,\nfall back to epfile->ep->ep->desc (the active descriptor), and return\n-EINVAL safely if no valid descriptor is found. In addition, mark desc\nas const to match struct usb_ep::desc and avoid discarding qualifiers."
    }
  ],
  "lastModified": "2026-10-19T10:19:40.513",
  "sourceIdentifier": "416baaa9-dc9f-4396-8d5f-8c081fb06d67"
}