macOS में पासवर्ड लीक और अन्य समस्याएँ
(wts.dev)macOS में पासवर्ड लीक (और भी बहुत कुछ!)
परिचय
यह लेख Apple के security update में शामिल vulnerability CVE-2024-54471 के बारे में बताता है। यह vulnerability macOS Sequoia 15.1, macOS Sonoma 14.7.1, macOS Ventura 13.7.1 में patch की गई थी। यदि आप macOS डिवाइस इस्तेमाल करते हैं, तो latest version में update करने की सिफारिश की जाती है.
कर्नेल क्या है?
ऑपरेटिंग सिस्टम में हार्डवेयर से communicate करने और applications को multitasking model देने वाले code को kernel कहा जाता है। macOS का kernel XNU है, जो BSD kernel और Mach kernel के variants को शामिल करने वाला एक hybrid kernel है.
Mach का इतिहास
Mach kernel 1980 और 90 के दशक के Unix wars से गहराई से जुड़ा हुआ है। Mach की शुरुआत Carnegie Mellon University में operating system research project के रूप में हुई थी, और इसका उपयोग NeXTSTEP operating system में किया गया था, जो आगे चलकर macOS की नींव बना.
Mach क्यों?
Mach को Unix system design और उपयोग की जटिलता कम करने के लिए विकसित किया गया था। Mach चार बुनियादी abstractions से बना है, और ये आज के modern macOS में भी अब तक उपयोग हो रहे हैं.
Mach की architecture
चार abstractions
- Task: वह environment जिसमें thread चल सकता है, और resource allocation की मूल इकाई है.
- Thread: CPU उपयोग की मूल इकाई, जो task के भीतर independent program counter के साथ काम करता है.
- Port: messages के लिए communication channel, जिसे kernel सुरक्षित रखता है.
- Message: threads के बीच communication के लिए उपयोग किए जाने वाले data objects का समूह.
Task, Port, और Port rights
Port केवल kernel space में मौजूद होते हैं, और user space में port rights के रूप में exposed होते हैं। कई tasks किसी port पर send right रख सकते हैं, लेकिन receive right केवल एक task के पास हो सकता है.
Message की संरचना
हर Mach message में एक header, optional descriptors, arbitrary payload, और kernel द्वारा जोड़ा गया trailer होता है.
Send right प्राप्त करने का तरीका
macOS में एक bootstrap server होता है, जिसके पास उन ports के receive rights होते हैं जिन पर सभी tasks के पास send rights होते हैं। Client bootstrap server से किसी विशेष नाम वाली Mach service के लिए send right मांग सकता है.
Mach Interface Generator (MIG)
परिचय
MIG एक ऐसा tool है जो Mach messages भेजने और प्राप्त करने के लिए functional interface generate करता है। यह message-based RPC-style interface देता है, जिससे memory safety बेहतर होती है.
तकनीकी विवरण
MIG, Mach messages के ऊपर एक wrapper है। हर function को routine कहा जाता है, और routines के समूह को subsystem कहा जाता है। Subsystem को message ID field में index किया जाता है.
MIG server की vulnerability
MIG server की security
यदि MIG server message sender को verify नहीं करता, तो send right रखने वाला कोई भी task server की routines को call कर सकता है.
MIG server ढूँढना
ipsw CLI tool का उपयोग करके उन binaries को खोजा जा सकता है जो NDR_record symbol का उपयोग करती हैं। यह MIG servers और clients ढूँढने में उपयोगी है.
NetAuthAgent की vulnerability
NetAuthAgent परिचय
NetAuthAgent macOS में file server credentials को handle करने वाला daemon है। इस vulnerability के patch होने से पहले, server credentials मांगे जाने पर यह उन्हें दे देता था.
NetAuthAgent कैसे काम करता है
NetAuthAgent credentials को store करने के लिए macOS Keychain का उपयोग करता है। Keychain एक centralized secret manager है, और हर item की अपनी access control list होती है.
NetAuthAgent का MIG server
NetAuthAgent com.apple.netauth.user.gui नाम से bootstrap server में register किया गया एक MIG server expose करता है। यह server credentials को पढ़ने, बनाने और overwrite करने वाली routines प्रदान करता है.
vulnerability का प्रभाव
iCloud API token का खुलासा
यह vulnerability iCloud API token को expose कर सकती है, जिससे attacker user information लीक कर सकता है या दूसरे डिवाइस की location track कर सकता है.
Apple को क्या करना चाहिए था
इस लेख में इस बात पर चर्चा शामिल है कि इस vulnerability को ठीक करने के लिए Apple को कौन-कौन से कदम उठाने चाहिए थे.
1 टिप्पणियां
Hacker News टिप्पणियाँ
यह अच्छी तरह लिखा गया लेख है। इससे Apple द्वारा कुछ हद तक छिपाने की कोशिश की गई zero-day घटना याद आती है। वही घटना जिसमें "खाली password को दो बार आज़माने" पर root login bypass किया जा सकता था। यह घटना 2017 या 2018 के आसपास की थी
"ACLs don’t": <a href="https://waterken.sourceforge.net/aclsdont/current.pdf" rel="nofollow">https://waterken.sourceforge.net/aclsdont/current.pdf</a>
अगर कोई mechanism processes को दूसरी processes की ओर से keychain query proxy करने की सुविधा देता है, तो यह पूरे system की security को कमजोर कर सकता है
लेख में एक छोटा-सा correction किया गया था
8 घंटे लगे, लेकिन यह पोस्ट अब पहले पेज के top 5 में नहीं है (अभी #27 है, अब भी पहले पेज पर है लेकिन नीचे की ओर)। सभी टिप्पणियों के लिए धन्यवाद
सोच रहा हूँ कि क्या लेखक असली PoC code देता है। मैं mitigations को test करना चाहता हूँ। example code देखा, लेकिन वह अधूरा लगता है
बहुत दिलचस्प लेख है। मुझे नहीं पता था कि Mach और Darwin kernel के निर्माण के पीछे इतनी कहानी है
इस समय Mach, macOS में bugs का एक भरोसेमंद source जैसा लगता है। पता है कि Apple इसे पूरी तरह lock down करने के लिए काफी मेहनत कर रहा है, लेकिन सोचता हूँ कि क्या Mach से पूरी तरह बाहर निकलने का कोई रास्ता है
[dead]