※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 LTS | Vulnerable | 7.0.0-43.43 |
| 24.04 LTS | Vulnerable | 6.8.0-149.149 |
| 22.04 LTS | Vulnerable | 5.15.0-203.213 |
| 20.04 LTS | Vulnerable | 記載なし |
- Vulnerable: 脆弱性の影響を受ける状態
- work in progress: 修正作業中
修正作業中のバージョンが表示されていても、修正版が公開されたわけではありません。
今回使用するUbuntu 24.04 LTSでは、6.8.0-149.149 が修正作業中です。一方、APTで取得できたカーネルは 6.8.0-147.147 でした。
147に更新しても、本CVEは修正されません。

Ubuntuサーバー3台の環境を確認
調査対象はHyper-V上のUbuntu仮想マシン3台です。
| 用途 | Ubuntu | 調査開始時のカーネル |
|---|---|---|
| Redmine | 24.04.5 LTS | 6.8.0-139 |
| AVideo | 24.04.4 LTS | 6.8.0-139 |
| PeerTube用VM | 24.04.2 LTS | 6.8.0-147 |
RedmineとAVideoは運用中のサーバーです。PeerTube用VMでは、アプリケーションの稼働を確認できていません。
Ubuntuとカーネルのバージョンを確認
以下のコマンドで、OSと稼働中のカーネルを確認します。
cat /etc/os-release
uname -rRedmineと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_reqRedmineとAVideoでは以下の結果でした。
net.mptcp.enabled = 1
net.ipv4.tcp_migrate_req = 0MPTCPは有効ですが、MPTCPの待受ソケットは確認されませんでした。
ただし、MPTCPの待受がないだけでは安全と判断できません。 今回の脆弱性は通常のIPv4 TCP接続処理にも関係します。
IPv4オプション付きTCPパケットを遮断する
nftablesに専用テーブルと遮断ルールを追加します。
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 tcp | TCP通信を対象にする |
ip hdrlength gt 5 | IPv4ヘッダー長が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 -r6.8.0-147-generic無事に147へ更新されました。
ところが、暫定ルールを確認するとエラーが発生しました。
sudo nft list table ip cve_2026_98432Error: 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.1active
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.htmlAVideoはサブディレクトリに配置されていました。
改めてアプリケーションへの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 foundNode.jsやnpmも確認できず、SSH以外のTCP待受もありません。
PeerTube用に準備したものの、アプリケーションはまだ構築されていない可能性があります。
今回はカーネル確認と暫定ルールの登録まで実施しました。
また、UFWは無効でSSHが全インターフェースで待ち受けていたため、接続可能な範囲と上位ネットワークのアクセス制御は別途確認が必要です。
CVE-2026-98432の暫定対応結果
3台の調査結果をまとめます。
| 項目 | Redmine | AVideo | PeerTube用VM |
|---|---|---|---|
| Ubuntu | 24.04 LTS | 24.04 LTS | 24.04 LTS |
| 稼働カーネル | 6.8.0-147 | 6.8.0-147 | 6.8.0-147 |
| nftables暫定ルール | 登録済み | 登録済み | 登録済み |
| HTTP応答 | 200 | 200 | アプリ未確認 |
| CVE修正 | 未完了 | 未完了 | 未完了 |
3台とも通常のカーネル更新と暫定ルールの登録までは実施しました。
ただし、CVE-2026-98432自体は未修正です。
今回の遮断ルールについても、攻撃コードを使った有効性の検証はしていません。修正版が公開されたら、公式情報を確認して更新し、暫定ルールを撤去する必要があります。
まとめ
今回の作業で分かったのは、次の3点です。
- Ubuntu LTSでも脆弱性の影響を受ける。 修正版の公開状況を公式情報で確認する必要がある。
- カーネル更新後は再起動が必要。 APTに更新候補がなくても、古いカーネルで稼働している場合がある。
- nftablesの追加ルールは再起動で消える。 暫定対策を継続するには、再起動時の復元方法も考慮する必要がある。
今回は3台に暫定対策を適用できましたが、対応はまだ完了していません。
引き続きUbuntu公式の修正状況を確認し、修正版カーネルが公開された段階で更新する予定です。
参考リンク
Ubuntuのリリース別の影響状況と、修正パッケージの公開状況を確認できます。
Linux Kernel CVE Announcement:CVE-2026-98432
Linuxカーネル側の脆弱性情報です。発生原因や修正内容を確認できます。
Anthropic:Discovering and exploiting vulnerabilities
Linuxカーネルに対するリモートコード実行の実証に関する研究報告です。
nftablesの設定、永続化、UFWとの併用に関する情報です。
同脆弱性に対するRed Hatの評価と暫定緩和策の情報です。


コメントはこちら