TL;DR
- Linux カーネルの IPv4 TCP で、受付中のソケット(request socket)の IP オプション
ireq_optが、子ソケットへコピーされずに渡り、通常のkfree()で解放されるため、並行して SYNACK を組み立てる別 CPU が解放済みメモリを読む(use-after-free inip_options_build()) - 修正は
inet_sock_destruct()とtcp_v4_reqsk_destructor()の解放をkfree_rcu()にするもの(upstreame3f33b0、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 ページに掲載のカーネル側の説明)を要約します。
-
tcp_v4_syn_recv_sock()がireq->ireq_optの所有権を子ソケット(newinet->inet_opt)へ移す。コピーしない - 別の CPU が、同じ request socket への再送 SYN を処理し、
tcp_check_req()から SYNACK を送ることがある -
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回読む -
079096f103fa(tcp/dccp: install syn_recv requests into ehash table)以降、request socket はリスナーのロックなしで処理されるので、SYNACK を組み立てている最中に子ソケットが解放されうる - 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 の利用者コメント)。根本対策はカーネル更新+再起動。
出典
- https://ubuntu.com/security/CVE-2026-98432
- https://ubuntu.com/security/cves/about
- https://git.kernel.org/linus/e3f33b0a1d89d738e2b913dab519226eaf76e15b
- https://security-tracker.debian.org/tracker/CVE-2026-98432
- https://www.suse.com/security/cve/CVE-2026-98432
- https://bugzilla.redhat.com/show_bug.cgi?id=2553390
- https://www.wiz.io/vulnerability-database/cve/cve-2026-98432(各社・AI生成と明記)