
macOS automountd ट्रस्ट-बाउंड्री उल्लंघन के लिए रिवर्स इंजीनियरिंग नोट्स और कार्यशील PoC, CVE-2026-84568, जो localhost या पीड़ित के स्वयं के hostname से माउंट की अनुमति देता है।
macOS autofs पैच की CVE-2026-84568 के लिए स्वतंत्र रिवर्स इंजीनियरिंग, साथ ही ट्रस्ट-बाउंड्री उल्लंघन के लिए एक कार्यशील PoC।
Apple ने एडवाइज़री प्रकाशित की। Mr.Gedik (@h4ck2s3c) ने बग की रिपोर्ट की। यह रिपॉज़िटरी तकनीकी तंत्र का दस्तावेज़ीकरण करती है — पैच किया गया फ़ंक्शन, चेक क्या करता है, और पैच किन माउंट पाथ को ब्लॉक करता है — और इसमें एक कार्यशील PoC शामिल है जो कमज़ोर सिस्टम पर ट्रस्ट उल्लंघन को पुनरुत्पादित करता है।
| फ़ील्ड | मान |
|---|
| CVE | CVE-2026-84568 |
| घटक | autofs / automountd |
| प्रभावित | macOS Tahoe 26.6 और पहले |
| पैच किया गया | macOS Tahoe 26.7, macOS Golden Gate 27, macOS Sequoia 15.8 |
| एडवाइज़री प्रभाव | "नेटवर्क डायरेक्टरी सर्वर के नियंत्रण वाला हमलावर root विशेषाधिकारों के साथ मनमाना कोड निष्पादित कर सकता है।" |
| रिपोर्ट करने वाला | Turkish Technology के Mr.Gedik (@h4ck2s3c) |
CVE-2026-84568 के लिए Apple की एडवाइज़री प्रभाव और पैच संस्करण का दस्तावेज़ीकरण करती है। यह तकनीकी तंत्र का दस्तावेज़ीकरण नहीं करती:
लेखन के समय कोई सार्वजनिक तकनीकी राइटअप नहीं मिला। यह रिपॉज़िटरी
automountd_26.6 और automountd_27 के स्वतंत्र रिवर्स इंजीनियरिंग विश्लेषण
और अंतर्निहित ट्रस्ट-बाउंड्री उल्लंघन के लिए एक कार्यशील PoC के साथ उस अंतराल
को भरती है।
यह खोज का दावा नहीं है। CVE की रिपोर्ट Mr.Gedik ने की और Apple ने इसे पैच किया। यहाँ योगदान तकनीकी विश्लेषण और पुनरुत्पादन है।
automountd कॉन्फ़िगर किए गए डायरेक्टरी सेवा (LDAP, NIS, OpenDirectory) से
automount मैप प्राप्त करता है। कमज़ोर संस्करण (26.6 और पहले) में, automountd
यह सत्यापित नहीं करता था कि मैप प्रविष्टि का होस्ट घटक स्थानीय मशीन पर
रिज़ॉल्व होता है या नहीं।
इसलिए एक दुर्भावनापूर्ण डायरेक्टरी सर्वर ऐसी मैप प्रविष्टि परोस सकता था जिसका माउंट स्रोत था:
localhost<hostname>.local)127.0.0.1 भी शामिल हैइसके बाद पीड़ित स्वयं से हमलावर-नियंत्रित माउंट पॉइंट पर माउंट कर देता।
पैच किया गया संस्करण (26.7 / 27) sym.func.100005bd8 में एक होस्टनाम चेक
जोड़ता है जो उपरोक्त में से किसी से भी मेल खाने वाली प्रविष्टियों को अस्वीकार
करता है।
automountd_26.6 और automountd_27 के बीच sym.func.100005bd8 का
डिसअसेम्बली डिफ — देखें docs/PATCH_DIFF.md"localhost", gethostname(),
SCDynamicStoreCopyLocalHostName + ".local", और सभी स्थानीय IP को
प्रगणित करने वाले getifaddrs / getipnodebyaddr लूप के विरुद्ध
strncasecmpparse_nfs → mapline_to_mapent → asprintf("%s/mount_%s", "/sbin", fstype)
के माध्यम से fstype फ़ील्ड का ट्रेस — प्रोग्राम पाथ बनाने से पहले
फ़ील्ड को सत्यापित नहीं किया जाताwebdavfs_agent के XML पार्सर का SAX कॉलबैक विश्लेषण — characters
कॉलबैक स्पष्ट लंबाई जाँच के साथ __memcpy_chk का उपयोग करता है; कोई
ओवरफ़्लो नहींod_process_record_attributes का विश्लेषण — OpenDirectory रिकॉर्ड
पार्सर पूरे समय CoreFoundation API का उपयोग करता है; कोई निश्चित-आकार
बफ़र नहींmount_nfs, mount_smbfs, mount_url, और
सभी NetFSPlugins/* बंडलों की शेल निष्पादन के लिए जाँच की गई; कोई नहीं
मिलापूरा राइटअप देखें docs/ANALYSIS.md में और पते तथा लॉग
नमूने देखें docs/ARTIFACTS.md में।
poc.sh — एकल-फ़ाइल हमलावर-पक्ष सेटअप। एक दुर्भावनापूर्ण
auto_master / auto_evil मैप के साथ LDAP सर्वर और एक प्रूफ़-ऑफ़-एक्सेस
मार्कर के साथ NFS एक्सपोर्ट शुरू करता है। जब पीड़ित का automountd मैप
प्राप्त करता है, तो यह हमलावर-नियंत्रित पाथ पर अपना ही NFS एक्सपोर्ट माउंट
कर देता है।auto_master / auto_evil
मैप परोसता हैautomountd नेटवर्क पर मैप प्राप्त करता है127.0.0.1 हैApple की एडवाइज़री में "root विशेषाधिकारों के साथ मनमाना कोड निष्पादन"
प्रभाव इस विश्लेषण में परीक्षण किए गए पाथ के माध्यम से पहुँच योग्य नहीं
है। पूरी सूची के लिए docs/ANALYSIS.md में "Paths
tested and ruled out" अनुभाग देखें।
प्रदर्शित प्रभाव ट्रस्ट-बाउंड्री उल्लंघन ही है: पीड़ित ऐसे स्रोत से माउंट करता है जिसे उसे अस्वीकार करना चाहिए था।
poc.sh हमलावर-पक्ष सेटअप (एकल फ़ाइल)
docs/
ANALYSIS.md पूरा रिवर्स-इंजीनियरिंग राइटअप
PATCH_DIFF.md 26.6 और 27 के बीच sym.func.100005bd8 डिफ
ARTIFACTS.md पते और लॉग नमूने
README.md यह फ़ाइल
LICENSE
चार फ़ाइलें, दो डायरेक्टरी। और कुछ नहीं।
brew install openldap)slapd.conf जो परिभाषित करता है: database mdb के साथ
suffix "dc=evil,dc=local"nfsd) — macOS के साथ आता हैslapd, nfsd, /etc/exports के लिए)automountd)/etc/auto_master में +auto_master मौजूदnfsd चल रहा हो, एक डायरेक्टरी एक्सपोर्ट करते हुएमाउंट सफल होने के लिए पीड़ित को एक चलता हुआ NFS सर्वर चाहिए। CVE
स्थानीय-होस्ट प्रविष्टि की स्वीकृति के बारे में है, एक्सपोर्ट देने के बारे
में नहीं। यदि पीड़ित nfsd नहीं चलाता, तो माउंट
NFS server 127.0.0.1 not responding के साथ विफल होता है — जो फिर भी
प्रदर्शित करता है कि automountd ने प्रविष्टि स्वीकार कर ली।
./poc.sh <ATTACKER_IP>
<ATTACKER_IP> को पीड़ित से दिखने वाले हमलावर के IP से बदलें।
sudo automount -vc
ls /System/Volumes/Data/mnt/evil/evil/
cat /System/Volumes/Data/mnt/evil/evil/proof.txt
फ़ाइल proof.txt माउंट के माध्यम से पठनीय है। mount आउटपुट में माउंट स्रोत
127.0.0.1:<export_dir> है:
127.0.0.1:/tmp/nfsroot on /System/Volumes/Data/mnt/evil/evil (nfs, nodev, nosuid, automounted, nobrowse)
nodev और nosuid की उपस्थिति कर्नेल के NFS माउंट डिफ़ॉल्ट और mount_nfs
के स्वयं के विकल्प प्रबंधन को दर्शाती है — ये automountd से नहीं हैं। पूरा
विवरण देखें docs/ANALYSIS.md में।
पैच किए गए सिस्टम (26.7 / 27) पर, वही मैप प्रविष्टि किसी भी माउंट प्रयास से
पहले अस्वीकार कर दी जाती है। sym.func.100005bd8 की डिसअसेम्बली तुलना के लिए
docs/PATCH_DIFF.md देखें।
पैच किए गए होस्ट पर पुष्टि करने के लिए:
# Serve the same map entry, then on the patched victim:
sudo automount -vc
ls /System/Volumes/Data/mnt/evil/evil/
अपेक्षित: माउंट पॉइंट नहीं बनाया जाता, और mount आउटपुट में कोई प्रविष्टि
नहीं दिखती। sym.func.100005bd8 चेक प्रविष्टि को अस्वीकार करता है जब होस्ट
127.0.0.1, localhost, या स्थानीय होस्टनाम हो।
fstype इंजेक्शन (अलग निष्कर्ष)विश्लेषण के दौरान, एक अलग डिफ़ेंस-इन-डेप्थ कमज़ोरी मिली:
sym.func.1000086f4 (run_mount_cmd) मैप प्रविष्टि से fstype फ़ील्ड को
सत्यापित किए बिना asprintf("%s/mount_%s", "/sbin", fstype) के माध्यम से
एक प्रोग्राम पाथ बनाता है।
fstype में पाथ ट्रैवर्सल अनुक्रम asprintf कॉल तक पहुँचते हैं:
automountd: Can't stat mount program /sbin/mount_../../../../../../tmp/evil_prog: No such file or directory
स्टॉक macOS इंस्टॉलेशन पर, परिणामी पाथ किसी निष्पादन योग्य फ़ाइल पर रिज़ॉल्व
नहीं होता क्योंकि /sbin/mount_.. मौजूद नहीं है। इंजेक्शन वास्तविक है लेकिन
पाथ रिज़ॉल्यूशन द्वारा अवरुद्ध है। यह केवल तब शोषणीय होगा जब /sbin के
अंतर्गत कोई लिखने योग्य पाथ मौजूद हो, या कोई डायरेक्टरी-सिमलिंक mount_<X>
बनाया जाए — जिनमें से कोई भी स्टॉक macOS पर लागू नहीं होता।
यह एक अलग अवलोकन के रूप में प्रलेखित है, CVE-2026-84568 के भाग के रूप में नहीं।
विवरण के लिए देखें docs/ANALYSIS.md।
यह रिपॉज़िटरी केवल रक्षात्मक सुरक्षा अनुसंधान और शिक्षा के लिए प्रदान की गई है।
MIT। देखें LICENSE।