Saltar al contenido
DUPIN
ALERTAS · EN VIVO
Contacto

VULNERABILIDADDetectada 09 NOV · 20:27

CVE-2026-90588 Lectura fuera de límites en el registro de depuración de cabeceras del cliente HTTP de Zephyr

La función de depuración print_header_field() del cliente HTTP formateaba un fragmento entregado por el callback de http_parser con la conversión %s, aunque esos bytes no terminan en NUL. El tamaño de snprintk() solo limita el destino, mientras que %s mide primero el origen con strlen(), de modo que la lectura avanza más allá del campo de cabecera y del búfer de recepción hasta encontrar un byte cero. El fragmento llega desde on_url(), on_header_field() y on_header_value() sobre bytes leídos directamente del…

3.7BAJA

CVSS 3.1

  • Probabilidad de explotaciónSin dato
  • Explotada activamenteNo confirmada
  • Exploit públicoNo conocido

Afectados

  • zephyrproject zephyr

    desde 2.1.0 hasta antes de 4.3.2desde 4.4.0 hasta antes de 4.5.0

Qué hacer

  1. Verificá si usás zephyr y en qué versión.
  2. Actualizá a la versión corregida que indique el fabricante en su aviso o aplicá su mitigación.
  3. Revisá registros y accesos de los sistemas expuestos para descartar un uso previo.

Calculadora CVSS

CVSS 3.1 · 3.7 BAJA

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

  • Vector de ataqueRed
  • Complejidad del ataqueAlta
  • Privilegios requeridosNinguno
  • Interacción del usuarioNinguna
  • AlcanceSin cambio
  • ConfidencialidadNinguna
  • IntegridadNinguna
  • DisponibilidadBaja

Descripción original

The HTTP client's debug helper print_header_field() in subsys/net/lib/http/http_client.c formatted an http_parser data-callback slice with a %s conversion: snprintk(output, len + 1, "%s", str). The parser hands its callbacks a pointer and a length into the caller's receive buffer, and those bytes are not NUL terminated. The size argument of snprintk() bounds only the destination, while the %s conversion measures the source first — lib/os/cbprintf_complete.c uses strlen() when no precision is given, and lib/os/cbprintf_nano.c uses strlen() unconditionally — so the read walks past the end of the header field and past the end of the receive buffer until it finds a zero byte. The slice reaches the helper from on_url(), on_header_field() and on_header_value(), which the parser invokes on bytes that http_wait_data() read straight off the socket into the application-supplied recv_buf. A malicious or compromised HTTP server, or an attacker able to answer a plaintext request, therefore controls both the header field and the bytes that follow it in the buffer, and can guarantee that no zero byte appears before the buffer ends, forcing the over-read. The in-tree tests/net/lib/http_client suite reproduces the over-read under CONFIG_ASAN=y on an ordinary GET. The impact is bounded. The whole helper body is compiled only when the HTTP client log module is explicitly set to Debug (CONFIG_NET_HTTP_LOG_LEVEL_DBG=y, which the global CONFIG_LOG_DEFAULT_LEVEL does not set), so default builds are unaffected. No out-of-bounds write occurs and none of the over-read bytes are emitted into the log, so there is no information disclosure; the consequence is an out-of-bounds read that can fault and panic the device where the buffer abuts an unmapped or MPU/MMU-protected region. The fix copies exactly the len bytes the parser offered with memcpy() and terminates them, instead of relying on a %s conversion (a %.*s precision would not have sufficed, since cbprintf_nano.c measures the source in full before applying it).

Referencias (2)

Resumen traducido automáticamente de la descripción original. Fuente: Nureq Monitor. Cómo funciona.

DUPIN · CONTACTO

Contanos tu caso

El mensaje ya va armado: podés cambiarlo.

También podés escribir a [email protected]. Usamos tus datos solo para responderte.