0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

【CVE-2026-98432】Ubuntuカーネルの TCP 受付処理の use-after-free を整理して、確認と対応の手順をまとめる

0
Last updated at Posted at 2026-11-01

TL;DR

  • Linux カーネルの IPv4 TCP で、受付中のソケット(request socket)の IP オプション ireq_opt が、子ソケットへコピーされずに渡り、通常の kfree() で解放されるため、並行して SYNACK を組み立てる別 CPU が解放済みメモリを読む(use-after-free in ip_options_build())
  • 修正は inet_sock_destruct() と tcp_v4_reqsk_destructor() の解放を kfree_rcu() にするもの(upstream e3f33b0、7.3-rc7)
  • Ubuntu の優先度は High、CVSS は出どころで割れている(9.8/8.3/8.1)
  • 2026-10-30 更新時点、Ubuntu の linux パッケージはまだ Fixed ではない(22.04〜26.10 は work in progress)
  • 対応は「uname -r を控える → 修正版が出たら apt upgrade → 再起動 → uname -r が変わったことを確認」

2026-11-01 時点の情報です。必ず https://ubuntu.com/security/CVE-2026-98432 の最新を確認してください。

何が起きているか

公式の説明(Ubuntu の CVE ページに掲載のカーネル側の説明)を要約します。

  1. tcp_v4_syn_recv_sock() が ireq->ireq_opt の所有権を子ソケット(newinet->inet_opt)へ移す。コピーしない
  2. 別の CPU が、同じ request socket への再送 SYN を処理し、tcp_check_req() から SYNACK を送ることがある
  3. tcp_v4_send_synack()・inet_csk_route_req() は ireq->ireq_opt を rcu_read_lock() の下で読むだけ。ip_build_and_send_pkt()・ip_options_build() は opt->optlen を2回読む
  4. 079096f103fa(tcp/dccp: install syn_recv requests into ehash table)以降、request socket はリスナーのロックなしで処理されるので、SYNACK を組み立てている最中に子ソケットが解放されうる
  5. TCP の子ソケットには SOCK_RCU_FREE が無く、inet_sock_destruct() は inet_opt を素の kfree() で解放 → use-after-free

もう1つの経路として、request socket の移し替え(net.ipv4.tcp_migrate_req=1 または BPF_SK_REUSEPORT_SELECT_OR_MIGRATE)でも、inet_reqsk_clone() でクローンと元が同じ ireq_opt を共有し、tcp_v4_reqsk_destructor() が素の kfree() を使うため同様の問題が起きる。

読む側はすでに RCU を使っており、inet_opt を差し替える他の経路(do_ip_setsockopt()、cipso_v4_sock_setattr() など)は kfree_rcu() を使っている。そこで残りの2か所も kfree_rcu() にそろえた、というのが修正。

IPv6 は tcp_v6_syn_recv_sock() がオプションを複製するため1つ目の問題の影響なし。ipv6_opt(CALIPSO のみが設定)の移し替えの問題は別パッチ。

深刻度

出どころ 値
Ubuntu priority High
NVD/Linux Kernel CNA(CVSS 3.1) 9.8 AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H
Ubuntu 内訳(CVSS 4.0) 8.3 AV:N/AC:L/AT:P/PR:N/UI:N/VC:L/VI:L/VA:H
SUSE(CVSS 3.1) 8.1 AC:H
SUSE(CVSS 4.0) 9.2
Red Hat Urgent

競合状態(race)なので再現の条件はある(AT:P・AC:H の評価はそこを見ている)。Wiz のデータベース(AI 生成と明記)では公開 PoC なし・KEV 掲載なし。これは公式の確認ではない。

Ubuntu の状況(2026-10-30 更新・パッケージ linux)

リリース 状態
26.10 stonking Vulnerable, work in progress(7.3.0-10.10)
26.04 LTS resolute Vulnerable, work in progress(7.0.0-43.43)
24.04 LTS noble Vulnerable, work in progress(6.8.0-149.149)
22.04 LTS jammy Vulnerable, work in progress(5.15.0-203.213)
20.04 / 18.04 / 16.04 LTS Vulnerable
14.04 LTS trusty Not affected(linux-aws の 14.04 は Vulnerable)

linux-aws・linux-azure・linux-gcp・linux-oracle・linux-hwe-*・linux-fips なども同様に表に並んでいる。自分のカーネルのフレーバー(uname -r の末尾の -aws/-generic 等)で行を探すこと。

参考:Debian は修正済み(trixie 6.12.113-1/DSA-6568-1、bookworm 6.1.190-1/DLA-4841-1)。

確認と対応の手順

1. 版とカーネル

lsb_release -ds
uname -r          # 例: 6.8.0-148-generic → フレーバーは generic

2. CVE の状況

sudo pro fix CVE-2026-98432

Ubuntu Pro Client(pro)は CVE 番号で該当パッケージと修正の有無を見てくれる。修正前なら未解決のまま終わる。

3. 修正版が出たら

sudo apt update && sudo apt upgrade
[ -f /var/run/reboot-required ] && cat /var/run/reboot-required
sudo reboot

Ubuntu 公式は、個別パッケージの cherry-pick ではなく apt upgrade での全体更新を推奨している。

4. 入れ替わりの確認

uname -r                 # 新しい版で動いているか
dpkg -l 'linux-image-*' | grep ^ii   # 入っているカーネル一覧

新しいカーネルが入っていても、再起動していなければ古いカーネルが動き続ける。unattended-upgrades で入っただけの状態に注意。

5. 環境ごとの注意

  • コンテナ:ホストのカーネルを共有する。イメージを更新してもカーネルは直らない → ホストを更新・再起動
  • クラウド:linux-aws 等の行を確認。マネージドなノード(GKE 等)は提供元の告知も確認
  • 標準サポートが終わった 20.04/18.04/16.04:Ubuntu Pro(ESM・Legacy add-on)が修正を受け取るのに必要(公式の表はまだ Vulnerable のみで、修正の予定は表で確認)。ESM は個人なら5台まで無料。pro status で有効か確認
  • Livepatch:Ubuntu Pro の機能。今回の修正が Livepatch で配られるかは公式告知で確認

つなぎの設定について

sysctl net.ipv4.tcp_migrate_req   # 0 が既定

tcp_migrate_req=0 は移し替えの経路を減らすだけで、通常の再送 SYN の経路は残る(Wiz/Red Hat Bugzilla の利用者コメント)。根本対策はカーネル更新+再起動。

出典

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?