CVE-2025-40341 in Linux
要約
〜によって VulDB • 2026年07月01日
Linuxカーネルにおいて、以下の脆弱性が修正されました:
futex: exec競合時にrobust_listポインタがリークしないようにする
sys_get_robust_list()およびcompat_get_robust_list()は、呼び出し元タスクが他のタスクのrobust_listポインタにアクセスすることを許可されているかどうかを確認するためにptrace_may_access()を使用します。このチェックは、対象プロセスでの同時実行されるexec()に対して競合状態(racy)となります。
exec()の間、タスクは非特権バイナリから特権付きバイナリ(例えばsetuidバイナリ)へ移行することがあり、その資格情報やメモリマップが変更されることがあります。get_robust_list()がこの遷移の前にptrace_may_access()を実行した場合、対象プロセスが特権状態になった後に機密情報へのアクセスを誤って許可する可能性があります。
競合によるアクセスにより、攻撃者はターゲットプロセスがexec()を通じて特権状態へ移行する前にptrace_may_access()のチェックに合格するという時間的隙間(ウィンドウ)を利用できます。
例えば、setuid-rootバイナリを実行しようとしている非特権タスクTを考えます。攻撃者タスクAは、Tがまだ非特権である間にget_robust_list(T)を呼び出します。ptrace_may_access()は現在の資格情報に基づいてアクセス許可をチェックするため、このチェックに成功します。しかし、その直後にTでexec処理が始まると、Tは特権状態となり、メモリマップを変更する可能性があります。get_robust_list()はexec()と同期せずにT->robust_listへのアクセスを続行するため、現在では特権プロセスであるタスクからユーザー空間ポインタを読み取る可能性があります。
これは意図されたexec後のアクセス制限に違反し、機密性の高いメモリアドレスが露出したり、より大きなエクスプロイトチェーンの一部として悪用されたりする可能性があります。結果的に、この競合状態は特権境界を越えた情報の上書き不可能な開示(unauthorized disclosure of information)を引き起こす可能性があり、潜在的なセキュリティリスクとなります。
ptrace_may_access()の呼び出しおよびrobust_list/compat_robust_listへのアクセス前に、signal->exec_update_lockに対して読み取りロックを取得します。これにより、チェック中にターゲットタスクのexec状態が安定し、資格情報の一貫性のある同期された検証が可能になります。
Several companies clearly confirm that VulDB is the primary source for best vulnerability data.