本文へ移動
English version →
重大 9.8 急ぎ度: 早めに

Tasmota 16.0.0以前に重大な脆弱性、修正コミット公開

Tasmota 16.0.0以前で、同じネットワーク内から認証なしでメモリを破壊され、機器の停止や乗っ取りにつながる脆弱性が公表されました。ESP8266やESP32の機器を使う組織は、修正を取り込んだファームウェアへの更新と、UDPポート4447の到達範囲の制限を進めてください。

CVE-2026-119756 公開 更新 執筆・監修: 佐々木 航 人が監修しながらAIを活用して執筆
画像は生成 AI で作成したイメージです

急ぎ度: 早めに

CVSS v3は9.8(v4は9.3)で認証も不要、修正コミットも公開されているため、機器の更新を早めに進める段階です。

関係があるか

Tasmota 16.0.0以前のファームウェアを載せたESP8266・ESP32系の機器(スマートプラグ、リレー、照明など)を、社内や店舗のネットワークで運用している組織が対象です。

製品影響を受ける版修正版
Tasmota 16.0.0以前(<= 16.0.0) コミットe97e1e4で修正済み

確かめ方

  1. 1Tasmotaを書き込んだ機器を一覧にします。自作の機器、購入後に書き込んだ機器、Tasmota入りで出荷された機器を含めます。
  2. 2各機器のWeb画面の情報ページ、またはコンソールで Status 2 を実行し、表示されるファームウェアの版が16.0.0以前かを確認します。
  3. 3Device Groupsの設定を使っている機器を洗い出します。使っていない機器が影響を受けるかは公表されていないため、版が該当する機器は当面すべて対象として扱います。
  4. 4ルーターやファイアウォールで、UDPポート4447が機器へ転送されていないか、信頼できない端末から届かないかを確認します。

何が起きたか

Tasmotaで複数の機器の状態をそろえて動かすDevice Groups機能に、メモリ領域を壊される脆弱性があります。細工された通信を受け取った機器は停止するほか、場合によっては攻撃者のコードを実行させられます。

Device Groupsのメッセージを処理するとき、Tasmotaは512バイトの領域にログを組み立てます。細工されたメッセージでは、領域の残り容量を数える値がマイナスになり、書き込みが固定長の領域を超えてしまいます。分類はCWE-805です。

修正コミットは、書き込みの長さに上限を付ける関数へ置き換え、残りが足りないときは書き込まないようにしています。ESP8266とESP32にはASLRもヒープ保護のcookieもないため、メモリが壊れたときの影響が大きくなる、とアドバイザリは指摘しています。

攻撃の流れ

  1. 1

    ネットワークへ到達

    攻撃者が、対象のTasmota機器と同じローカルネットワーク上の端末を足場にします。

  2. 2

    細工した通信を送信

    UDPポート4447へ、Device Groupsの細工されたメッセージを送ります。

  3. 3

    領域を超えて書き込み

    ログ用の512バイトの領域を超えて、ヒープメモリが破壊されます。

  4. 4

    停止または乗っ取り

    機器がクラッシュするほか、ネイティブコードを実行される可能性があります。

公開されている情報をもとにした流れの例です。

どう悪用されるか

ログインやパスワードは要りません。ベンダーの記述では、攻撃者はローカルネットワーク上からUDPポート4447へDevice Groupsのメッセージを送ります。利用者が何かを操作する必要もありません。

悪用されると、機器がクラッシュして電源や照明の制御が止まります。さらに、ネイティブコードの実行に至る可能性があります。コードを実行されれば、機器が保持するWi-FiやMQTTなどの設定を読み取られ、同じネットワークの別の機器へ攻め込まれるおそれもあります。

筆者は、危険度が高いのは、来客用Wi-Fiや侵害済みの端末と同じセグメントにTasmota機器が置かれている環境だと見ています。IoT機器だけを別のセグメントに分けている環境では、到達できる端末が限られるため、リスクは下がります。

今すぐやること

  1. 1

    Tasmota機器を洗い出して版を確認する

    書き込み済みの機器を一覧にし、ファームウェアの版が16.0.0以前かを確かめます。コンソールで次のコマンドを実行すると、版が表示されます。

    Status 2
  2. 2

    修正を含むファームウェアに更新する

    Tasmotaのリリース告知で、コミットe97e1e4を含む版を確認して更新します。ソースからビルドしている場合は、このコミットを含む状態で再ビルドして書き込みます。更新後は、もう一度版を確認します。

  3. 3

    機器の異常を点検する

    原因不明の再起動や応答停止が続いている機器がないかを確認します。心当たりがある機器は、ネットワークから切り離してから版を調べ、更新します。

すぐ更新できないとき

更新を待つ間は、ネットワーク側で到達範囲を絞ります。Tasmota機器を専用のセグメントに分け、UDPポート4447への通信を、機器同士と管理用の端末だけに許可します。来客用ネットワークやパソコン用のネットワークからは届かないようにします。ルーターでUDPポート4447を機器へ転送している設定があれば、外します。

背景

Tasmotaは、ESP8266やESP32を使ったスマートプラグやリレー、照明用の機器に書き込めるオープンソースのファームウェアです。メーカーのクラウドを介さず、Web画面やMQTTで機器を操作できるため、オフィスや店舗の電源制御に自分で書き込んで使う例があります。Device Groupsは、同じネットワーク内の複数の機器で電源や明るさの状態をそろえる機能で、機器同士がUDPで直接メッセージをやり取りします。

今回の問題は、デバッグ用のログを組み立てる処理に出た、バッファ境界の不備です。修正コミットのコメントにはGHSA-g56h-hfr6-x2v9という識別子があり、GitHub上の別の勧告と対応しているとみられます。TasmotaはサーバーのようにOSパッチを一括で配れず、機器ごとの書き込みが要るため、台帳に載らないまま古い版が残りやすい製品です。

よくある質問

Q.インターネット側から攻撃されることはありますか。
A.ベンダーの記述は、ローカルネットワーク上の攻撃者を想定しています。ただし、ルーターでUDPポート4447を機器へ転送していたり、機器を外部に公開していたりすると、攻撃できる範囲が広がります。該当する設定がないかを確認してください。
Q.Tasmota入りで出荷された市販の機器も対象ですか。
A.Tasmota 16.0.0以前のファームウェアが載っていれば対象です。販売元がファームウェアの更新を配布していないか、更新情報を確認してください。

まだ分かっていないこと

  • 修正コミットを含むリリース版の番号は、示されていません。
  • Device Groupsを設定していない機器が影響を受けるかは、示されていません。

この記事は、取得元の公開情報をもとに、人が監修しながらAIを活用して執筆しています。執筆と監修は佐々木 航が担い、公開したあとも人が内容を確認しています。誤りに気づいたときは直し、記事の末尾に訂正の行を残します。対応を決める前に、下の原文と参照先も確認してください。

影響パッケージ

パッケージ影響を受ける版 → 修正版
arendstTasmota
16.0.0 以前→ 記載なし

この記録には修正版の版が載っていません。修正版の有無と版は、本文か参照URLのベンダーの勧告で確かめてください。

原文の説明 取得元が公開している説明をそのまま載せています (多くは英語)。

Tasmota through 16.0.0, fixed in commit e97e1e4, contains a heap out-of-bounds write vulnerability in SendReceiveDeviceGroupMessage() that allows unauthenticated attackers on the local network to corrupt heap memory by sending crafted Device Groups messages over UDP port 4447 that cause the log_remaining counter to go negative and writes to exceed the fixed 512-byte buffer. Attackers can exploit this flaw to crash the device or potentially achieve native code execution on ESP8266 and ESP32 platforms that lack ASLR and heap cookies.

出典: CVE.org (CVE Program・cvelistV5) NVD GitHub Advisory

参照URL

当サイトでは、アクセス解析と広告の効果測定のために Cookie を使います。株式会社Game のサイト共通の設定です。 詳しく