CVE-2026-89638情報

要約

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

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

smb: クライアント: cifsacl/modefromsid/POSIX拡張機能を使用する際の書き込み時にsetuid/setgidビットをクリアする

ファイルにsetuidまたはsetgidビットが設定されており、そのファイルへの書き込みが行われると、VFS(仮想ファイルシステム)はこれらのビットを取り除き、ATTR_KILL_SUIDおよびATTR_KILL_SGIDと共に、既にクリアされたモードを含むATTR_MODEを使用してsetattrを発行します。

cifs_setattr_unix() および cifs_setattr_nounix() の両関数は、この状況において ATTR_MODE を無条件にドロップしていました:

/* setuid/setgidのクリアのみを目的とする場合は、モード変更をスキップする */ if (attrs->ia_valid & (ATTR_KILL_SUID|ATTR_KILL_SGID)) attrs->ia_valid &= ~ATTR_MODE;

これは、デフォルトのマウントでは問題ありません。なぜなら、その場合のモードはDOSの読み取り専用属性を通じてのみエミュレートされ、setuid/setgidビットを表現できないからです。しかし、「cifsacl」または「modefromsid」というマウントオプションを使用する場合、モードはACL(id_mode_to_cifs_acl())を介してサーバーに保存されます。SMB3.1.1 POSIX拡張機能を使用する場合は、モードが直接サーバーへ送信され、SMB1 Unix拡張機能(cifs_setattr_unix)を使用する場合は、CIFSSMBUnixSetPathInfo() を通じてモードが送信されます。これらのすべてのケースにおいて ATTR_MODE をドロップすると、クリアされたモードはサーバーにプッシュされないため、setuid/setgidビットは書き込み後も残存してしまいます。

これはセキュリティ上の問題です:ローカルファイルシステムでは、ファイルへの書き込み時にsetuidビットは取り除かれますが、cifs.koのマウント経由ではそのビットがサーバー上で維持され、結果として後続の実行において予期せぬ特権昇格(Privilege Escalation)を招く可能性があります。

これを2つの箇所にて修正します:

1. cifs_setattr_nounix(): 「モード変更のスキップ」というショートカットは、モードがDOS読み取り専用属性を通じてエミュレートされている場合(つまり、cifsacl/modefromsid も SMB3.1.1 POSIX拡張機能も有効でない場合)のみ適用し、ACLおよびPOSIXの場合にクリアされたモードがサーバーへ伝播されるようにします。

2. cifs_setattr_unix(): この関数はUnix拡張機能が有効な場合にのみ呼び出されるため、モードは常にサーバー上に保存されます。ショートカットを完全に削除し、クリアされたモードが常にプッシュされるようにします。

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

モデレーション

レビュー中

EPSS

0.00000

アクティビティ

非常低い

ソース

Want to know what is going to be exploited?

We predict KEV entries!