CVE-2023-2163: eBPF Linux kernel की कमजोरी की खोज और सुधार
पृष्ठभूमि
- eBPF एक ऐसी तकनीक है जो जटिल kernel module लिखे बिना runtime पर Linux kernel की कार्यक्षमता को बढ़ा सकती है।
- eBPF प्रोग्राम किसी विशेष event के होने पर चलते हैं, और load होने से पहले उनकी सुरक्षा की जाँच होना ज़रूरी है।
- verifier जटिल कोड से बना होता है, और इसमें कई कमजोरियाँ पाई गई हैं।
- Google ने eBPF verifier का automated audit करने के लिए Buzzer नाम का एक fuzzer विकसित किया।
Buzzer की pointer arithmetic रणनीति
- Buzzer, eBPF के लिए एक नया fuzzer है, जो logical bug पैदा करने की रणनीति का उपयोग करता है।
- pointer arithmetic रणनीति निम्न चरणों से बनी है:
- registers को random values से initialize करने वाला header बनाना
- random arithmetic और jump instructions बनाना
- किसी random register को चुनना और eBPF map element के pointer के साथ addition करना
- उस element में magic value लिखना
eBPF path pruning
- eBPF verifier यह सुनिश्चित करता है कि प्रोग्राम सुरक्षित रूप से चल सकता है या नहीं।
- condition statement होने पर यह सभी संभावित states का simulation करता है।
- जब बहुत सारे conditional jumps हों, तो performance बेहतर करने के लिए path pruning रणनीति का उपयोग किया जाता है।
bug
- CVE-2023-2163 ने "precise tracking" की अवधारणा पेश की, जिससे path pruning अधिक efficient हुआ।
- bug इसलिए हुआ क्योंकि यह नज़रअंदाज़ कर दिया गया कि r9 register, r6 की precision में योगदान देता है।
exploit
- CVE-2023-2163 का दुरुपयोग करके arbitrary read/write हासिल किया गया, और LPE तथा container escape किए गए।
- मुख्य चरण:
- arbitrary read/write हासिल करना
- process credentials ढूँढना और privilege escalation करना
सुधार
- CVE-2023-2163 को ठीक करने के लिए, precise registers को प्रभावित करने वाले operations में imprecise registers को भी precise के रूप में mark किया गया।
- performance पर इसका असर स्पष्ट नहीं है, लेकिन कोई अतिरिक्त समस्या नहीं मिली।
आगे के विचार
- verification process की जटिलता के कारण eBPF प्रोग्रामों की सुरक्षा सुनिश्चित करना कठिन है।
- Google, Buzzer के माध्यम से इस समस्या को हल करने पर काम कर रहा है, और open source community के योगदान का स्वागत करता है।
GN⁺ का सार
- यह लेख eBPF verifier की कमजोरी को खोजने और उसे ठीक करने की प्रक्रिया समझाता है।
- eBPF kernel security research में एक महत्वपूर्ण तकनीक है, और इसकी सुरक्षा सुनिश्चित करना कठिन है।
- Google ने Buzzer नाम का एक fuzzer विकसित किया है, जो eBPF verifier की कमजोरियों का automated audit करता है।
- यह लेख security researchers और developers के लिए उपयोगी है, और eBPF जैसे जटिल systems की सुरक्षा सुनिश्चित करने में मदद करता है।
- इसी तरह की कार्यक्षमता वाले प्रोजेक्ट्स में eBPF से जुड़े अन्य fuzzer tools शामिल हैं।
अभी कोई टिप्पणी नहीं है.