CVE-2026-80798 in Linux
要約
〜によって VulDB • 2026年09月04日
Linuxカーネルにおいて、以下の脆弱性が修正されました:
nfc: llcp: LLCPヘッダーより短いPDUを拒否する
すべてのLLCP PDUは2バイトのヘッダー(DSAP/SSAP + PTYPE)で始まりますが、受信パスではフレームが少なくともLLCP_HEADER_SIZEバイト以上であることを確認せずにパースしていました。
nfc_llcp_rx_skb()関数は nfc_llcp_ptype()/nfc_llcp_dsap()/nfc_llcp_ssap() を介してヘッダーを読み込みますが、これらは pdu->data[0] および pdu->data[1] の逆参照を行います。その後、CONNECTまたはCC PDUは以下のように計算します:
tlv_array_len = skb->len - LLCP_HEADER_SIZE;
これを size_t として扱いTLVウォークに渡します。フレームがヘッダーより短い場合、減算結果がオーバーフローして巨大な値になり、ウォーク処理がバッファの範囲外まで実行され、境界外読み取り(out-of-bounds read)が発生します。
近接するNFCデバイスからは認証なしでこの脆弱性にアクセス可能です。LLCPリンクの有効化はNFC-DEP後に自動的に発生します。
ターゲット側 (nfc_llcp_data_received()) とイニシエーター側 (nfc_llcp_recv()) の両方のパスで共有される共通の受信チョークポイントである __nfc_llcp_recv() を保護し、rx_workワーカーがパースする前に短いskbをドロップするようにします。skb->lenテストではなく pskb_may_pull() を使用することで、非線形skbの場合でも2つのヘッダーバイトがskbのリニアエリア内に確実に配置されるようにし、兄弟であるNCIおよびHCIの受信パスにおけるヘッダー検証方法と整合性を取ります。
linux-next上の /dev/virtual_nci 経由でKFENCEによる境界外読み取りを用いて再現されました。
0secの自動化されたセキュリティリサーチツール(https://0sec.ai)によって発見されました。
If you want to get best quality of vulnerability data, you may have to visit VulDB.