Saltar al contenido
DUPIN
ALERTAS · EN VIVO
Contacto

VULNERABILIDAD

CVE-2026-19735 Números de secuencia inicial TCP predecibles por fallo silencioso de la clave RFC 6528 en el stack TCP de…

La implementación de números de secuencia inicial RFC 6528 en subsys/net/ip/tcp.c descartaba el valor de retorno de sys_csrand_get() y marcaba la inicialización como completada aunque fallara; ante un fallo del generador criptográfico, unique_key queda en cero durante el resto del arranque, sin reintento, registro ni alternativa. Esto hace predecibles los números de secuencia inicial TCP.

Alerta de Nureq Monitor

Detectada 11 OCT · 16:24

CVSS 3.1

4.8MEDIA

PROBABILIDAD DE EXPLOTACIÓN (EPSS)

0,2 % PERCENTIL 5

EXPLOTACIÓN ACTIVA

No confirmada

EXPLOIT PÚBLICO

No conocido

Qué es CVE-2026-19735

La implementación de números de secuencia inicial RFC 6528 en subsys/net/ip/tcp.c descartaba el valor de retorno de sys_csrand_get() y marcaba la inicialización como completada aunque fallara; ante un fallo del generador criptográfico, unique_key queda en cero durante el resto del arranque, sin reintento, registro ni alternativa. Esto hace predecibles los números de secuencia inicial TCP.

Productos y versiones afectadas

  • zephyrproject zephyr

    • desde 3.7.0 hasta 4.4.2

Qué hacer

  1. Verificá si usás zephyr y en qué versión: el rango afectado figura arriba.
  2. Actualizá a la versión corregida que indique el fabricante en su aviso (ver referencias) o aplicá la mitigación que publique.
  3. Revisá registros y accesos de los sistemas expuestos para descartar que se haya aprovechado antes de corregir.

Calculadora CVSS

CVSS 3.1 · 4.8 MEDIA

CVSS:3.1/AV:N/AC:H/PR:N/UI:N/S:U/C:L/I:L/A:N

VECTOR DE ATAQUE (AV)
Red
COMPLEJIDAD DEL ATAQUE (AC)
Alta
PRIVILEGIOS REQUERIDOS (PR)
Ninguno
INTERACCIÓN DEL USUARIO (UI)
Ninguna
ALCANCE (S)
Sin cambio
CONFIDENCIALIDAD (C)
Baja
INTEGRIDAD (I)
Baja
DISPONIBILIDAD (A)
Ninguna

Abrir la calculadora completa

Descripción original

The RFC 6528 initial-sequence-number implementation in subsys/net/ip/tcp.c derived every TCP ISN from SHA-256(unique_key || four-tuple) plus a uptime-derived offset, where unique_key is a 128-bit secret filled once by sys_csrand_get(). The return value of that call was discarded and the once guard was latched to true even when the call failed. Because sys_csrand_get() leaves the destination buffer untouched on failure (it deliberately propagates the entropy-driver error rather than filling the buffer), a single failed call left unique_key as its all-zero BSS content for the remainder of the boot, with no retry, no log message and no fallback. A failure of the cryptographic random source is required to reach the weak state — for example -ENODEV/-EIO from the entropy driver in subsys/random/random_entropy_device.c (the in-tree comment notes that the hardware RNG "might still be gathering entropy during early boot situations"), or psa_generate_random() failing in subsys/random/random_psa.c when PSA crypto is not initialised or is backed by a Bluetooth-HCI entropy device that is not yet up. The first TCP connection is what triggers key generation, so a remote peer that reaches a listening port immediately after boot, or that can provoke a reboot, has indirect influence over whether generation coincides with that window. tcp_init_isn() is called for every passive open in tcp_conn_new() and every active open in net_tcp_connect(), so the poisoned key governs all TCP connections for that boot. With an all-zero key the ISN becomes a public function of the connection four-tuple plus a device-wide time offset. An off-path attacker can compute the hash term offline for any four-tuple and recover the shared time offset from a single observed ISN, after which the ISN the device will pick for other four-tuples is predictable. That defeats exactly the protection RFC 6528 provides: blind TCP connection spoofing against peers that trust the source address, and blind data injection into or reset of connections whose four-tuple can be guessed. Devices whose entropy source never errors were never in the weak state. The fix moves key generation into a single guarded helper that latches only on success, logs the error otherwise, and makes tcp_init_isn() fall back to sys_rand32_get() — the behaviour already used when CONFIG_NET_TCP_ISN_RFC6528 is disabled — instead of hashing with a known-constant key.

Referencias

Historial de la alerta

  1. VULNERABILIDAD Nueva vulnerabilidad detectada.

CÓMO SE HIZOResumen traducido automáticamente al español a partir de la descripción original. Ante dudas, la descripción original y las referencias del fabricante son la fuente de verdad. Cómo funciona.