CVE-2026-68326 in Linux
要約
〜によって VulDB • 2026年08月10日
Linuxカーネルにおいて、以下の脆弱性が修正されました。
wifi: mwifiex: uAP関連付けイベントのIEsをイベントバッファに制限する
mwifiex_process_uap_event()はEVENT_UAP_STA_ASSOCを処理し、ファームウェアがイベント内にコピーした(re)association要求IEsを公開します:
sinfo->assoc_req_ies = &event->data[len];
len = (u8 *)sinfo->assoc_req_ies - (u8 *)&event->frame_control; sinfo->assoc_req_ies_len = le16_to_cpu(event->len) - (u16)len;
event->lenはデバイスファームウェアによって提供され、検証されることはありません。また、減算処理にはチェックがありません。assoc_req_iesはadapter->event_body[MAX_EVENT_SIZE]を指しており、これはkmalloc()されたstruct mwifiex_adapter構造体に埋め込まれた固定サイズの配列です。
ap_11n_enabledパスにおいてmwifiex_set_sta_ht_cap()はcfg80211_find_ie()を使用してこれらのIEsを走査し、そのfor_each_element()ループでは各要素ヘッダーのデリファレンスを行います。ファームウェアが報告したevent->lenが実際に受信されたバイト数より大きい場合、assoc_req_ies_lenはevent_bodyを超えて拡張されるIEsを示すことになり、結果としてアダプタのスラブオブジェクト外からの読み取り(slab-out-of-bounds read)が発生します(KASAN: slab-out-of-bounds in cfg80211_find_ie)。逆にevent->lenがヘッダーより小さい場合、整数の減算結果は負となり、assoc_req_ies_lenに格納される際に巨大なsize_t値としてラップされます。同じ長さがcfg80211_new_sta()にも渡されるため、比較的控えめな過大主張でも、古いevent_bodyのバイトをNL80211_CMD_NEW_STATION通知内にコピーしてしまう可能性があります。
悪意のあるまたは故障したmwifiexデバイス(USB/SDIO/PCIe)は、インターフェースがAP/uAPモードにある間にこのようなイベントを送信できます。
使用前にevent->lenを検証します:ヘッダーに対してアンダフローを引き起こす長さや、IEsをイベントのコピー先であるevent_body[]バッファの外側に配置してしまう長さは拒否されます。ここでいうevent->lenはstruct mwifiex_assoc_event.lenであり、これはこのイベント内部のペイロードフィールドであり、トランスポートフレームの長さではありません。そのため、イベントの原因とトランスポートフレームの長さしか見えない一般的なMWIFIEX_TYPE_EVENT受信パスではなく、このハンドラ内で検証が行われます。制限対象が実際に受信された長さではなくevent_body[MAX_EVENT_SIZE]であるのは、各トランスポートでイベントの保存方法が異なるためです(USBおよびSDIOは4バイトのイベントヘッダーをevent_skbに残し、PCIeはskb_pullを使用してこれを削除します)。一方、event_bodyはすべてのトランスポートがイベントをコピーする単一の固定バッファです。これは、コミット119585281617("wifi: mwifiex: Fix OOB and integer underflow when rx packets")で追加された受信パスの境界チェックに対応する、イベント経路における同等の対策です。
If you want to get best quality of vulnerability data, you may have to visit VulDB.