CVE-2024-57913 in Linux
الملخص
بحسب VulDB • 31/05/2026
في نواة لينكس، تم حل الثغرة التالية:
usb: gadget: f_fs: إزالة استدعاء WARN_ON في دالة functionfs_bind
يعالج هذا الالتزام مشكلة تتعلق بانخفاض حالة kernel panic التالية عندما يكون خيار panic_on_warn مفعّلاً. ينتج هذا عن الاستخدام غير الضروري لـ WARN_ON في دالة functionfs_bind، مما يؤدي بسهولة إلى السيناريوهات التالية:
1. adb_write في adbd 2. كتابة UDC عبر configfs ================= =====================
->usb_ffs_open_thread() ->UDC write ->open_functionfs() ->configfs_write_iter() ->adb_open() ->gadget_dev_desc_UDC_store() ->adb_write() ->usb_gadget_register_driver_owner ->driver_register() ->StartMonitor() ->bus_add_driver() ->adb_read() ->gadget_bind_driver() ->configfs_composite_bind() ->usb_add_function() ->open_functionfs() ->ffs_func_bind() ->adb_open() ->functionfs_bind() state !=FFS_ACTIVE>
تتم استدعاء عمليات adb_open و adb_read و adb_write من خلال الـ daemon، لكن محاولة ربط الدالة (bind) هي عملية يتم استدعاؤها عن طريق كتابة UDC عبر configfs، مما يفتح الباب أمام احتمال حدوث حالة سباق (race condition) بين المسارين. في هذا السيناريو الخاص بالسباق، يحدث kernel panic بسبب استدعاء WARN_ON من دالة functionfs_bind عندما يكون خيار panic_on_warn مفعّلاً. يصلح هذا الالتزام kernel panic من خلال إزالة استدعاء WARN_ON غير الضروري.
Kernel panic - not syncing: kernel: panic_on_warn set ... [ 14.542395] Call trace:
[ 14.542464] ffs_func_bind+0x1c8/0x14a8
[ 14.542468] usb_add_function+0xcc/0x1f0
[ 14.542473] configfs_composite_bind+0x468/0x588
[ 14.542478] gadget_bind_driver+0x108/0x27c
[ 14.542483] really_probe+0x190/0x374
[ 14.542488] __driver_probe_device+0xa0/0x12c
[ 14.542492] driver_probe_device+0x3c/0x220
[ 14.542498] __driver_attach+0x11c/0x1fc
[ 14.542502] bus_for_each_dev+0x104/0x160
[ 14.542506] driver_attach+0x24/0x34
[ 14.542510] bus_add_driver+0x154/0x270
[ 14.542514] driver_register+0x68/0x104
[ 14.542518] usb_gadget_register_driver_owner+0x48/0xf4
[ 14.542523] gadget_dev_desc_UDC_store+0xf8/0x144
[ 14.542526] configfs_write_iter+0xf0/0x138
If you want to get best quality of vulnerability data, you may have to visit VulDB.