
نماذج إثبات مفهوم مخبرية قابلة لإعادة الإنتاج لـ automountd على macOS وتحليل موجّه بالمصدر لـ CVE-2026-84568 (اجتياز مسار fstype إلى تنفيذ تعليمات برمجية بصلاحيات الجذر) وCVE-2026-84570 (تجاوز Gatekeeper).
تحليل عام موجّه بالمصدر لـ CVE-2026-84568 وCVE-2026-84570، مع أدلة قابلة للعكس لإدخال LDAP/OD، وتسليم NFS، وإرسال المساعد (helper dispatch)، وسلوك Gatekeeper، وحدود عقدة الجهاز.
حالة النشر — أكتوبر 2026. أصلحت Apple كلا الثغرتين في 14 سبتمبر 2026 في macOS Sequoia 15.8، وmacOS Tahoe 26.7، وmacOS Golden Gate 27. أداة إعادة الإنتاج في هذا المستودع مخصصة فقط لمختبر معزول ومصرّح به يحتوي على جهاز Mac غير مُرقّع عمدًا.
حالة التحقق. تم تشغيل أدوات التحقق المضمّنة على المضيف بنجاح على مضيف مختبر macOS 26.4 (إصدار 25E246، arm64) متأثر. أعاد اختبار إرسال المساعد، وسلسلة تسليم NFS الكاملة عبر loopback، وفحص اسم المسار/بيانات الاعتماد، والتفاضل في Gatekeeper، واختبار حدود nodev/الجهاز، جميعها نتيجة PASS. في اختبار Gatekeeper، كانت التقييمات مُفعّلة؛ وكان التطبيق صالحًا بنيويًا لكنه موقّع بشكل مخصص (ad-hoc) دون Team ID؛ ورفضه تقييم spctl الصريح؛ وكان تركيب NFS يفتقر إلى كلٍّ من noexec والحجر الصحي (quarantine)؛ وشغّله LaunchServices دون خطوة موافقة. كما أعادت كل أداة تحقق نتيجة cleanup_result=PASS، وأكد فحص مستقل بعد التشغيل أن سجلات الدليل المؤقت وعمليات التركيب والملفات وتغييرات /etc/exports قد أُزيلت أو استُعيدت. كما تم اختبار أداة Python بشكل منفصل مقابل خادم OpenLDAP مؤقت مع مخطط سمات automount/Apple الحقيقي: نجح كلا المسارين automountKey وapple-user-homeurl في فحوصات الإنشاء/القراءة العكسية/المهلة/الاستعادة. تصف هذه الملاحظات ذلك الإصدار المتأثر وأداة الاختبار المضمّنة؛ وهي ليست ادعاءات حول الإصدارات المُرقّعة.
فضل البحث: Mr.Gedik (@h4ck2s3c)؛ يُنسب CVE-2026-84568 علنًا إلى Mr.Gedik، ويُنسب CVE-2026-84570 إلى Mr.Gedik، في نشرات Apple الأمنية.
هذه هي النسخة العامة من البحث. وهي تحتوي فقط على المعلومات المدعومة بنشرات Apple المنشورة، وكود Apple مفتوح المصدر، ومواد المختبر القابلة لإعادة الإنتاج المضمّنة. تُستبعد عمدًا معرّفات الحالات الخاصة، والمراسلات الخاصة، والمنتجات غير العامة، والبحوث غير ذات الصلة.
تشترك الثغرتان (CVE) في سطح هجوم واحد لكنهما تمثلان أسبابًا جذرية مستقلة:
| CVE | التأثير المنشور من Apple | الحد من جهة العميل |
|---|---|---|
| CVE-2026-84568 | قد ينفّذ مهاجم دليل شبكة كودًا عشوائيًا بامتيازات الجذر | أثّر fstype الذي يتحكم به الدليل على مسار الملف التنفيذي الذي اختاره automountd |
| CVE-2026-84570 | قد يتجاوز تطبيق ما فحوصات Gatekeeper | تجاوز automount NFS الذي يتحكم به الدليل كلاً من سياسة مصدر التطبيق وسياسة عقدة الجهاز |
تدرج Apple كلتا المشكلتين تحت autofs في محتوى الأمان الخاص بـ macOS Golden Gate 27، وmacOS Tahoe 26.7، وmacOS Sequoia 15.8.
خرائط automount في macOS هي بيانات تحكم قابلة للتنفيذ. يختار سطر الخريطة نوع نظام الملفات، ويوفّر خيارات التركيب، ويحدد موردًا، ويؤثر في النهاية على إرسال التركيب ذي الامتيازات. قبل تحديثات سبتمبر 2026، سمح فشلان في التحقق لبيانات يوفّرها الدليل بعبور حدود الأمان على العميل:
fstype مصمم بشكل خبيث أن يفلت من نطاق المساعد المقصود /sbin/mount_<type> ويُحلّ إلى ملف تنفيذي يُسلَّم عبر NFS.nodev المتوقعة. كما كان تركيب الشبكة الناتج يفتقر إلى سياسة noexec أو الحجر الصحي، لذا كان يمكن تشغيل تطبيق فشل في تقييم Gatekeeper الصريح منه رغم ذلك.هذه ملاحظات مترابطة، وليست آليات قابلة للتبادل. يتحكم nodev في ما إذا كانت vnodes الخاصة بالأجهزة الخاصة تُفسَّر؛ وهو لا ينفّذ Gatekeeper. يتحكم noexec في التنفيذ عند حدود VFS. ويقيّم Gatekeeper بشكل منفصل ثقة التطبيق ومصدره. تُبلّغ أداة تحقق CVE-2026-84570 عن كل حد على حدة بحيث لا تُقدَّم علامة nodev المفقودة أبدًا كدليل على تجاوز Gatekeeper بحد ذاتها.
الوصول للكتابة إلى الدليل هو شرط مسبق للدخول، وليس السلطة الناتجة. تغيير سمة automount أو سمة الدليل الرئيسي للمستخدم لا يعادل اختيار مسار ملف تنفيذي على كل جهاز Mac مستهلك أو إضعاف سياسة النواة لتركيب NFS. تحدث تلك التحولات على العميل.
stat() المباشر من حساب غير مميز ENOTDIR؛ لذا فإن نتيجة realpath() أو stat() غير المميزة ليست بديلًا صالحًا لـ automountd هنا.nodev المُثبَت لـ CVE-2026-84570. نجحت سلسلة 84568 الكاملة بينما احتفظ تركيب التسليم بـ nodev وnosuid.يكشف إعداد automount الافتراضي عن مدخلات مدعومة بالدليل أسفل /home:
/etc/auto_master: /home auto_home -nobrowse,hidefromfinder
/etc/auto_home: +auto_home
/etc/auto_home: +/usr/libexec/od_user_homes
تُحلّ سجلات automount عبر التضمين الأول. ويستدعي تضمين خريطة الملفات التنفيذية od_user_homes، الذي يحلّ معلومات مجلد المستخدم ويُصدر سطر خريطة. ويتقارب المساران عند محلّل automount.
يحافظ الاختبار العام على كلا شكلي الدليل صريحين:
| المسار | مدخل الدليل | مفتاح/قيمة autofs الناتج |
|---|---|---|
automount | مدخل RFC 2307 الذي يكون RDN الخاص به automountKey=<key> تحت خريطة automountMapName=auto_home؛ القيمة في automountInformation | <key> ← سطر خريطة خام |
userhome | مدخل مستخدم موجود؛ القيمة في apple-user-homeurl | مفتاح اسم سجل المستخدم ← سطر خريطة مُغلّف بـ <home_dir><url>…</url></home_dir> |
يُهمّ هذا التمييز تشغيليًا لكن ليس عند نقطة التأثر: تؤثر كلتا القيمتين في النهاية على نوع نظام الملفات المُحلَّل ووسائط التركيب على جهاز Mac.
flowchart LR
DS["LDAP / Open Directory"]
AM["AutomountInformation"]
UH["User home attribute"]
GM["getmapent_od()"]
OUH["od_user_homes"]
MAP["Automount map line"]
PARSE["parse_entry() / set_mapent_opts()"]
TYPE{"fstype"}
NFS["Dedicated NFS path"]
GENERIC["Generic helper path"]
EXEC["run_mount_cmd()"]
DS --> AM --> GM --> MAP
DS --> UH --> OUH --> MAP
MAP --> PARSE --> TYPE
TYPE -->|exactly nfs| NFS
TYPE -->|another value| GENERIC --> EXEC
تتضمن مسارات المصدر العامة ذات الصلة ما يلي:
od_user_homes.c، الذي يحل سجلات مستخدمي الدليل ويصدر عنوان URL للمنزل؛ns_od.c، الذي يحصل على بيانات التركيب التلقائي للدليل؛autod_parse.c، الذي يحلل fstype وخيارات التركيب؛ وautod_mount.c، الذي يختار مساعدي التركيب ويشغلهم.تُعد شجرة autofs-322 المنشورة من Apple سياقًا مفيدًا قبل الإصلاح. يظل السلوك وقت التشغيل على إصدار متأثر هو الدليل الحاسم؛ ولا تدّعي هذه المقالة أن المستودع العام يحتوي على فرق التصحيح النهائي لشهر سبتمبر 2026.