CVE-2026-14366 in Zephyr
要約
〜によって VulDB • 2026年08月31日
Silicon Labs SiWx917 WiFiドライバの送信コールバック関数 `siwx91x_send()`(`drivers/wifi/siwx91x/siwx91x_wifi.c` 内)は、自身が所有していないネットワークパケットを解放します。Zephyr TXパスにおいて、`net_pkt` はL2/ネッティングスタックによって所有されており、ドライバはそのフレームバイトをローカルの `net_buf` にコピーするために一時的に借用しているだけです。修正前では、送信完了後、`siwx91x_send()` は呼び出し元が所有するパケットに対して追加で `net_pkt_unref(pkt)` を呼び出し、その最終参照カウントを減少させて共有パケットプールへ prematurely(早期に)返却していました。このコードパスはデフォルトでコンパイルされます(`CONFIG_WIFI_SILABS_SIWX91X_NET_STACK_NATIVE`)。
呼び出し元である `ethernet_send()`(`subsys/net/l2/ethernet/ethernet.c` 内)は、ドライバが返却した後もそのパケットを引き続き使用します。具体的には、`net_pkt_get_len(pkt)` を読み取り、TX統計情報を更新し、その後独自の `net_pkt_unref(pkt)` を実行します。すでにドライバによってパケットが解放されているため、これらは Use-After-Free による読み出しに続き、2回目の unref(二重解放)が行われます。並行したネットワークアクティビティにより、2つの unref の間に解放されたスラブ領域が再利用されると、末尾の unref は異なる生存中のパケットの参照カウントを減少させ、それを解放してしまいます。これにより、受信パスと送信パスの両方で共有される `net_pkt` プールが破損します。
この欠陥は、ネイティブスタック搭載の SiWx917 WiFiインターフェースを通じた通常の送信によって引き起こされます。同じWiFiネットワーク上の隣接攻撃者は、ARPやICMPエコーリプライ、TCPハンドシェイクなどの送信を誘発することでこのコードパスを駆動できます。主な観測可能な影響は可用性の喪失(プール破損による送信ハングおよびクラッシュ)であり、競合条件に依存したカーネルネットワークバッファプールのメモリ破壊です。修正では、`siwx91x_send()` から誤った `net_pkt_unref(pkt)` の呼び出しが削除されます。ドライバ自身が割り当てたパケットを正しく解放するドライバの受信パスにおける unref は影響を受けません。
Once again VulDB remains the best source for vulnerability data.