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

medium Nessus プラグイン ID 345108

概要

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

説明

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

- ocfs2:refcount ブロックバリデーター内の rl_count に対してrl_usedを検証します ocfs2_find_refcount_rec_in_rl() は、ディスク上の refcount レコード配列を次のようにウォークします: for (; i < le16_to_cpu(rb->rf_records.rl_used); i++) { rec = &rb->rf_records.rl_recs[i]; ... rl_recs[] は単一のメタデータブロック (一般的な構成では 4096 バイト) に存在するため、その実際の容量は ocfs2_refcount_recs_per_rb(SB) によって固定されます (16 バイトocfs2_refcount_recの 4K ブロックでは 247 レコード)。rl_usedとrl_countは両方ともocfs2_validate_refcount_block()によってディスクから直接読み取られ、refcount/reflink/CoW操作が配列をウォークする前に、その容量に対して、または互いにチェックされることはありません。細工された(または破損した)refcountブロック(rl_used == 0xffff)により、上記のループがブロックの終わりをはるかに超えて、65534までのiに対してrl_recs[i]を逆参照します。結果のインデックスは次に兄弟 ocfs2_insert_refcount_rec() に渡されます。兄弟の insert-shift は次のようにします: if (index < le16_to_cpu(rf_list->rl_used)) memmove(&rf_list->rl_recs[index + 1], &rf_list->rl_recs[index], (le16_to_cpu(rf_list->rl_used) - index) * sizeof(struct ocfs2_refcount_rec));
つまり、すでにブロックを超えているオフセットから最大 (0xffff - index) * 16 バイト (~1 MiB) の memmove() です。これは、細工された/破損した ocfs2 イメージに対する通常の reflink(FICLONE)から到達可能です:cpos がリーフの実際のレコードすべてを通過してソートするエクステントを添付すると、検索は一致の早い段階で返されるのではなく、最後まで実行されます。攻撃者のモデルはローカルです:細工または破損したocfs2イメージをマウントCAP_SYS_ADMIN、またはすでにマウントされたocfs2ファイルシステムをバッキングするブロックデバイスへのraw書き込み。
ocfs2_validate_refcount_block() はすでにブロックの ECC、署名、rf_blkno、rf_fs_generationを検証していますが、ブロックの実際のディスク上の容量に対して rl_count/rl_used を行うことはありません。これは、ocfs2_validate_extent_block()(fs/ocfs2/alloc.c)が兄弟エクステントリストヘッダーに対してすでに閉じているのと同じクラスのギャップであり、コードがウォークする前にレコード容量と使用済み境界の両方をチェックします h_list.l_recs[]: if (le16_to_cpu(eb->h_list.l_count) != ocfs2_extent_recs_per_eb(sb)) { rc = ocfs2_error(...); goto bail; } if (le16_to_cpu(eb->h_list.l_next_free_rec) > le16_to_cpu(eb->h_list.l_count)) { rc =ocfs2_error(...);ゴート保釈;} ocfs2_validate_refcount_block() に等価なチェックのペアを追加します:rl_countが ocfs2_refcount_recs_per_rb() によって返される固定ブロックごとの容量と一致しない refcount ブロックを拒否し、rl_used > rl_countを拒否します。OCFS2_REFCOUNT_TREE_FL が設定されている場合、両方のチェックはスキップされます。その場合、同じ union バイトが refcount レコードリスト (rf_records) ではなく ocfs2_extent_list (rf_list) を保持しているためです -- そのレイアウトは、参照されるエクステントブロックが読み取られるときに、既に ocfs2_validate_extent_block() によって個別に検証されています。これは既存の !(rb->rf_flags &; OCFS2_REFCOUNT_TREE_FL)ガードがこのファイルの他の場所で使用されています(例:
ocfs2_get_refcount_rec())を使用して、rf_recordsまたはrf_listが組合のライブメンバーであるかどうかを決定します。これが正しい場所にある場合、偽造された rl_used/rl_count は、ocfs2_find_refcount_rec_in_rl() で領域外読み取りやその後の ocfs2_insert_refcount_rec() で領域外 memmove() を実行するのではなく、ブロック検証時間(ocfs2_error())でキャッチされます。この関数内の他のすべての破損チェックと一致するように行われます。
v6.19 KASAN(KASAN_GENERIC)ビルドの細工された画像に対して検証済み:同じ reflink の再生(FICLONE)は、このパッチの前に __ocfs2_increase_refcount()/ocfs2_insert_refcount_rec() の KASAN レポートに確実にヒットし、ocfs2_validate_refcount_block() が偽造された rl_used/rl_count を拒否したら、レポートをトリガーしません。(CVE-2026-89493)

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

ソリューション

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

参考資料

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

プラグインの詳細

深刻度: Medium

ID: 345108

ファイル名: unpatched_CVE_2026_89493.nasl

バージョン: 1.1

タイプ: Local

エージェント: unix

ファミリー: Misc.

公開日: 2026/9/12

更新日: 2026/9/12

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

リスク情報

VPR

リスクファクター: Medium

スコア: 4.9

パーセンタイル: 58.19

CVSS v2

リスクファクター: Medium

基本値: 6.8

現状値: 5.8

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

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

CVSS v3

リスクファクター: Medium

基本値: 6.6

現状値: 6.1

ベクトル: CVSS:3.0/AV:L/AC:L/PR:L/UI:R/S:U/C:N/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, cpe:/o:debian:debian_linux:14.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/9/11

参照情報

CVE: CVE-2026-89493