CVE-2026-98613 in Linux
सारांश
द्वारा VulDB • 19/10/2026
Linux kernel में निम्नलिखित कमजोरी को हल किया गया है:
bpf: स्थानीय kptrs और graph roots के माध्यम से स्वामित्व की गहराई पर सीमा लगाएं
प्रोग्राम-आवंटित ऑब्जेक्ट्स संदर्भित kptrs के माध्यम से अन्य स्थानीय ऑब्जेक्ट्स का स्वामी हो सकते हैं। bpf_obj_free_fields() __bpf_obj_drop_impl() के माध्यम से उन पॉइंटर्स को RCU के माध्यम से ऑब्जेक्ट स्टोरेज मुक्त किए जाने से पहले, समकालिक रूप से (synchronously) अनुसरण करता है। इसलिए एक आत्म-संदर्भित स्थानीय kptr प्रकार मनमाने ढंग से गहरी ऑब्जेक्ट श्रृंखलाओं की अनुमति देता है, और हेड को ड्रॉप करने पर kernel stack समाप्त हो सकता है। लंबी acyclic type chains में भी यही समस्या होती है।
btf_check_and_fixup_fields() अभी भी यह मानता है कि संदर्भित kptrs केवल kernel प्रकारों की ओर इशारा करते हैं और स्वामित्व को सूची (list) और rbtree roots के माध्यम से ही जांचते हैं। इसका मौजूदा नियम graph-only cycles के लिए पर्याप्त है: प्रत्येक graph edge का लक्ष्य एक node शामिल करना चाहिए, इसलिए cycle में हर प्रकार के पास both root और node होता है। यह नियम ऐसे प्रकार को दूसरे root को स्वामी होने से रोकता है, जिससे हर cycle टूट जाता है। यह graph-only chains को तीन प्रकारों तक सीमित करता है, या यदि पहला प्रकार एक node शामिल करता है तो दो प्रकार तक, और लंबी acyclic chains को संरक्षित रूप से (conservatively) अस्वीकार कर देता है। स्थानीय-kptr edges की कमी, graph-only cycle की चूक के बजाय, local kptrs में bpf_kptr_xchg() समर्थन द्वारा पेश की गई कमजोरी हैं।
उस प्रतिबंध को graph roots और स्थानीय संदर्भित kptrs को कवर करने वाली एक सीमित स्वामित्व वॉक (ownership walk) से बदलें। इसे सभी BTF रिकॉर्ड्स के फिक्सअप होने के बाद चलाएं, आठ रिकॉर्ड-धारण प्रकारों से गहरे cycles और पथों को अस्वीकार करें, और शेष बजट के खिलाफ जांचते समय प्रत्येक प्रकार की suffix depth को cache करें। यह purane नियम द्वारा अस्वीकृत लंबी acyclic graph-only layouts को भी अनुमति देता है; उनके मौजूदा BTF tests को इसी अनुसार अपडेट करें।
MAX_CALL_FRAMES के सापेक्ष सीमा को स्वतंत्र रखें क्योंकि recursive destruction एक BPF call chain से नीचे चल सकता है। विशेष-फील्ड metadata वाले बिना किसी स्थानीय pointee में केवल अंतिम non-recursing drop जोड़ता है। Non-owning kptrs और kernel-BTF kptrs local records के माध्यम से recurse नहीं करते हैं और वॉक के बाहर रहते हैं। स्थानीय percpu-kptr edges को भी शामिल करें, हालाँकि विशेष फील्ड्स वाले percpu objects का आवंटन वर्तमान में प्रतिबंधित है, ताकि उस प्रतिबंध को ढीलने से स्वामित्व सीमा (ownership bound) bypass न हो सके।
btf_check_and_fixup_fields() graph_root.value_rec को प्रारंभ करता रहता है, जिसमें अलग-अलग आवंटित map records भी शामिल हैं। स्वामित्व संबंध immutable program BTF से संबंधित हैं और केवल BTF load time पर मान्यता की आवश्यकता होती है।
If you want to get best quality of vulnerability data, you may have to visit VulDB.