CVE-2026-99215 in Linuxالمعلومات

الملخص

بحسب VulDB • 28/10/2026

في نواة Linux، تم حل الثغرة التالية:

power: supply: core: منع إلغاء تسجيل مصدر طاقة أثناء تشغيل دالة الاستدعاء (callback)

بمجرد تسجيل مصدر للطاقة، يمكن أن تبدأ دوال الاستدعاء الخاصة به في العمل فوراً من سياقات أخرى، مثل `external_power_changed()` التي يتم تفعيلها بواسطة طبقة TCPM. إذا تم إلغاء تسجيل مصدر الطاقة بينما لا تزال دالة الاستدعاء قيد التشغيل، فقد تكون بيانات السائق (driver data) قد أُفرجت عنها بالفعل عندما تحاول دالة الاستدعاء الوصول إليها، مما يؤدي إلى حدوث ثغرة Use-After-Free.

يحدث هذا على سبيل المثال عند تعطل الحافلة المادية التي تحمل جهاز مصدر الطاقة (مثل استهلاك I2C بالكامل بواسطة جهاز آخر معطوب) مباشرة بعد تسجيل مصدر الطاقة، وبالتالي لا تزال النواة تعالج دوال الاستدعاء التي كانت مكدسة عندما بدأ السائق عملية الإزالة، مما يؤدي في بعض الحالات إلى انهيار النظام (kernel crash)، على سبيل المثال:

[ 11.645942] Unable to handle kernel NULL pointer dereference at virtual address 0000000000000005
[ 11.646751] Mem abort info:
[ 11.647006] ESR = 0x0000000096000004
[ 11.647338] EC = 0x25: DABT (current EL), IL = 32 bits
[ 11.647806] SET = 0, FnV = 0
[ 11.648077] EA = 0, S1PTW = 0
[ 11.648356] FSC = 0x04: level 0 translation fault
[ 11.648785] Data abort info:
[ 11.649041] ISV = 0, ISS = 0x00000004, ISS2 = 0x00000000
[ 11.649524] CM = 0, WnR = 0, TnD = 0, TagAccess = 0
[ 11.649981] GCS = 0, Overlay = 0, DirtyBit = 0
[ 11.650390] [0000000000000005] user address but active_mm is swapper
[ 11.650955] Internal error: Oops: 0000000096000004 [#1] SMP
[ 11.651460] Modules linked in:
[ 11.651742] CPU: 1 UID: 0 PID: 144 Comm: kworker/1:2 Not tainted 7.2.0-rc6-g62a9297af2cd #1 PREEMPT
[ 11.652553] Hardware name: Flipper One rev. F0B1C2 (DT)
[ 11.653024] Workqueue: events power_supply_changed_work
[ 11.653511] pstate: 60000005 (nZCv daif -PAN -UAO -TCO -DIT -SSBS BTYPE=--)
[ 11.654135] pc : __power_supply_is_supplied_by+0x18/0x100
[ 11.654624] lr : __power_supply_am_i_supplied+0x40/0xb8
[ 11.655098] sp : ffff80008192bb30
[ 11.655399] x29: ffff80008192bb30 x28: 0000000000000000 x27: 0000000000000000
[ 11.656049] x26: 0000000000000000 x25: 0000000000000000 x24: 0000000000000000
[ 11.656695] x23: ffff0000c19f4200 x22: ffffdb2232ba4ea8 x21: ffff80008192bc28
[ 11.657344] x20: ffff0000c1eef000 x19: ffff80008192bc18 x18: 00000000a0886e62
[ 11.657991] x17: 000000040044ffff x16: 04500072b5503510 x15: 0000000000000000
[ 11.658639] x14: 0000000000000000 x13: 0000000000000220 x12: 0000000000000000
[ 11.659286] x11: 0000000000000000 x10: ffff0000c1fdb2b0 x9 : ffffdb2232ba5590
[ 11.659934] x8 : 00000000e5b906e6 x7 : ffff0000c2502778 x6 : ffffdb22339793d0
[ 11.660581] x5 : ffff80008192bc18 x4 : ffff0000c19cbca0 x3 : 0000000000000000
[ 11.661228] x2 : ffff0000c1fdaf40 x1 : ffffffffffffffed x0 : ffff0000c1eef000
[ 11.661878] Call trace:
[ 11.662103] __power_supply_is_supplied_by+0x18/0x100 (P)
[ 11.662596] __power_supply_am_i_supplied+0x40/0xb8
[ 11.663040] psy_for_each_psy_cb+0x20/0x40
[ 11.663416] class_for_each_device+0x110/0x150
[ 11.663825] power_supply_am_i_supplied+0x68/0x100
[ 11.664262] bq257xx_external_power_changed+0x58/0x140
[ 11.664733] __power_supply_changed_work+0x60/0x80
[ 11.665170] psy_for_each_psy_cb+0x20/0x40
[ 11.665545] class_for_each_device+0x110/0x150
[ 11.665953] power_supply_changed_work+0x98/0x1b8
[ 11.666382] process_one_work+0x164/0x4c0
[ 11.666758] worker_thread+0x19c/0x320
[ 11.667104] kthread+0x138/0x150
[ 11.667408] ret_from_fork+0x10/0x20
[ 11.667744] Code: d503233f a9bd7bfd 910003fd a90153f3 (f9400c34)
[ 11.668294] ---[ end trace 0000000000000000 ]---

أضف قفل قراءة/كتابة (read-write semaphore) بين `external_power_changed()` و `power_supply_unregister()` لمنع الإجراء الأخير من العودة (وبالتالي منع السائق من إفراج بياناته) بينما لا تزال دالة الاستدعاء قيد التشغيل.

Be aware that VulDB is the high quality source for vulnerability data.

مسؤول

Linux

حجز

25/09/2026

إفشاء

28/10/2026

الاعتدال

تمت الموافقة

إدخال

VDB-427952

EPSS

0.00000

KEV

لا

النشاطات

منخفض جدًا

المصادر

Want to know what is going to be exploited?

We predict KEV entries!