| Title | LinuxのLinux KernelにおけるNULL ポインタデリファレンスに関する脆弱性 |
|---|---|
| Summary | Linuxカーネルにおいて、以下の脆弱性が修正されました。ksmbdのsmb2_lock()関数におけるメモリリークおよびNULL参照の問題を修正しました。smb2_lock()では、no_check_clでlist_del()がsmb_lockをlock_listから切り離した後に、3つのエラー処理問題が存在していました。まず、非UNLOCKパスにおいてvfs_lock_file()が予期しないエラーを返した場合、goto outによってsmb_lockおよびそのflockがリークしていました。これはout:ハンドラがlock_listとrollback_listのみをイテレートし、切り離されたsmb_lockを含んでいなかったためです。次に、UNLOCKパスでvfs_lock_file()が-ENOENTを返した場合も同様に、goto outによってsmb_lockとflockがリークし、ディスパッチャに返されるエラーコードも古いままでした。最後に、ロールバックパスでsmb_flock_init()が割り当て失敗によりNULLを返すことがあり、その戻り値が無条件に参照されたため、カーネルのNULLポインタ参照が発生していました。クラッシュを防ぐためにNULLチェックを追加し、管理情報を適切にクリーンアップしています。割り当てがない場合、VFSロック自体はロールバックできず、ファイルまたは接続の終了時に解放されます。ケース1および2については、UNLOCKブランチのif(!rc)チェックの前にlocks_free_lock()やkfree()を移動させ、すべての終了パスが1つの解放箇所を共有するように修正しました。また、非UNLOCKブランチではgoto outの前にsmb_lockとflockを解放するようにしています。さらに、両ケースで正しいエラーコードを伝播させるようにしています。ケース3は、VFSアンロックをif(rlock)でガードし、共通のクリーンアップ処理内でlocks_free_lock(rlock)のNULLチェックを追加して修正しました。この脆弱性はsqryを用いたコールグラフ解析で発見されました。 |
| Possible impacts | 当該ソフトウェアが扱う情報について、外部への漏えいは発生しません。 また、当該ソフトウェアが扱う情報について、書き換えは発生しません。 さらに、当該ソフトウェアが完全に停止する可能性があります。 そして、この脆弱性を悪用した攻撃の影響は、他のソフトウェアには及びません。 |
| Solution | リリース情報、またはパッチ情報が公開されています。参考情報を参照して適切な対策を実施してください。 |
| Publication Date | April 22, 2026, midnight |
| Registration Date | April 30, 2026, 12:10 p.m. |
| Last Update | April 30, 2026, 12:10 p.m. |
| CVSS3.0 : 重要 | |
| Score | 7.5 |
|---|---|
| Vector | CVSS:3.0/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:H |
| Linux |
| Linux Kernel 5.15 |
| Linux Kernel 5.15.1 以上 6.1.168 未満 |
| Linux Kernel 6.13 以上 6.18.21 未満 |
| Linux Kernel 6.19 以上 6.19.11 未満 |
| Linux Kernel 6.2 以上 6.6.131 未満 |
| Linux Kernel 6.7 以上 6.12.80 未満 |
| Linux Kernel 7.0 |
| No | Changed Details | Date of change |
|---|---|---|
| 1 | [2026年04月30日] 掲載 |
April 30, 2026, 12:10 p.m. |
| Summary | In the Linux kernel, the following vulnerability has been resolved: ksmbd: fix memory leaks and NULL deref in smb2_lock() smb2_lock() has three error handling issues after list_del() detaches 1) If vfs_lock_file() returns an unexpected error in the non-UNLOCK 2) If vfs_lock_file() returns -ENOENT in the UNLOCK path, goto out 3) In the rollback path, smb_flock_init() can return NULL on Fix cases 1 and 2 by hoisting the locks_free_lock()/kfree() to before Found via call-graph analysis using sqry. |
|---|---|
| Publication Date | April 22, 2026, 11:16 p.m. |
| Registration Date | April 25, 2026, 4:05 a.m. |
| Last Update | April 27, 2026, 11:16 p.m. |