محافظت مخفی macOS 27 از پوشهٔ اپها، با یه لیست دستی
خلاصهٔ کاملتر
Wojciech Reguła تو بلاگش میگه مکینتاش ۲۷ بیسروصدا یه مکانیزم حریم خصوصی جدید آورده که جایی مستند نشده بود: محافظت com.apple.macl که همیشه پوشهٔ Data اپهای سندباکسی رو نگه میداشت، حالا به پوشهٔ ~/Library/Application Support یه دستچینِ اپهای غیرسندباکسی هم تعمیم پیدا کرده.
به گفتهٔ نویسنده تصادفی متوجهش شده: پوشهٔ پروفایل فایرفاکس یهدفعه از ترمینالِ بدون Full Disk Access قابلدسترس نبود، درحالیکه MacPass — یه پسوردمنیجر که دقیقاً بغلش نشسته — کامل باز بود. هیچکدوم سندباکسی نیستن؛ تفاوت تو وجود همون xattr روی پوشهٔ محافظتشدهست، یعنی همون مکانیزمی که macOS برای گرهزدن یه Container به هویت کدِ اپ استفاده میکرد.
$ ls ~/Library/Application\ Support/Firefox
ls: .../Firefox: Operation not permitted
$ ls ~/Library/Application\ Support/MacPass
$ <list of files>ریشهٔ تصمیم تو /usr/libexec/sandboxd نشسته: یه پالیسی XML جاسازیشده که bundle id و Team ID هر اپ رو به مسیرهایی که باید محافظت شن نگاشت میکنه.
و لیست، دستیه. تو این موج اول فقط دیسکورد، مرورگرهای اصلی (کروم، بریو، اج، فایرفاکس) و چند کیفپول کریپتو مثل Ledger Live، Exodus و Wasabi محافظت میشن؛ بقیه — از جمله پسوردمنیجرها — کلاً تو لیست نیستن. مسیرهای NativeMessagingHosts هم عمداً از محافظت مستثنی شدن تا native messaging افزونههای مرورگر کار کنه، و همونطور که نویسنده نشون میده، لیستکردن این زیرپوشه هنوز جواب میده حتی وقتی پوشهٔ والدش قابلدسترس نیست.
یه جزئیات جالب: نویسنده روی VM تستش Wasabi رو نصب هم نکرده بود، ولی نوشتن تو مسیر مربوط به اون با «operation not permitted» رد شد و کرنل جلوی نوشتن رو گرفت. یعنی مجوز جدید kTCCServiceSystemPolicyAppDataDetailed حتی فایلها و پوشههایی که هنوز ساخته نشدن رو هم محافظت میکنه.
مهمترین بخش ماجرا یه مسیر hardcodeشده تو باینریه که به AppProtectionRules.plist داخل XProtect.bundle اشاره میکنه: لیست داخل sandboxd فقط fallbackه و نسخهٔ زندهٔ قواعد قراره از طریق XProtect بیاد. یعنی اپل میتونه بدون آپدیت سیستمعامل اپهای جدید رو به این محافظت اضافه کنه.
حاشیهٔ مرتبط: جابهجا شدن دیتابیس TCC کاربر به یه مسیر ProtectedSystem هم از تغییرات همین نسخهست، و به نظر نویسنده حرکت خوبیه چون حالا مهاجمی که Full Disk Access گرفته هم نمیتونه تنظیمات حریم خصوصی رو دست بزنه. آپدیت بعدی بتای مکینتاش ۲۷ هم بالاخره تو ریلیزنوتها به این تغییر اشاره کرده. جابهجا شدن دیتابیس TCC کاربر به یه مسیر ProtectedSystem هم از تغییرات همین نسخهست، که به نظر نویسنده حرکت خوبیه چون حالا مهاجمِ دارای Full Disk Access هم نمیتونه تنظیمات حریم خصوصی رو دست بزنه.
نکات کلیدی:
- محافظت com.apple.macl به Application Support بعضی اپهای غیرسندباکسی تعمیم پیدا کرده
- قواعد از یه پالیسی XML داخل sandboxd میان و bundle id + Team ID رو به مسیر نگاشت میکنن
- موج اول: دیسکورد، مرورگرهای اصلی و چند کیفپول کریپتو؛ پسوردمنیجرها جا نیستن
- مسیرهای NativeMessagingHosts عمداً مستثنی شدن تا افزونههای مرورگر نشکنن
- لیست زنده قراره از XProtect بیاد، پس اپل بدون آپدیت سیستمعامل میتونه اپ اضافه کنه




