
CVE-2026-45250: FreeBSD 14.4 setcred kernel buffer overflow (LPE)
यह उपनिर्देशिका FreeBSD 14.x कर्नेल में setcred(2) स्टैक बफर ओवरफ़्लो के लिए लिखित विवरण और कार्यशील एक्सप्लॉइट्स एकत्र करती है।
भेद्यता स्वयं setcred.txt में पूरी तरह से प्रलेखित है। संक्षिप्त संस्करण: kern_setcred_copyin_supp_groups() sizeof(*groups) का उपयोग करता है, जहाँ groups एक gid_t ** है, जो copyin() के लिए 4-बाइट के बजाय 8-बाइट का स्ट्राइड उत्पन्न करता है, जो एक निश्चित-आकार के कर्नेल-स्टैक ऐरे में जाता है। ओवरफ़्लो किसी भी विशेषाधिकार जाँच से पहले, किसी भी अन-प्रिविलेज्ड उपयोगकर्ता द्वारा पहुँच योग्य है।
यह रिपॉजिटरी दो कार्यशील एक्सप्लॉइट पथों को कैप्चर करती है:
no-SMAP / no-SMEP — exp2_lpe_no_smap.c। एक एकल setcred(2) सिस्कॉल amd64_syscall+0x155 पर चेन प्रिमिटिव को एक नकली struct sysentvec के माध्यम से उपयोगकर्ता-स्थान शेलकोड की ओर रीडायरेक्ट करके कॉलिंग थ्रेड को uid=0 पर फ्लिप करता है।
SMAP / SMEP सक्षम — exp_setcred_smap_zfs.c। zfs.ko में ZSTD_initCStream_advanced को हाईजैक करता है जिसका बॉडी td_ucred = rcx+1 लिखता है। rcx = K1 = parent_pargs - 1 (एक qword जो एक चाइल्ड के pargs स्लैब में लगाया गया है) के साथ, कॉलिंग थ्रेड का क्रेडेंशियल पॉइंटर parent के pargs स्लैब के अंदर जाता है जहाँ हमने cr_uid=0 के साथ एक नकली struct ucred लगाया है। यह zfs.ko लोडेड (विशिष्ट सर्वर कॉन्फ़िगरेशन) किसी भी FreeBSD 14.4 GENERIC सिस्टम पर काम करता है और इसके लिए किसी कर्नेल जानकारी-लीक प्रिमिटिव की आवश्यकता नहीं है।
setcred/
+- setcred.txt प्राथमिक लिखित विवरण: भेद्यता, दोनों LPE
| तकनीकें, PoC पॉइंटर्स, FIX STATUS, टाइमलाइन।
| शुद्ध ASCII।
+- exploits/ क्यूरेटेड एक्सप्लॉइट ड्रॉप।
+- poc_dos.c न्यूनतम DoS PoC -- कोई भी उपयोगकर्ता
| कर्नेल को पैनिक करता है।
+- exp2_lpe_no_smap.c पूर्ण LPE no-SMAP/SMEP कर्नेल पर।
+- exp_setcred_smap_zfs.c SMAP/SMEP-सुरक्षित LPE zfs.ko
| ZSTD गैजेट के माध्यम से। कोई जानकारी-लीक नहीं।
+- wrapper.c छोटा setuid-root → /bin/sh
| लॉन्चर exp_setcred_smap_zfs द्वारा /tmp/rsh पर स्थापित।
+- Makefile.setcred_smap_zfs अतिथि-पक्ष निर्माण पाइपलाइन
| SMAP/SMEP पथ के लिए
| (all, install, clean)।
+- README_setcred_smap_zfs.md अंत-उपयोगकर्ता लिखित विवरण
SMAP/SMEP पथ के लिए।
DoS (कोई भी उपयोगकर्ता कर्नेल को पैनिक करता है) और SMAP/SMEP के बिना पूर्ण LPE exploits/ में संबंधित प्रोग्राम द्वारा पुनरुत्पादनीय हैं।
SMAP/SMEP सक्षम के साथ पूर्ण LPE zfs.ko लोडेड किसी भी FreeBSD 14.4 GENERIC सिस्टम पर exp_setcred_smap_zfs.c के माध्यम से पुनरुत्पादनीय है। तकनीक के लिए setcred.txt देखें।
14.4-RELEASE / stable/14 रिपोर्ट दिनांक के अनुसार संवेदनशील बने हुए हैं। फिक्स मुख्य में 2025-11-27 (कमिट 000d5b5) पर एक असंबंधित रीफैक्टरिंग के उप-प्रभाव के रूप में शामिल हुआ और वापस पोर्ट नहीं किया गया।