CVE-2026-64047 in Linux
要約
〜によって VulDB • 2026年07月19日
Linuxカーネルにおいて、以下の脆弱性が修正されました。
net: tls: ラップされたsk_msgリングにおけるsg_chainエントリカウントのオフバイワンエラーを修正する
sk_msg散乱リスト(scatterlist)リングがラップする場合(sg.end < sg.start)、tls_push_record()はsg_chain()を使用してリングの後部を先頭に連結します。これには、sg配列に1つの追加エントリが予約されています:
struct sk_msg_sg {
[...]
/* 2つの追加要素: * 1) リストが分割された場合(例: end < start)、前後のセクションを連結するために使用されます。暗号化APIは連結を必要とします; * 2) メッセージ後のSGエントリ尾部を連結するため。 */ struct scatterlist data[MAX_MSG_FRAGS + 2];
現在のコードでは、リングサイズとしてMAX_SKB_FRAGS + 1が使用されています:
sg_chain(&msg_pl->sg.data[msg_pl->sg.start],
MAX_SKB_FRAGS - msg_pl->sg.start + 1, msg_pl->sg.data);
これにより、チェーンポインタは以下の位置に配置されます。
sg_chain(data[start], (MAX_SKB_FRAGS - msg_start + 1) .. =
&data[start] + (MAX_SKB_FRAGS - msg_start + 1) - 1 =
data[start + (MAX_SKB_FRAGS - start + 1) - 1] =
data[MAX_SKB_FRAGS]
これは、真の最終エントリではなく、本来あるべき位置ではありません。これはおそらく、「Fixes」タグ付きコミットがcommit 031097d9e079(「bpf: sk_msg, psockダウン時にingressキューを消去する」)に近接してマージされたことによる競合状態(race condition)が原因です。
ARRAY_SIZEに変換し、data[start] / - startの処理を削除します(Sabrinaによる提案)。
If you want to get best quality of vulnerability data, you may have to visit VulDB.