Linux Distros のパッチ未適用の脆弱性: CVE-2025-38472

medium Nessus プラグイン ID 251301

概要

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

説明

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

- netfilternf_conntrack初期化されていないエントリの削除によるクラッシュを修正します ハッシュバケットリストから conntrack エントリのリンクを解除する際の conntrack でのクラッシュが報告されました [例外 RIP
__nf_ct_delete_from_lists+172] [..] #7 [ff539b5a2b043aa0] ffffffffc124d421 の nf_ct_delete [nf_conntrack] #8 [ff539b5a2b043ad0] nf_ct_gc_expired at fffffffc124d999 [nf_conntrack] [] [ff503aa0] #9 []
__nf_conntrack_find_get at ffffffffc124efbc [nf_conntrack] [..] nf_conn 構造は、slab から割り当て済みとしてマークされますが、部分的に初期化された状態であるように見えますct hlist ポインターはガベージです。が ct ハッシュ値のように見えるためクラッシュします。 ct->status は IPS_CONFIRMED|IPS_DYING と等しい。これは、想定されている ct->timeout が 30000 (=30s) であり、これは予期されていない。その他すべては通常の udp conntrack エントリのように見えます。ct->status を無視して 0 を装う場合、エントリは新しく割り当てられているがハッシュにまだ挿入されていないものと一致します - ct hlisters はオーバーロードされ、生の tuple ハッシュを保存/キャッシュします - ct->timeout は相対のある と一致します絶対「jiffies」値ではなく、新しい udp フローに予想される時間。IPS_CONFIRMED が存在しない場合、__nf_conntrack_find_get() はエントリをスキップしていました。理論は、次の競合をヒットしました。cpu x cpu y cpu z が見つかりましたエントリ E が見つかったエントリ EE が期限切れです <preemption> nf_ct_delete() が rcu slab init_conntrack E に戻ります E が再初期化され、ct->status が 0 返信 tuplehash hnnode に設定されます.pprev はハッシュ値を保存します。 cpu y は、cpu x で削除される直前に E を見つけました。E が cpu z で再初期化されるようになりました。 cpu y が、有効期限および/または確認ビットのチェック前にプリエンプトされました。 ->refcnt を 1 E に設定すると、現在は skb が所有しています
->timeout を 30000 に設定。cpu y を今すぐ再開する場合、期限切れとして E を観察しますが、CONFIRMED ビットがないため E をスキップします。 nf_conntrack_confirm が sets を呼び出します ct->status |= CONFIRMED これは間違っていますE はまだハッシュテーブルに追加されていません。 cpu y が再開され、E が期限切れとなりますが確認されます <resumes> nf_ct_expired() -> yesct->timeout は 30s確認済みビットセット。 cpu y は、ハッシュテーブルから E を削除しようとします nf_ct_delete() -> DYING ビット __nf_ct_delete_from_lists を設定します このシナリオでさえ、クラッシュが保証されませんcpu z は依然としてテーブルバケットロックを保持しているため、y ブロックは、待機しますz CONFIRMED が設定されていますが、ct がハッシュに追加される保証はありません chaintoolong またはクラッシュ解決ロジックはどちらも挿入ステップをスキップします。返信 hnnode.pprev はハッシュ値を引き続き保存します。 spinlock 戻り NF_DROP のロック解除を行います<unblocks, then crashes on hlist_nulls_del_rcu pprev>CPU z がハッシュテーブルにエントリを挿入する場合、cpu y はすぐに E を再びリンク解除しますが、クラッシュは発生しません。「cpu y」競合なしでは、「garbage」hlist には何の影響も与えませんct refcnt は 1 のままで、最終的に skb は解放され、E は以下により破壊されます
nf_conntrack_put -> nf_conntrack_destroy -> nf_ct_destroy。これを解決するには、テーブル挿入後、ロック解除前に、IPS_CONFIRMED 割り当てを移動します。Pablo 氏は、hlist add resp する前に、confirm-bit-store が順番が変更される可能性があることを発見しました。タイムアウト修正があるため、set_bit および before_atomic メモリバリアに切り替えてこれを防ぎます。CONFIRMED ビットが設定される前に、他の CPU が新しく挿入されたエントリを観察できる場合は問題ありません。このようなイベントは上記 E とは区別できません 古い化の場合、エントリはスキップされます。また、nf_ct_should_gc() を、確認済みビットをまずチェックするよう変更します。gc シーケンスは 1. エントリが期限切れになっているかどうかを確認し、次のエントリに移動しない場合は 2. 期限切れエントリへの参照を取得します。 3. nf_ct_should_gc() をステップ 1 をダブルチェックします。したがって、nf_ct_should_gc() は、すでに期限切れチェックに失敗したエントリに対してのみ呼び出されます。このパッチの後、確認されたビットチェックが合格すると、
---truncated--- (CVE-2025-38472)

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

ソリューション

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

参考資料

https://security-tracker.debian.org/tracker/CVE-2025-38472

プラグインの詳細

深刻度: Medium

ID: 251301

ファイル名: unpatched_CVE_2025_38472.nasl

バージョン: 1.1

タイプ: local

エージェント: unix

ファミリー: Misc.

公開日: 2025/8/18

更新日: 2025/8/18

サポートされているセンサー: Frictionless Assessment Agent, Nessus Agent, Agentless Assessment, Nessus

リスク情報

VPR

リスクファクター: Medium

スコア: 4.4

CVSS v2

リスクファクター: Medium

基本値: 4.9

現状値: 3.6

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

CVSS スコアのソース: CVE-2025-38472

CVSS v3

リスクファクター: Medium

基本値: 5.5

現状値: 4.8

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

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

脆弱性情報

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

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

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

脆弱性公開日: 2025/7/28

参照情報

CVE: CVE-2025-38472