Ubuntu 24.04 LTSの脆弱性「CVE-2026-98432」に対処する|nftablesによる暫定対策と作業記録

※2026年10月30日時点の情報です。最新の修正状況はUbuntu公式サイトで確認してください。

Ubuntu 24.04 LTSに、深刻度9.8(Critical)の脆弱性「CVE-2026-98432」が見つかりました。特定の条件下では、ネットワーク経由でroot権限のコマンドを実行される可能性があります。

しかし、2026年10月30日時点では修正版カーネルが公開されていません。

そこで今回は、運用中のUbuntuサーバー3台を調査し、カーネル更新とnftablesによる暫定対策を実施しました。

作業中には、カーネルが更新済みなのに古いバージョンで稼働していたり、再起動後に暫定ルールが消失したりと、いくつか問題も発生しました。

その対応手順と確認結果をまとめます。

目次

CVE-2026-98432とは?

CVE-2026-98432は、LinuxカーネルのIPv4 TCP通信処理に存在するUse-After-Free(UAF)の脆弱性です。

UAFとは、解放済みのメモリを再び使用してしまう問題です。

今回の脆弱性では、TCP接続の確立時(SYN → SYN/ACK → ACK)に接続要求の再送などが並行すると、IPv4オプションを保持していたメモリが、使用中に解放される場合があります。

その結果、カーネルが解放済みメモリを参照し、異常終了やメモリ破壊につながる可能性があります。

さらに、2026年10月27日にAnthropicが公開した研究では、Multipath TCP(MPTCP)の待受ソケットを持つLinuxサーバーに対し、認証不要でネットワーク越しにroot権限のコマンドを実行する攻撃が実証されています。

ただし、これは特定条件での実証であり、すべてのTCPサーバーで攻撃が成立するわけではありません。

Ubuntu LTSも影響を受ける

Ubuntu公式による2026年10月30日時点の状況は以下のとおりです。

Ubuntu状態修正作業中のバージョン
26.04 LTSVulnerable7.0.0-43.43
24.04 LTSVulnerable6.8.0-149.149
22.04 LTSVulnerable5.15.0-203.213
20.04 LTSVulnerable記載なし
  • Vulnerable: 脆弱性の影響を受ける状態
  • work in progress: 修正作業中

修正作業中のバージョンが表示されていても、修正版が公開されたわけではありません。

今回使用するUbuntu 24.04 LTSでは、6.8.0-149.149 が修正作業中です。一方、APTで取得できたカーネルは 6.8.0-147.147 でした。

147に更新しても、本CVEは修正されません。

Ubuntu公式のCVE情報・24.04 LTSのステータス
Ubuntu公式のCVE情報・24.04 LTSのステータス

Ubuntuサーバー3台の環境を確認

調査対象はHyper-V上のUbuntu仮想マシン3台です。

用途Ubuntu調査開始時のカーネル
Redmine24.04.5 LTS6.8.0-139
AVideo24.04.4 LTS6.8.0-139
PeerTube用VM24.04.2 LTS6.8.0-147

RedmineとAVideoは運用中のサーバーです。PeerTube用VMでは、アプリケーションの稼働を確認できていません。

Ubuntuとカーネルのバージョンを確認

以下のコマンドで、OSと稼働中のカーネルを確認します。

cat /etc/os-release
uname -r

RedmineとAVideoでは、カーネルが 6.8.0-139-generic でした。

まずAPTの更新候補を確認します。

sudo apt update
apt list --upgradable 2>/dev/null | grep -E '^linux-'

ところが、Redmineではカーネル関連の更新候補が表示されません。AVideoでも linux-firmware の更新候補しか表示されませんでした。

新しいカーネルがまだ配布されていないのでしょうか。

カーネルは更新済みだった

そこで、インストール済みのカーネルを確認しました。

dpkg -l linux-generic linux-image-generic
apt-cache policy linux-generic linux-image-generic
dpkg -l 'linux-image-*' | grep '^ii'

結果は以下のとおりです。

項目カーネル
稼働中6.8.0-139
インストール済み6.8.0-147
APT更新候補6.8.0-147

147はすでにインストールされていました。

パッケージの更新は完了していましたが、再起動していなかったため、139のカーネルで稼働し続けていたわけです。

再起動要求も確認します。

cat /run/reboot-required
*** System restart required ***

両サーバーとも再起動が必要な状態でした。

APTの更新候補がないことと、稼働中のカーネルが最新であることは別です。

【画像:139で稼働中、147がインストール済みの比較】

nftablesで暫定対策を実施する

147への更新だけでは今回のCVEは修正されません。

そこで、IPv4オプションを含むTCPパケットをnftablesで遮断する暫定対策を実施しました。

TCPとMPTCPの状態を確認

最初に待受ポートを確認します。

sudo ss -lntp
sudo ss -lnMp

関連する設定も確認します。

sysctl net.mptcp.enabled
sysctl net.ipv4.tcp_migrate_req

RedmineとAVideoでは以下の結果でした。

net.mptcp.enabled = 1
net.ipv4.tcp_migrate_req = 0

MPTCPは有効ですが、MPTCPの待受ソケットは確認されませんでした。

ただし、MPTCPの待受がないだけでは安全と判断できません。 今回の脆弱性は通常のIPv4 TCP接続処理にも関係します。

IPv4オプション付きTCPパケットを遮断する

nftablesに専用テーブルと遮断ルールを追加します。

注意:これはUbuntu公式の修正ではなく、リスク低減を目的とした暫定措置です。通信に影響する可能性があるため、既存ルールを確認し、復旧可能な状態で実施してください。同名テーブルが存在する場合は重複登録しないでください。

sudo nft add table ip cve_2026_98432

sudo nft add chain ip cve_2026_98432 pre \
'{ type filter hook prerouting priority -300; }'

sudo nft add rule ip cve_2026_98432 pre \
meta l4proto tcp ip hdrlength gt 5 counter drop

ルールの意味は以下のとおりです。

設定動作
meta l4proto tcpTCP通信を対象にする
ip hdrlength gt 5IPv4ヘッダー長が20バイトを超えるパケットを対象にする
counter dropパケットをカウントして破棄する

IPv4ヘッダーの基本長は20バイトです。それを超えるパケットにはIPオプションが含まれます。

なお、TCPタイムスタンプなどのTCPオプションとは別のものです。

ルールの適用状態を確認

sudo nft list table ip cve_2026_98432

結果は以下のとおりです。

table ip cve_2026_98432 {
    chain pre {
        type filter hook prerouting priority raw; policy accept;
        meta l4proto tcp ip hdrlength > 5 counter packets 0 bytes 0 drop
    }
}

3台ともルールの登録に成功しました。

packets 0 bytes 0 は、確認時点で遮断対象のパケットが0件だったことを示します。攻撃がなかったことや、脆弱性を完全に防げることの証明ではありません。

また、正当なIPオプション付き通信も遮断するため、ネットワークへの影響を確認する必要があります。

再起動したらnftablesのルールが消失

RedmineとAVideoでは147のカーネルがインストール済みだったため、再起動して反映します。

本番サーバーでは、事前にバックアップと保守時間を確認してください。

sudo reboot

再起動後の確認結果は以下のとおりです。

uname -r
6.8.0-147-generic

無事に147へ更新されました。

ところが、暫定ルールを確認するとエラーが発生しました。

sudo nft list table ip cve_2026_98432
Error: No such file or directory
list table ip cve_2026_98432
              ^^^^^^^^^^^^^^

先ほど登録したルールが消えています。

nft add で追加したルールは、そのままでは再起動後に保持されません。

今回は同じコマンドを再実行し、RedmineとAVideoの両方へ暫定ルールを再登録しました。

【画像:再起動後のエラーとルール再登録結果】

暫定ルールの永続化は見送った

nftablesには設定を永続化する方法があります。

ただし、今回のサーバーではUFWも使用しています。両者の併用には設定の競合や運用上の注意点があるため、今回は永続化していません。

今後再起動する際は、ルールの消失を考慮し、上位ファイアウォールによる通信制限や自動復元を検討する必要があります。

再起動後のアプリケーション動作確認

カーネル更新後は、OSだけでなくWebアプリケーションの応答も確認します。

Redmine:HTTP 200を確認

systemctl is-active nginx
curl -I http://127.0.0.1
active
HTTP/1.1 200 OK
Server: nginx/1.24.0 (Ubuntu)

nginxが稼働し、RedmineのローカルHTTP応答も正常でした。

ただし、ログインやチケット登録などの機能までは検証していません。

AVideo:Apacheの初期ページが表示された

AVideoでも同様に確認しました。

systemctl is-active apache2
curl -I http://127.0.0.1

結果はHTTP 200でしたが、表示されていたのはApacheの初期ページです。

そこで公開ディレクトリを確認します。

ls -l /var/www/html/
AVideo/
AVideo-Encoder/
index.html

AVideoはサブディレクトリに配置されていました。

改めてアプリケーションへのHTTPアクセスを確認します。

for path in /AVideo/ /AVideo-Encoder/; do
    curl -sS --max-time 10 -o /dev/null \
      -w "$path HTTP=%{http_code} Redirect=%{redirect_url}\n" \
      "http://127.0.0.1$path"
done
/AVideo/ HTTP=200 Redirect=
/AVideo-Encoder/ HTTP=200 Redirect=

両方ともHTTP 200を返しました。

MySQLやPHPモジュールも稼働しており、今回の確認範囲では問題は見つかりませんでした。

なお、動画のアップロード・再生・エンコード処理までは未検証です。

PeerTube用VM:アプリケーションは未構築の可能性

PeerTube用VMは、当初SSH接続がタイムアウトしました。

Hyper-VのコンソールからOpenSSH Serverを導入しています。

sudo apt update
sudo apt install openssh-server
sudo systemctl enable --now ssh

カーネルは最初から 6.8.0-147-generic でした。

一方、PeerTubeとnginxを確認すると、サービスが見つかりませんでした。

Unit peertube.service could not be found.
Unit nginx.service could not be found.
sudo: docker: command not found

Node.jsやnpmも確認できず、SSH以外のTCP待受もありません。

PeerTube用に準備したものの、アプリケーションはまだ構築されていない可能性があります。

今回はカーネル確認と暫定ルールの登録まで実施しました。

また、UFWは無効でSSHが全インターフェースで待ち受けていたため、接続可能な範囲と上位ネットワークのアクセス制御は別途確認が必要です。

CVE-2026-98432の暫定対応結果

3台の調査結果をまとめます。

項目RedmineAVideoPeerTube用VM
Ubuntu24.04 LTS24.04 LTS24.04 LTS
稼働カーネル6.8.0-1476.8.0-1476.8.0-147
nftables暫定ルール登録済み登録済み登録済み
HTTP応答200200アプリ未確認
CVE修正未完了未完了未完了

3台とも通常のカーネル更新と暫定ルールの登録までは実施しました。

ただし、CVE-2026-98432自体は未修正です。

今回の遮断ルールについても、攻撃コードを使った有効性の検証はしていません。修正版が公開されたら、公式情報を確認して更新し、暫定ルールを撤去する必要があります。

まとめ

今回の作業で分かったのは、次の3点です。

  1. Ubuntu LTSでも脆弱性の影響を受ける。 修正版の公開状況を公式情報で確認する必要がある。
  2. カーネル更新後は再起動が必要。 APTに更新候補がなくても、古いカーネルで稼働している場合がある。
  3. nftablesの追加ルールは再起動で消える。 暫定対策を継続するには、再起動時の復元方法も考慮する必要がある。

今回は3台に暫定対策を適用できましたが、対応はまだ完了していません。

引き続きUbuntu公式の修正状況を確認し、修正版カーネルが公開された段階で更新する予定です。

参考リンク

Ubuntu公式:CVE-2026-98432

Ubuntuのリリース別の影響状況と、修正パッケージの公開状況を確認できます。

Linux Kernel CVE Announcement:CVE-2026-98432

Linuxカーネル側の脆弱性情報です。発生原因や修正内容を確認できます。

Anthropic:Discovering and exploiting vulnerabilities

Linuxカーネルに対するリモートコード実行の実証に関する研究報告です。

Ubuntu公式:nftables

nftablesの設定、永続化、UFWとの併用に関する情報です。

Red Hat:CVE-2026-98432

同脆弱性に対するRed Hatの評価と暫定緩和策の情報です。

よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!

コメントはこちら

コメントする

目次