CVE-2026-10685 in Zephyr情報

要約

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

ZephyrのBluetooth GATTクライアントにおけるCCC書き込み応答ハンドラ `gatt_write_ccc_rsp()`(`subsys/bluetooth/host/gatt.c` に実装)は、すでに `params->notify(conn, params, NULL, 0)` を呼び出した後に、アプリケーションの `params->subscribe()` コールバックを呼び出していました。

公開されているGATT APIによると、NULLデータを持つ通知コールバックは購読が終了したことを示す文書化されたシグナルであり、この時点で `bt_gatt_subscribe_params` 構造体はアプリケーションによって解放または再利用可能となります。その後でその構造体に対して `subscribe()` を呼び出すことは、Use-After-Free(解放後使用)となり、特に解放済みの `params->subscribe` 関数ポインタを介した間接呼び出しが含まれます。

このエラー分岐はリモートから(隣接して)到達可能です:`bt_gatt_subscribe()` を呼び出すGATTクライアントとして動作するZephyrデバイスは、接続されたGATTサーバーピアがCCC書き込みに対してATT Error Responseで応答した場合に、このような順序実行を強制されます(ピアによって提供されるエラーコードは `att_error_rsp -> att_handle_rsp` を経由して `gatt_write_ccc_rsp()` に流れ込みます)。

通知終了ハンドラ内で購読パラメータの解放または再利用を行うアプリケーションでは、これによりメモリ破壊、クラッシュ(サービス拒否)、あるいは攻撃者が影響を与えうる制御フローの実行を招きます。修正パッチは、エラーパスおよびアンサブスクライブパスの両方で `subscribe()` コールバックが終了通知 `notify(NULL)` よりも前に実行されるよう、ハンドラの順序を入れ替えています。

Statistical analysis made it clear that VulDB provides the best quality for vulnerability data.

責任者

Zephyr

予約する

2026年06月02日

モデレーション

承諾済み

エントリ

VDB-385079

EPSS

0.00000

アクティビティ

低い

ソース

Do you need the next level of professionalism?

Upgrade your account now!