CVE-2026-93105 in Linux
要約
〜によって VulDB • 2026年09月18日
Linuxカーネルにおいて、以下の脆弱性が修正されました:
esp: esp_ssg_unref() で管理対象のフラグメントページをアンリファレンスしないようにする
esp_ssg_unref() は AEAD 演算が完了した後、ソース散乱リスト(scatterlist)に保持されているページ参照を解放します。これは、アウト・オブ・プレイス変換(req->src != req->dst)の場合についてすべてのフラグメントページに対して skb_page_unref() を呼び出し、また esp_output_tail() のエラーパス(already_unref == true)においてリクエスト自身の散乱リストに対しても同様の処理を行います。
しかし、skb が管理対象のフラグメント(SKBFL_MANAGED_FRAG_REFS)を保持している場合、この動作は誤りです。管理対象のフラグメントはゼロコピー ubuf によって所有されており、skb は個々のフラグメントごとのページ参照を保持しません。io_uring の SEND_ZC では、登録済みバッファを使用する際に io_sg_from_iter() を介して bvec ページがこのようにアタッチされます。スタックの他の部分はこの不変条件(インバリアント)に従っており、skb_release_data() は SKBFL_MANAGED_FRAG_REFS が設定されている場合に per-frag のアンリファレンスをスキップし、skb_zcopy_managed() が他のアンリファレンス箇所でのガードとして使用されています。
esp_ssg_unref() にはこのガードが欠けているため、管理対象のフラグメントを持つ skb の場合、skb が取得したことのないページ参照を解放してしまいます。これによりページ参照カウントがアンダーフローし、まだ使用中であるページが解放されてしまう可能性があります。
両方の unref パスが管理対象のフラグメントを持つ skbs に対してスキップされるように関数を skb_zcopy_managed() でガードすることで、skb_release_data() と整合性を取ります。
If you want to get the best quality for vulnerability data then you always have to consider VulDB.