eBPF سب سسٽم ۾ ڪمزوريون جيڪي لينڪس ڪنييل سطح تي ڪوڊ جي عمل جي اجازت ڏين ٿيون

eBPF سبسسٽم ۾ ٻه نوان خطرات جي نشاندهي ڪئي وئي آهي، جيڪا توهان کي JIT سان گڏ هڪ خاص ورچوئل مشين ۾ لينڪس ڪرنل اندر هينڊلر هلائڻ جي اجازت ڏئي ٿي. ٻئي ڪمزوريون اهو ممڪن بڻائين ٿيون ته توهان جي ڪوڊ کي ڪنيل حقن سان، هڪ الڳ ٿيل eBPF ورچوئل مشين کان ٻاهر. مسئلن بابت معلومات Zero Day Initiative ٽيم پاران شايع ڪئي وئي، جيڪا هلائي ٿي Pwn2Own مقابلي، جنهن دوران هن سال Ubuntu Linux تي ٽي حملا ظاهر ڪيا ويا جيڪي اڳ ۾ اڻڄاتل خطرات استعمال ڪيا ويا هئا (ڇا eBPF ۾ خطرات انهن حملن سان لاڳاپيل آهن رپورٽ نه ڪئي وئي آهي) .

  • CVE-2021-3490 - ڪمزوري 32-bit جي حد کان ٻاهر چيڪنگ جي کوٽ سبب ٿئي ٿي جڏهن bitwise AND, OR, and XOR آپريشنز eBPF ALU32 ۾ انجام ڏين ٿا. هڪ حملو ڪندڙ هن غلطي جو فائدو وٺي سگھي ٿو ڊيٽا کي پڙهڻ ۽ لکڻ لاءِ مختص ٿيل بفر جي حدن کان ٻاهر. XOR عملن سان مسئلو ظاهر ٿئي ٿو ڪنيل ورزن 5.7-rc1 کان شروع ٿئي ٿو، ۽ AND ۽ OR - 5.10-rc1 کان شروع ٿئي ٿو.
  • CVE-2021-3489 - اهو خطرو انگن جي بفر جي عمل ۾ هڪ غلطي جي ڪري آهي ۽ ان حقيقت جي ڪري آهي ته bpf_ringbuf_reserve فنڪشن ان امڪان جي جانچ نه ڪئي آهي ته مختص ڪيل ميموري علائقي جي ماپ اصل سائيز کان گهٽ ٿي سگهي ٿي. ringbuf جي. مسئلو 5.8-rc1 ڇڏڻ کان پوء ظاهر ٿئي ٿو.

تقسيم ۾ خرابين جي پيچيدگي جي صورتحال کي ٽريڪ ڪري سگهجي ٿو انهن صفحن تي: Ubuntu، Debian، RHEL، Fedora، SUSE، Arch). فيڪس پڻ موجود آهن پيچ جي طور تي (CVE-2021-3489، CVE-2021-3490). ڇا مسئلو استحصال ٿي سگهي ٿو ان تي منحصر آهي ته ڇا eBPF سسٽم ڪال صارف تائين رسائي آهي. مثال طور، RHEL ۾ ڊفالٽ ٺاھ جوڙ ۾، خطري جي استحصال لاءِ استعمال ڪندڙ کي CAP_SYS_ADMIN حقن جي ضرورت آھي.

الڳ الڳ، اسان لينڪس ڪنييل ۾ هڪ ٻي ڪمزوري کي نوٽ ڪري سگهون ٿا - CVE-2021-32606، جيڪو مقامي صارف کي روٽ ليول تائين پنهنجا استحقاق بلند ڪرڻ جي اجازت ڏئي ٿو. مسئلو لينڪس ڪنيل 5.11 کان واضح ٿي چڪو آهي ۽ CAN ISOTP پروٽوڪول جي عمل ۾ هڪ نسل جي حالت جي ڪري آهي، جنهن کي isotp_setsockopt() فنڪشن ۾ مناسب لاڪ سيٽ ڪرڻ جي کوٽ جي ڪري ساکٽ بائنڊنگ پيرا ميٽرز کي تبديل ڪرڻ ممڪن بڻائي ٿو. جڏهن پروسيسنگ CAN_ISOTP_SF_BROADCAST پرچم.

ISOTP ساکٽ بند ٿيڻ کان پوء، وصول ڪندڙ ساکٽ تي پابند اثر ۾ رهي ٿو، جيڪو ساکٽ سان لاڳاپيل ساختن کي استعمال ڪرڻ جاري رکي سگهي ٿو جڏهن انهن سان لاڳاپيل ميموري آزاد ٿي ويندي آهي (استعمال-بعد ۾-آزاد ٿيڻ جي ڪري هڪ isotp_sock ساخت کي ڪال ڪرڻ جي ڪري. جيڪو اڳ ۾ ئي آزاد ٿي چڪو آهي جڏهن isotp_rcv() سڏيو ويندو آهي). ڊيٽا جي ڦيرڦار جي ذريعي، توهان sk_error_report() فنڪشن ڏانهن پوائنٽر کي ختم ڪري سگهو ٿا ۽ ڪرنل سطح تي توهان جي ڪوڊ تي عمل ڪري سگهو ٿا.

جو ذريعو: opennet.ru

تبصرو شامل ڪريو