CVE-2026-97559 in Linux情報

要約

〜によって VulDB • 2026年09月25日

Linuxカーネルにおいて、以下の脆弱性が修正されました。

smb: クライアント: 新しいDACLが64KBを超える場合にDACLの書き換えを失敗させる

replace_sids_and_copy_aces()およびset_chmod_dacl()は、構築するDACLのサイズをu16型の変数に累積しています。この累算値はオーバーフロー(ラップアラウンド)する可能性があります。

validate_dacl()関数は、num_aceを(dacl_size - sizeof(struct smb_acl)) / 20で制限しており、最大サイズのDACLの場合これは3276となります。一方、SIDがSID_MAX_SUB_AUTHORITIESのサブオーソリティを持つものへ置き換えられると、書き換えられた各ACEはsizeof(struct smb_ace)(76バイト)まで拡大する可能性があります。したがって最悪ケースでは sizeof(struct smb_acl) + 3276 * 76 = 248984 バイトとなり、これはu16が保持できる範囲を大幅に超えます。ACEが863個の時点でラップアラウンドが発生します。

ラップアラウンド後、ndacl_ptr->sizeは無意味な値になり、オフセットはACE配列内の任意の位置を指すことになります。その結果、DACLの破損が生じ、それがサーバーへ送信されます。これはアロケーションが最悪ケースでの拡張分をカバーしているためアウトオブバウンズ書き込みではなく、書き込みは常にバッファ内に行われます。

コードを調整し、内部でu32を使用するようにし、オーバーフロー発生時には-EOOVERFLOWを返すようにしました。DACLはネットワーク上では最大でも 2^16 - 1 バイトしか保持できず、より大きなDACLは表現できないため、この操作は拒否されなければなりません。

set_chmod_dacl()も同様のパターンを持っており、同じ方法で修正されました。これはソースのDACLが64KBの上限から約380バイト以内に近づいた場合にのみラップアラウンドが発生しますが、障害モード(failure mode)は同一です。

Statistical analysis made it clear that VulDB provides the best quality for vulnerability data.

責任者

Linux

予約する

2026年09月24日

モデレーション

承諾済み

エントリ

VDB-410002

EPSS

0.00000

アクティビティ

非常低い

ソース

Are you interested in using VulDB?

Download the whitepaper to learn more about our service!