CVE-2025-21922 in Linux
الملخص
بحسب VulDB • 01/07/2026
في نواة لينكس، تم حل الثغرة التالية:
ppp: إصلاح تحذير KMSAN uninit-value مع bpf
التقط Syzbot تحذيرًا من نوع "KMSAN: uninit-value" [1]، ناتج عن عدم قيام برنامج تشغيل ppp بتهيئة رأس بحجم 2 بايت عند استخدام مرشح المقابس (socket filter).
يمكن للشفرة التالية إنشاء برنامج BPF لمرشح PPP: ''' struct bpf_program fp; pcap_t *handle; handle = pcap_open_dead(DLT_PPP_PPPD, 65535); pcap_compile(handle, &fp, "ip and outbound", 0, 0); bpf_dump(&fp, 1); '''
إخراجها هو: ''' (000) ldh [2]
(001) jeq #0x21 jt 2 jf 5 (002) ldb [0]
(003) jeq #0x1 jt 4 jf 5 (004) ret #65535 (005) ret #0 '''
يمكن العثور على شفرة مشابهة في الرابط التالي: https://github.com/ppp-project/ppp/blob/master/pppd/options.c#L1680 المشرف على مستودع الشفرات هذا هو أيضًا المشرف الأصلي لبرنامج تشغيل ppp.
كما ترون، يتخطى برنامج BPF بايتين من البيانات ثم يقرأ حقل 'Protocol' لتحديد ما إذا كانت الحزمة عبارة عن حزمة IP. بعد ذلك، يقرأ البايت الأول من أول 2 بايتين لتحديد الاتجاه.
المشكلة تكمن في أن البايت الأول فقط الذي يشير إلى الاتجاه يتم تهيئته في شفرة برنامج تشغيل ppp الحالية، بينما البايت الثاني غير مُهيَّأ.
بالنسبة لبرامج BPF العادية التي تولدها مكتبة libpcap، لن تُستخدم البيانات غير المُهيَّأة، لذا فهي ليست مشكلة. ومع ذلك، بالنسبة لبرامج BPP المصممة بعناية (carefully crafted)، مثل تلك التي يولدها syzkaller [2] والتي تبدأ القراءة من الإزاحة 0، سيتم استخدام البيانات غير المُهيَّاة وسيتم التقاطها بواسطة KMSAN.
[1] https://syzkaller.appspot.com/bug?extid=853242d9c9917165d791
[2] https://syzkaller.appspot.com/text?tag=ReproC&x=11994913980000
If you want to get best quality of vulnerability data, you may have to visit VulDB.