| Title | LinuxのLinux Kernelにおける解放済みメモリの使用に関する脆弱性 |
|---|---|
| Summary | Linuxカーネルにおいて、以下の脆弱性が修正されました。media: as102: as102_usb_probe()内でデバイス登録後にメモリを解放しないように修正されました。as102_usbドライバでは以下の競合状態が発生します。CPU0ではas102_usb_probe()内でkzalloc()によりas102_dev_tを割り当て、usb_register_dev()を呼び出します。一方、CPU1ではsys_open("/path/to/dev")でas102のファイルディスクリプタを開き、その後usb_deregister_dev()とkfree()でas102_dev_tを解放します。sys_close(fd)呼び出し時にはas102_release() → as102_usb_release() → kfree()が発生し、use-after-freeおよびdouble-freeの脆弱性が生じます。usb_register_dev()で登録されたUSBキャラクタデバイスがusb_deregister_dev()や切断によって登録解除されると、デバイスノードは削除されて新しいopen()は失敗しますが、既に開いているファイルディスクリプタは最後の参照が外れるまで有効です。また、ドライバの.release()が呼ばれるまで保持されます。as102_usb_probe()はエラーパスでusb_deregister_dev()後に即座にas102_dev_tを解放してしまうため、ユーザ空間での競合により解放済みメモリへのアクセスが発生し、脆弱性が生まれます。この問題の修正はusb_register_dev()成功後に直接kfree(as102_dev_t)をしないことであり、登録解除後のメモリ解放は.release()に遅延させます。つまり、最後のopenファイルディスクリプタが閉じられた時点で.release()が最終的にkfreeを行うようにしています。 |
| Possible impacts | 当該ソフトウェアが扱う全ての情報が外部に漏れる可能性があります。 また、当該ソフトウェアが扱う全ての情報が書き換えられる可能性があります。 さらに、当該ソフトウェアが完全に停止する可能性があります。 そして、この脆弱性を悪用した攻撃の影響は、他のソフトウェアには及びません。 |
| Solution | リリース情報、またはパッチ情報が公開されています。参考情報を参照して適切な対策を実施してください。 |
| Publication Date | April 24, 2026, midnight |
| Registration Date | April 30, 2026, 12:34 p.m. |
| Last Update | April 30, 2026, 12:34 p.m. |
| CVSS3.0 : 重要 | |
| Score | 7.8 |
|---|---|
| Vector | CVSS:3.0/AV:L/AC:L/PR:L/UI:N/S:U/C:H/I:H/A:H |
| Linux |
| Linux Kernel 6.13 以上 6.18.24 未満 |
| Linux Kernel 6.19 以上 6.19.14 未満 |
| Linux Kernel 6.6.136 未満 |
| Linux Kernel 6.7 以上 6.12.83 未満 |
| Linux Kernel 7.0 以上 7.0.1 未満 |
| No | Changed Details | Date of change |
|---|---|---|
| 1 | [2026年04月30日] 掲載 |
April 30, 2026, 12:34 p.m. |
| Summary | In the Linux kernel, the following vulnerability has been resolved: media: as102: fix to not free memory after the device is registered in as102_usb_probe() In as102_usb driver, the following race condition occurs: When a USB character device registered with usb_register_dev() is later In as102, as102_usb_probe() calls usb_register_dev() and then, on an The fix is to never kfree(as102_dev_t) directly once usb_register_dev() In other words, let release() perform the last kfree when the final open |
|---|---|
| Publication Date | April 25, 2026, 12:16 a.m. |
| Registration Date | April 25, 2026, 4:07 a.m. |
| Last Update | April 27, 2026, 11:16 p.m. |