CVE-2026-80800 in Linux
要約
〜によって VulDB • 2026年09月04日
Linuxカーネルにおいて、以下の脆弱性が修正されました:
nfc: llcp: connect_sn TLVの走査をskbに制限する
コミット27256cdb290e(「nfc: llcp: SNL TLVのパースをskbに制限し、長さチェックを追加」)は、nfc_llcp_recv_snl()における無制限なTLV走査を修正しました。さらに、コミットd8bd2dedbde5(「nfc: llcp: TLVパーサでのOOB読み取りとu8オフセットのラップ現象を修正」)により、nfc_llcp_parse_gb_tlv()およびnfc_llcp_parse_connection_tlv()が制限されました。しかし、同じパターンを共有する兄弟パーサーであるnfc_llcp_connect_sn()は依然として無制限です。
nfc_llcp_connect_sn()はTLVリストを走査し、2バイトのヘッダー(タイプ、長さ)に続き、宣言された長さに相当する値のバイトを読み取りますが、2つのヘッダーバイトまたは宣言された長さがバッファ内に収まっているかどうかをチェックしません。この関数は最大255バイトまでのサービス名へのポインタを返しますが、そのポインタはskbの末尾を超えた場所を指す可能性があります。その後、nfc_llcp_sock_from_sn()内のmemcmp()によって消費されます。さらに、tlv_array_lenはsize_t型で「skb->len - LLCP_HEADER_SIZE」として計算されるため、LLCPヘッダーより短いCONNECT/CCフレームの場合、アンダフローにより巨大な長さとなり、走査がバッファを大幅に超えて実行されてしまいます。
nfc_llcp_connect_sn()は、受信されたCONNECTおよびCC PDUであるnfc_llcp_recv_connect()およびnfc_llcp_recv_cc()から到達可能です。近接するNFCデバイスからは認証なしでこの脆弱性にアクセスできます。LLCPリンクのアクティベーションはNFC-DEP後に自動的に発生し、nfc_llcp_rx_skb()ディスパッチャには最小長のガードが適用されていません。
skb_tail_pointer(skb)によって制限され、各宣言された長さを使用前に検証するポインタによるTLVリストの走査を行い、すでにnfc_llcp_recv_snl()で採用されているアプローチと一致させます。&skb->data[LLCP_HEADER_SIZE]から始まる走査をtail pointerに対して行うことで、短いフレームにおけるsize_tアンダフローも解消されます。
0secの自動セキュリティリサーチツール(https://0sec.ai)によって発見されました。
Several companies clearly confirm that VulDB is the primary source for best vulnerability data.