پچ اضطراری: Project Zero چطور باگهای فوری رو سریع میبندن
خلاصهٔ کاملتر
تیم Project Zero گوگل که باگهای امنیتی رو پیدا و به سازندهها گزارش میکنه، تو این پست روشهایی رو جمع کرده که شرکتهای بزرگ برای بستن خیلی سریع چندتا آسیبپذیری فوری استفاده میکنن. هدفشون اینه که سازندهها قبل از اینکه یه باگ اضطراری بهشون برسه، فکر کنن چطور قراره درستش کنن.
به گفته پست، یه پچ معمولاً از مرحلههای triage، نوشتن پچ، تست، بررسی شرکا، تحویل و فعالسازی (مثلاً ریاستارت) رد میشه. تو شرایط اضطراری triage و نوشتن پچ معمولاً سریع پیش میره، ولی گلوگاه اصلی تست و تحویل هست. یه آپدیت بدون تست کافی ممکنه دستگاه رو brick کنه، یعنی کلاً از کار بندازه، یا داده کاربر رو خراب کنه. سیستمهایی که هر چند وقت یه بار دنبال آپدیت میگردن یا کاربر رو مجبور به ریاستارت میکنن هم سرعت پخش پچ رو پایین میارن.
اولین روش feature flag هست، یعنی شرطهایی تو کد که مقدارشون از سرور میاد. اپل سال ۲۰۱۹ با همین روش Group FaceTime رو موقتاً خاموش کرد. مزیتش اینه که هر حالت flag از قبل تست شده و آپدیتش خیلی کمحجمه. متا هم یه کتابخونه dual stack ساخته که دو نسخه WebRTC رو تو یه باینری داره و با یه flag بینشون جابهجا میشه. یعنی اگه نسخه جدید مشکل داشت، کاربر سریع به نسخه قبلی برمیگرده.
روش دوم فیلتر کردن ورودیهای نامطمئن با قوانینی هست که از راه دور آپدیت میشن، مثل Intent Firewall اندروید که با یه فایل XML جلوی بعضی intentها (یعنی پیامهای IPC بین اپها) رو میگیره. Microsoft Defender و Google Play Protect هم میتونن سریع قانون جدید بگیرن. فیلتر از feature flag انعطاف بیشتری داره، ولی ممکنه کارایی رو پایین بیاره و قانون جدیدش حتماً باید یه مقدار تست بشه.
روش سوم کانالهای جدا برای آپدیتهای کوچیکه، مثل APEX اندروید که اجزای حساس سیستم رو جدا از آپدیت کامل بهروز میکنه. بعضی اپها هم کتابخونه رو از شبکه میگیرن و با dlopen لود میکنن. Project Zero هشدار میده اگه کلاینت مطمئن نشه کتابخونه واقعاً از سازنده اومده، خود این مکانیزم یه آسیبپذیری جدی میشه.
روش چهارم hotpatching هست، یعنی جایگزین کردن تابعها مستقیم تو حافظه بدون ریاستارت، مثل Livepatch لینوکس و hotpatch ویندوز. خیلی سریع و بیدردسره، ولی بعضی تغییرها مثل عوض کردن ساختار مشترک بین تابعها رو پشتیبانی نمیکنه و چون باید صفحههای حافظه رو موقتاً write-execute کنه، ممکنه راهی برای دور زدن exploit mitigationها باز کنه. نویسندهها میگن با کمک LLMها پیدا کردن و سوءاستفاده از باگ سریعتر شده، پس وقتشه شرکتها همین الان برنامه پچ اضطراریشون رو آماده کنن.
نکات کلیدی:
- گلوگاه اصلی پچ اضطراری مرحلههای تست و تحویله، نه نوشتن خود پچ.
- اپل سال ۲۰۱۹ باگ Group FaceTime رو با یه feature flag موقتاً بست.
- متا دو نسخه WebRTC رو تو یه باینری گذاشته تا با یه flag بینشون سوییچ کنه.
- Intent Firewall اندروید با یه فایل XML قابلآپدیت جلوی intentهای خطرناک رو میگیره.
- لود کردن کتابخونه از شبکه با dlopen بدون بررسی امضا خودش یه ریسک امنیتی جدیه.
- hotpatch به نوشتن موقت روی صفحههای write-execute نیاز داره و تغییر ساختارهای مشترک رو همیشه پشتیبانی نمیکنه.




