| Title | LinuxのLinux Kernelにおける不特定の脆弱性 |
|---|---|
| Summary | Linuxカーネルにおいて、以下の脆弱性が修正されました。liveupdateのluo_file構造体に関連するretrieve()の状態管理に関する問題です。LUOはLUOファイルに対する成功したretrieve試行を追跡し、同じファイルの複数回のretrieveを回避するために実装されています。複数回のretrieveは問題を引き起こします。一度ファイルが取得されると、直列化されたデータ構造が解放されている可能性が高く、ファイルの状態がコードの期待する状態と大きく異なるためです。struct luo_fileのretrieve状態はブール値で追跡され、完了コールバックに渡されて実行済みの作業および残された作業を認識します。この仕組みは取得成功時には正常に機能します。しかし失敗した場合、luo_retrieve_file()は即座にエラーを返し、retrieve試行の有無やエラーコードを記録しません。そのため、ユーザースペースにはエラーになったLIVEUPDATE_SESSION_RETRIEVE_FD ioctlが返されますが、再試行を防止できません。この再試行は前述の理由で問題を引き起こします。ファイルの状態がretrieveロジックの通常の期待と大きく異なり、直列化データ構造の一部がすでに解放されている状態だからです。これらにアクセスしたり再度解放しようとすると問題が発生します。例えば、memfdが10個のフォリオのうち8個を復元し、9個目で失敗した場合、その後のretrieve試行は最初のフォリオに対して再度kho_restore_folio()を呼び出そうとし、それは無効な操作として警告を引き起こします。再試行に加え、finish()も問題を生じさせます。失敗時にluo_file内のretrievedフラグは変更されないため、セッション終了時のfinish()呼び出しはretrieve未試行と判断し、存在しない可能性のあるデータ構造にアクセスまたは解放を試み、再試行と同様の問題が発生します。retrieveを安全に再試行する方法は存在しません。エラーを記憶し、再試行時にはそのエラーを直接返す必要があります。またこの状態コードをfinish()に渡して適切な処理を可能にします。この改善はブール値を整数に変更することで実現され、値が0ならretrieve未試行、正の値は成功、負の値は失敗かつそのエラーコードを示します。 |
| Possible impacts | ・当該ソフトウェアが扱う情報について、外部への漏えいは発生しません。 ・当該ソフトウェアが扱う情報について、書き換えは発生しません。 ・当該ソフトウェアが完全に停止する可能性があります。 |
| Solution | リリース情報、またはパッチ情報が公開されています。参考情報を参照して適切な対策を実施してください。 |
| Publication Date | May 13, 2026, midnight |
| Registration Date | June 29, 2026, 11:19 a.m. |
| Last Update | June 29, 2026, 11:19 a.m. |
| CVSS3.0 : 警告 | |
| Score | 5.5 |
|---|---|
| Vector | CVSS:3.0/AV:L/AC:L/PR:L/UI:N/S:U/C:N/I:N/A:H |
| Linux |
| Linux Kernel 6.19 以上 6.19.9 未満 |
| Linux Kernel 7.0 |
| No | Changed Details | Date of change |
|---|---|---|
| 1 | [2026年06月29日] 掲載 |
June 29, 2026, 11:19 a.m. |
| Summary | In the Linux kernel, the following vulnerability has been resolved: liveupdate: luo_file: remember retrieve() status LUO keeps track of successful retrieve attempts on a LUO file. It does so The retrieve boolean in struct luo_file keeps track of this, and is passed All this works well when retrieve succeeds. When it fails, The retry is problematic for much of the same reasons listed above. The For example, if memfd managed to restore 8 of its 10 folios, but fails on Apart from the retry, finish() also breaks. Since on failure the There is no sane way of attempting the retrieve again. Remember the error This is done by changing the bool to an integer. A value of 0 means |
|---|---|
| Publication Date | May 14, 2026, 1:16 a.m. |
| Registration Date | May 15, 2026, 4:21 a.m. |
| Last Update | May 14, 2026, 1:16 a.m. |