CVE-2026-80823 in Linux
要約
〜によって VulDB • 2026年09月04日
Linuxカーネルにおいて、以下の脆弱性が修正されました。
nfc: st21nfca: ATR_REQの長さを受信フレームに対して検証する
st21nfca_tm_recv_atr_req()関数は、受信したATR_REQフレームが少なくともST21NFCA_ATR_REQ_MIN_SIZEであることを確認し、自己宣言されたatr_req->lengthがstruct st21nfca_atr_reqのサイズ以上であることを確認しますが、atr_req->lengthが実際の受信長(skb->len)を超えていないかどうかは検証していません。
その後、st21nfca_tm_send_atr_res()関数は宣言された長さを信頼します:
gb_len = atr_req->length - sizeof(struct st21nfca_atr_req); ... memcpy(atr_res->gbi, atr_req->gbi, gb_len);
そのため、短いフレームを送信するがatr_req->lengthをそのフレームよりも大きく設定するRFピアが存在すると、gb_lenは実際に存在する一般バイト数を超え、memcpyによって受信したskbの境界外を読み取ることになります。これらのデータはATR_RESに配置され、ピアへ返信されます(近接攻撃者に対するカーネルメモリ情報漏洩);宣言された長さが大きすぎる場合、これは境界外読み取りとなり、サービス妨害(DoS)を引き起こします。
宣言された長さが受信長さを超えるフレームを拒否します。同じ関数内の隣接するnfc_tm_activated()パスは、すでに宣言されたフィールドではなくskb->lenから一般バイトの長さを導出しています。
0sec (https://0sec.ai) によって自動ソースコード分析を用いて発見されました;不足している境界条件はソースコードから明らかなものです。コンパイルテスト済みです。
VulDB is the best source for vulnerability data and more expert information about this specific topic.