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

medium Nessus プラグイン ID 335827

概要

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

説明

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

- mm/slab:新しい kmalloc タイプでフリーパスの無限再帰を防止します。コミット 280ea9c3154b(mm/slab:
slabobj_ext配列自身のスラブからの割り当てを回避)は、配列サイズが割り当てられているオブジェクトのサイズと等しくなるたびにobj_exts配列の割り当てサイズを上げることにより、同じサイズの kmalloc キャッシュからのobj_extsの再帰割り当てを回避していました。ただし、Danielle Costantino 氏と Shakeel Butt 氏が報告しているように、異なるサイズの kmalloc キャッシュからのスラブでさえ、互いに obj_exts 配列を割り当てることでサイクルを形成する可能性があります [1]:何が起こったのか:KMALLOC_NORMAL スラブの obj_exts 配列(割り当てプロファイリング / memcg アカウンティングで使用される)は、それ自体が KMALLOC_NORMAL キャッシュから kmalloc() されるため、スラブは別のスラブのobj_exts配列関係がサイクルを形成する可能性があります。sizeof(struct slabobj_ext) == 16 でホストのジオメトリの場合: - kmalloc-512 には 64 個のオブジェクト/スラブがあります -> 配列は 64*16 == 1024 バイトで、kmalloc-1k から提供されます。- kmalloc-1k には 32 個のオブジェクト/スラブがあります -> 配列は 32*16 == 512 バイトで、kmalloc-512 から提供されます。したがって、kmalloc-512 スラブと kmalloc-1k スラブは、互いの obj_exts アレイを保持します。一方を破棄すると他方の配列が解放され、そのスラブは空になって破棄され、最初の配列は解放される、という具合です: __free_slab() -> free_slab_obj_exts() -> kfree() -> discard_slab() -> __free_slab() は、スタックが使い果たされるまでサイクルに沿って再帰します。メモリ割り当てプロファイリングでは、これにより、フリーパスでの無限の再帰が可能になり、Metaフリートの実稼働ホストでスタックオーバーフローが引き起こされます [1]: BUG:タスクスタックガードページがヒットしました Oops:スタックガードページ RIP:0010:kfree+0x8/0x5d0 呼び出しトレース:__free_slab+0x66/0xc0 kfree+0x3f0/0x5d0 ...(~125x __free_slab <-> kfree) ... <kernel driver freeing a resource> do_syscall_64 オブジェクトサイズよりも大きいサイズの kmalloc キャッシュ(または大きな kmalloc)から常に obj_exts 配列の割り当てを提供することで、この問題を解決することが提案されています [1]。ただし、Vlastimil Babka 氏 [2] が指摘しているように、大きな kmalloc サイズ(kmalloc-8k など)のスラブには、通常、オブジェクトサイズよりもはるかに小さいobj_exts配列が必要になるため、これは過剰な量のメモリを浪費する可能性があります。したがって、サイズを大きくするのではなく、別のアプローチを取りましょう。obj_exts 配列を割り当てる際に、kmalloc 型間のサイクル形成を許可しません。現在、全てのobj_exts配列は、通常の kmalloc キャッシュから提供されます。通常の kmalloc キャッシュのobj_exts配列が、決してobj_exts配列を持てない特殊な kmalloc タイプから提供される場合、サイクルを作成できません。これを実現するには、KMALLOC_NO_OBJ_EXT という名前の新しい kmalloc タイプを作成します。KMALLOC_NO_OBJ_EXTキャッシュは、1)メモリ割り当てプロファイリングが恒久的に無効にされていない場合、あるいは 2)優先度が KMALLOC_CGROUP より高い kmalloc タイプに KMALLOC_NORMAL エイリアスが付されている場合、SLAB_NO_OBJ_EXTフラグ付きで作成されます。KMALLOC_NO_OBJ_EXT キャッシュ用のシーフブートストラップは、現在延期する必要があります。これは、サイズの KMALLOC_NO_OBJ_EXT キャッシュがまだ準備ができていないときobj_exts納屋の割り当てにより、通常の kmalloc キャッシュの配列割り当てがトリガーされる可能性があるためです。わかりやすくするために、後ですべての kmalloc キャッシュのシーブのブートストラップを実行します。新しいスラブ alloc フラグである SLAB_ALLOC_NO_OBJ_EXT を導入して、obj_exts 配列の割り当てを防止し、指定時に kmalloc_slab() が型をオーバーライドして KMALLOC_NO_OBJ_EXT するようにします。注意:kmalloc_type() は kmalloc ファストパスをバイパスするため、kmalloc_flags() は変更されません。alloc_slab_obj_exts() で SLAB_ALLOC_NO_RECURSE を kmalloc_flags() に渡さず、その代わりにオブジェクトが通常の kmalloc キャッシュから割り当てられた場合のみSLAB_ALLOC_NO_OBJ_EXTを使用します。これにより、obj_extsの無制限の再帰割り当てが防止されますが、KMALLOC_NO_OBJ_EXTキャッシュにシーブを保持できるようになります。シーフ割り当ては、シーブとobj_exts配列の両方の割り当てを防ぐSLAB_ALLOC_NO_RECURSEを指定するため、再帰深度は制限されます。非 ---truncated--- に対する obj_exts 配列(CVE-2026-74576)

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

ソリューション

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

参考資料

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

プラグインの詳細

深刻度: Medium

ID: 335827

ファイル名: unpatched_CVE_2026_74576.nasl

バージョン: 1.2

タイプ: Local

エージェント: unix

ファミリー: Misc.

公開日: 2026/8/15

更新日: 2026/8/16

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

リスク情報

VPR

リスクファクター: Low

スコア: 3

パーセンタイル: 23.68

CVSS v2

リスクファクター: Low

基本値: 2.1

現状値: 1.8

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

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

CVSS v3

リスクファクター: Medium

基本値: 5.5

現状値: 5.1

ベクトル: 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:U/RC:C

脆弱性情報

CPE: 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/8/15

参照情報

CVE: CVE-2026-74576