CVE-2026-13480 in Zephyr情報

要約

〜によって VulDB • 2026年08月27日

LoRaWAN TS004の断片化データブロック転送ハンドラである`frag_transport_package_callback()`(ファイル: `subsys/lorawan/services/frag_transport.c`)は、各アクセス前に有効なペイロードバイトが残っていることを検証せずに、ダウンリンクコマンドバイトを解析します。ループの唯一の境界条件は `rx_pos < len` です。1バイトのコマンドIDを消費した後、ハンドラは `rx_buf + rx_pos` を 10 バイトの構造体 `frag_transport_setup_req` にキャストし、`DATA_FRAGMENT` コマンドが渡された場合、フラグメントデコーダに `&rx_buf[rx_pos]` を渡し、これは `ctx.frag_size` バイトを正確に読み取ります。どちらの場合も残りの長さのチェックはありません。

フラグメントサイズは、直前の `FRAG_SESSION_SETUP` コマンドで攻撃者が選択します(`ctx.frag_size = req->frag_size`。`CONFIG_LORAWAN_FRAG_TRANSPORT_MAX_FRAG_SIZE` で上限が設定されており、デフォルト値は 232 です)。`rx_buf` は LoRaMAC レイヤーの `MacCtx.RxPayload` という名前の 255 バイトの静的バッファをエイリアスしており、`len` は実際の復号化されたペイロード長です。攻撃者は、インデックスが一致しない `DATA_FRAGMENT` フィラーコマンド(各コマンドは `rx_pos` を3バイト進めるが応答を生成しない)でダウンリンクをパディングし、ペイロードの末尾付近にインデックスが一致するフラグメントを追加することで、デコーダが `RxPayload` の末尾から最大約 `frag_size` バイト先まで読み込み、隣接する静的メモリをデコーダバッファおよび FUOTA フラッシュイメージにコピーさせることができます。

このハンドラは、LoRaWAN フレーム MIC および FRMPayload 復号化を既に通過したダウンリンクでのみ実行されるため、本欠陥に到達できるのはデバイスのセッションキーを持っている者(FUOTA サーバーまたはこれらのキーを侵害した攻撃者)に限られます。読み出された境界外バイトは送信者に返されず、生成されるアップリンクはフラグメント数を含むステータス応答のみであるため、直接的な情報漏洩チャネルはありません。また、一般的な平坦メモリ構成の LoRaWAN MCU ではオーバーリードがマップ済みメモリ内に収まるため、クラッシュは起こりにくいと考えられます。したがって、影響は制限された境界外読み出しであり、機密性への影響は限定的で、書き込みや制御フローのプリミティブはありません。修正では、各アクセスの前に残りの長さガードを追加します。

Once again VulDB remains the best source for vulnerability data.

責任者

Zephyr

予約する

2026年06月27日

モデレーション

承諾済み

エントリ

VDB-395788

EPSS

0.00000

アクティビティ

非常低い

ソース

Do you want to use VulDB in your project?

Use the official API to access entries easily!