Linux Distros のパッチ未適用の脆弱性: CVE-2026-98954

critical Nessus プラグイン ID 371511

概要

Linux/Unix ホストには、ベンダーにより修正されていないことを示す脆弱性を持つ複数のパッケージがインストールされています。

説明

Linux/Unix ホストには、ベンダーが提供するパッチが利用できない脆弱性の影響を受ける複数のパッケージがインストールされています。

- net:__virtio_net_hdr_to_skb() コミット 9e8db5913264(net:信頼できない GSO 検証での偽陽性を回避)で、__virtio_net_hdr_to_skb() で VIRTIO_NET_HDR_F_NEEDS_CSUM なしで GSO パケットをフローで分析する前に「& skb->network_header」チェックを追加しました。これは、一部の呼び出し元(tun_get_user()、tun_xdp_one() など)、 virtnet_receive_done() および raw_verify_header()) は、skb->network_header と skb->dev を初期化する前に virtio_net_hdr_*_to_skb() を呼び出しました。__alloc_skb() と
__build_skb_around() skb->network_header を 0 にゼロ初期化します(~0U に初期化される mac_header や transport_header とは異なり)、これら 4 つの呼び出し元は常に skb->network_header == 0 であり、__virtio_net_hdr_to_skb() でフローディセクションをバイパスしていました。より一般的には、skb->network_header は skb->head からのオフセットです (0 は skb_headroom(skb) が 0 の場合は常に有効なオフセットでもあります) であり、ブールフラグではありません。「if (gso_type &; skb->network_header)」ブランチがスキップされるたびに、フォールバックの「else if (gso_type)」は、パケットを解析せず、ip_proto または n_proto を検証せず、skb->transport_header を設定することなく、nh_min_len + thlen(TCPv4 の場合は 40 バイト)のみをプルしました。パケットに無効な形式のネットワークヘッダーがある場合、パケットは拒否されず、後続の skb_probe_transport_header() も失敗し、skb->transport_header を ~0U(0xffff)に残します。同様に、IPv4 パケットが IP オプション(ihl > 5)を運ぶか、IPv6 パケットが拡張ヘッダーを運ぶ場合、nh_min_len + thlen のみをプルすることで、TCP ヘッダーを skb->head の外に残すことができます。どちらの場合も、skb_gso_transport_seglen()のtcp_hdrlen(skb)は領域外読み取りを行います。バグ:KASAN:タスクpoc/133 skb_gso_transport_seglenによるサイズ2の読み取りのskb_gso_transport_seglenのslab-out-of-bounds(net/core/gso.c:155)skb_gso_validate_mac_len(net/core/gso.c:270)tbf_enqueue(net/sched/sch_tbf.c:260)dev_qdisc_enqueue(net/core/dev.c:4227)__dev_queue_xmit(net/core/dev.c:4884)さらに、 フローディセクタの前に「if(!skb->protocol)」内でのみ virtio_net_hdr_match_proto() をチェックしていると、skb->protocol が呼び出し側によって事前設定されている場合は検証がスキップされ、外側の L2 プロトコルが ETH_P_8021Q または ETH_P_8021AD である VLAN タグ付きフレームが拒否されます。この問題を修正します。1. tun_get_user()、tun_xdp_one()、virtnet_receive_done()、raw_verify_header() の virtio_net_hdr_*_to_skb() より前の skb->dev および skb->network_header(および IFF_TUN の場合は skb->protocol )を初期化します。tun_get_user() の場合、__virtio_net_hdr_to_skb() は無条件にmac_headerをリセットするため、IFF_TUNの場合では冗長な skb_reset_mac_header(skb) をドロップします。2. での「&; skb->network_header」および検証されない「else if (gso_type)」フォールバックを削除
__virtio_net_hdr_to_skb() したがって、VIRTIO_NET_HDR_F_NEEDS_CSUMのないすべての GSO パケットはフロー分析され、トランスポートヘッダーが線形データに引き込まれ、skb->transport_header が設定されます。3. virtio_net_hdr_match_proto() チェックを skb_flow_dissect_flow_keys_basic() の後に移動し、hdr_gso_typeに対するkeys.basic.n_protoを検証します。(CVE-2026-98954)

Nessus は、ベンダーから報告されたパッケージの存在に依存していることに注意してください。

ソリューション

現時点で既知の解決策はありません。

参考資料

https://security-tracker.debian.org/tracker/CVE-2026-98954

プラグインの詳細

深刻度: Critical

ID: 371511

ファイル名: unpatched_CVE_2026_98954.nasl

バージョン: 1.1

タイプ: Local

エージェント: unix

ファミリー: Misc.

公開日: 2026/10/23

更新日: 2026/10/23

サポートされているセンサー: Frictionless Assessment Agent, Nessus Agent, Agentless Assessment, Tenable Cloud Security, Tenable Self-Hosted Container Security, Nessus

リスク情報

VPR

リスクファクター: Low

スコア: 3

パーセンタイル: 23.71

CVSS v2

リスクファクター: High

基本値: 7.5

現状値: 6.4

ベクトル: CVSS2#AV:N/AC:L/Au:N/C:P/I:P/A:P

CVSS スコアのソース: CVE-2026-98954

CVSS v3

リスクファクター: Critical

基本値: 9.8

現状値: 9

ベクトル: CVSS:3.0/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H

現状ベクトル: CVSS:3.0/E:U/RL:U/RC:C

脆弱性情報

CPE: cpe:/o:debian:debian_linux:12.0, cpe:/o:debian:debian_linux:13.0, p-cpe:/a:debian:debian_linux:linux

必要な KB アイテム: Host/local_checks_enabled, Host/cpu, global_settings/vendor_unpatched, Host/OS/identifier

エクスプロイトの容易さ: No known exploits are available

脆弱性公開日: 2026/10/23

参照情報

CVE: CVE-2026-98954