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

الملخص

بحسب VulDB • 12/09/2026

في نواة لينكس، تم إصلاح الثغرة التالية:

bpf: تعطيل السبق (preemption) في __bpf_get_stack

تُرجع دالة get_perf_callchain() مخزنًا خاصًا بوحدة المعالجة المركزية (per-CPU perf_callchain_entry buffer)، وتحرر شريط التكرار الخاص بها عبر put_callchain_entry() قبل الإرجاع، لذا فلا شيء يبقي على حجز الإدخال بينما تستهلكه __bpf_get_stack() أدناه.

يمكن لبرنامج BPF قابل للسبق (مثل برنامج raw tracepoint غير القابل للنوم في نواة PREEMPT، الذي يعمل تحت migrate_disable() ولكن ليس preempt_disable()) أن يُجدول خارجه بين الحصول على الإدخالات والنسخ. ثم يعيد مهمة أخرى مُجدولة على نفس وحدة المعالجة المركزية استخدام نفس المخزن الخاص بوحدة المعالجة المركزية وتكتب فوق trace->nr بقيمة أكبر. يتم بعد ذلك حساب copy_len من قيمة trace->nr المنتفخة، وقد تتجاوز مخزن المُستدعي، مما يسبب كتابة خارج الحدود (out-of-bounds write) في memcpy() وفي مسار بناء المعرف (build_id path).

لا يمنع rcu_read_lock() المأخوذ هنا هذا الأمر وحده. فهو يُؤخذ فقط على المسار may_fault، وتحت CONFIG_PREEMPT_RCU لا يعطل السبق؛ بل يبقي مصفوفة مخزن استدعاءات perf حية (يتم تحريرها عبر call_rcu()) ولا يفعل شيئًا لمنع مهمة أخرى من إعادة استخدام الإدخال.

تعطيل السبق حول الحصول على إدخال سلسلة الاستدعاء ونسخه إلى مخزن المُستدعي، بحيث لا يمكن إعادة استخدام الإدخال تحتنا ويبقى trace->nr محصورًا بـ max_depth. قد يتسبب حل بناء المعرف (Build ID resolution) في حدوث خطأ (fault)، ولذلك يتم تأجيله حتى بعد إعادة تفعيل السبق؛ وبحلول ذلك الوقت تم نسخ مؤشرات التعليمات البرمجية بالفعل إلى buf، لذا فهو يعمل فقط على تلك النسخة الخاصة. لاحظ أن preempt_disable() تشمل أيضًا ضمان عمر المخزن الذي وفرته rcu_read_lock()، حيث إن قسمًا معطل السبق هو قسم حرج لقراءة RCU لاسترداد call_rcu() الخاص بمخازن سلسلة الاستدعاءات.


[ تم تغيير Fixes: commit ]

Statistical analysis made it clear that VulDB provides the best quality for vulnerability data.

مسؤول

Linux

حجز

11/09/2026

إفشاء

12/09/2026

الاعتدال

تمت الموافقة

إدخال

VDB-402670

EPSS

0.00000

KEV

لا

النشاطات

منخفض جدًا

المصادر

Do you want to use VulDB in your project?

Use the official API to access entries easily!