نرمافزارهای ضدتقلب در سطح کرنل، بیسروصدا به یکی از بزرگترین سطوح حمله در بازیهای کامپیوتری تبدیل شدهاند

نرمافزارهای ضدتقلب در سطح کرنل امروز روی دهها میلیون کامپیوتر با همان سطح دسترسی موتور آنتیویروس شما اجرا میشوند و این دسترسی به یکی از آسیبپذیرترین سطوح حمله در کامپیوترهای خانگی تبدیل شده است. Vanguard از Riot Games، Easy Anti-Cheat (EAC)، BattlEye و Denuvo Anti-Cheat همگی یک درایور امضاشده را در Ring ۰ کرنل ویندوز بار میکنند؛ یعنی همان سطح دسترسی که خود سیستمعامل دارد، تا تقلبهای مبتنی بر دستکاری حافظه را که ابزارهای حالت کاربر نمیتوانند ببینند، شناسایی کنند. مشکل اینجاست که درایوری که آنقدر مورد اعتماد است که بتواند هر پردازش را در حافظه بررسی کند، به همان اندازه هم میتواند ابزارهای امنیتی را غیرفعال کند، و مهاجمان حداقل از سال ۲۰۲۲ بهآرامی از این اعتماد سوءاستفاده کردهاند.
این یک فرضیه نیست. محققان امنیتی و فهرست درایورهای آسیبپذیر خود مایکروسافت (Vulnerable Driver Blocklist یا VBL) بارها درایورهای ضدتقلب و بازی امضاشده را بهعنوان یک مسیر حمله از نوع «استفاده از درایور آسیبپذیر خودتان» (BYOVD) معرفی کردهاند؛ در این روش، مهاجمان یک درایور قانونی اما دارای نقص امضاشده را بار میکنند و سپس از دسترسی کرنلی که این درایور در اختیارشان میگذارد برای متوقفکردن فرایندهای EDR پیش از اجرای باجافزار استفاده میکنند. این الگو در حوادثی مرتبط با گروه باجافزاری BlackByte و چند گروه دیگر دیده شده است؛ گروههایی که دقیقاً به همین دلیل درایورهای آسیبپذیر را ترجیح میدهند که این درایورها امضای معتبر مایکروسافت را دارند و از بررسیهای امضای کد که یک ماژول کرنلی بدون امضا را فوراً مسدود میکند، عبور میکنند.
چگونه یک درایور مورد اعتماد به سلاح تبدیل میشود
مکانیزم پایهای این موضوع ساده است. ویندوز الزام میکند که درایورهای حالت کرنل، یا مستقیماً توسط مایکروسافت یا از طریق برنامه WHQL (آزمایشگاههای کیفیت سختافزار ویندوز) امضا شوند تا اجرای کد دلخواه در بالاترین سطح دسترسی ممکن نشود. شرکتهای ضدتقلب به همین سطح دسترسی نیاز دارند تا حافظه فرایندهای حریف را بخوانند، فراخوانیهای سیستمی را رهگیری کنند و دیباگرها را شناسایی کنند؛ کارهایی که یک فرایند تقلب در حالت کاربر در غیر این صورت میتوانست پنهان نگه دارد. در نتیجه، شرکت موفق میشود یک درایور قانونی امضاشده را روی هر دستگاهی که بازی را اجرا میکند، نصب کند.
اگر این درایور یک باگ داشته باشد؛ برای مثال یک هندلر IOCTL آشکار که اجازه میدهد هر فرایندی روی همان دستگاه دستوراتی به آن ارسال کند، مهاجم حتی به درایور مخرب خودش نیاز نخواهد داشت. او همان درایور ضدتقلب از پیش امضاشده و مورد اعتماد را بار میکند، با رابط آشکار آن ارتباط برقرار میکند و از دسترسیهای کرنلی آن برای متوقفکردن فرایندهای محافظتشده، از جمله عاملهای EDR شرکتهای CrowdStrike، SentinelOne یا Microsoft Defender for Endpoint استفاده میکند. دقیقاً همین اتفاق با درایور mhyprot2.sys متعلق به miHoYo رخ داد که در ابتدا همراه با سیستم ضدتقلب بازی Genshin Impact ارائه میشد: این درایور توابعی را در معرض دید قرار میداد که به هر فرایند محلی اجازه میداد فرایندهای دیگر را بهصورت دلخواه متوقف کند، و عوامل باجافزار دقیقاً به همین دلیل آن را به کار گرفتند که یک فایل باینری امضاشده و تمیز بود، بدون هیچ امضای بدافزاری مشخصی.
مشکل مقیاس
درایور ضدتقلب شرکت Capcom نیز در سال ۲۰۲۰ نقص مشابهی در متوقفکردن دلخواه فرایندها داشت که فاش شد. درایور Genshin Impact حتی پس از حذف خود بازی هم روی برخی سیستمها نصب و فعال باقی میماند، چون روتین نصب هرگز یک برنامه حذف برای بخش کرنلی ارائه نمیداد؛ جزئیاتی که تنها پس از آن توجه بیشتری جذب کرد که محققان امنیتی شروع به رصد درایورهایی کردند که گروههای باجافزاری تحت عنوان «LOLDrivers» (درایورهای مبتنی بر منابع موجود سیستم) برای استفاده مجدد فهرست میکردند. فهرست VBL مایکروسافت که از طریق Windows Update و App Control for Business ارائه میشود، اکنون دهها نسخه مشخص از درایورهای ضدتقلب و ابزارهای بازی را بر اساس هش مسدود میکند، اما این فهرست همچنان واکنشی عمل میکند: یک درایور باید ابتدا در حال سوءاستفاده شناسایی شود تا به فهرست افزوده شود، و نسخههای جدید درایورهای ضدتقلب بهطور مداوم و همزمان با رفع روشهای دورزدن توسط شرکتها منتشر میشوند.
در اینجا مقیاس موضوع، اهمیت بیشتری از هر حادثه منفرد دارد. تنها بازی Valorant بیش از ۲۰ میلیون کاربر فعال ماهانه دارد و Vanguard در زمان بوت، پیش از بارشدن رابط کاربری سیستمعامل نصب میشود؛ دقیقاً به این دلیل که ابزارهای تقلب نتوانند آن را در میانه بازی غیرفعال کنند. EAC و BattlEye نیز با هم صدها عنوان رقابتی را پوشش میدهند. این یعنی یک فایل باینری با دسترسی کرنلی که توسط یک شرکت ثالث بهجای سازنده سیستمعامل کنترل میشود و روی پایگاه کاربری بسیار بزرگی نصب شده است؛ و برخلاف یک شرکت آنتیویروس، بیشتر شرکتهای ضدتقلب هرگز نوع آزمون امنیتی خصمانهای را که محصولات EDR بهطور معمول از سر میگذرانند، تجربه نکردهاند، چون مدل تهدید آنها برای شناسایی متقلبان طراحی شده بود، نه برای مقابله با تحقیقات سوءاستفاده از درایور در سطح یک دولت.
چرا این موضوع همچنان تکرار میشود
شرکتهای ضدتقلب با یک مشکل انگیزشی ساختاری مواجهاند: هر قابلیت کرنلی تازهای که برای شناسایی یک تقلب پیچیدهتر اضافه میشود، بهطور همزمان یک قابلیت تازه برای سوءاستفاده مهاجمان نیز هست، اما شاخص عملکرد شرکت نرخ شناسایی تقلب است، نه کمینهسازی سطح حمله. بازنویسی این سیستمها برای اجرا در حالت کاربر با قابلیتهای محدودتر، همان مسیری که Valve با طراحی VAC که در Steam تا حد زیادی در حالت کاربر کار میکند انتخاب کرده و در ازای پذیرفتن سقف پایینتر شناسایی، ردپای کرنلی را بهشکل چشمگیری کوچک کرده است، یک مصالحه واقعی است که بیشتر ناشران حاضر به پذیرفتن آن نبودهاند؛ چون شکایتها درباره صداقت رقابتی سریعتر از یک آسیبپذیری نظری در یک درایور، روی امتیازها و تعداد بازیکنان اثر میگذارد.
مایکروسافت نیز شرکتها را به سمت چارچوبهای Kernel-Mode Hardware-Enforced Stack Protection و HVCI (یکپارچگی کد با پشتیبانی هایپروایزر) سوق میدهد؛ چارچوبهایی که محدود میکنند یک درایور کرنلی، حتی با امضای کد معتبر، چه کاری میتواند انجام دهد. اما پذیرش این چارچوبها اختیاری و کند است، چون میتواند منطق شناسایی ضدتقلب را که به دید گسترده نسبت به حافظه وابسته است، مختل کند. تا زمانی که محدودسازی از نوع HVCI بهجای اختیاریبودن، اجباری شود، همان مدل اعتماد مبتنی بر درایور امضاشده که ضدتقلب را قابلاجرا میکند، همچنان آن را به هدفی پایدار برای حملات BYOVD تبدیل خواهد کرد.
واقعاً چه باید کرد
برای مدیران فناوری اطلاعاتی که ناوگانی از دستگاههای در حال اجرای بازیهای رقابتی را مدیریت میکنند؛ وضعیتی که در کافینتهای گیمینگ، سازمانهای اسپورت و حتی برخی ایمیجهای عمومی سازمانی که کارمندان دسترسی مدیر محلی دارند، رایج است؛ اقدام عملی این است که فهرست VBL مایکروسافت فعال و بهروز نگه داشته شود، بهجای غیرفعالکردن آن به بهانههای سازگاری، چون این فهرست اصلیترین مکانیزمی است که بهطور فعال درایورهای بازی شناختهشده بهعنوان قابلسوءاستفاده را حذف میکند. استقرارهای EDR سازمانی باید بهطور خاص رویدادهای بارشدن درایورهای ضدتقلب خارج از فرایندهای بازی مورد انتظار را رصد کنند؛ بارشدن یک درایور Vanguard یا EAC روی سروری یا ایستگاهکاری که بازی متناظر روی آن نصب نیست، خودش بهتنهایی یک نشانه قوی برای بررسی است.
برای بازیکنان، نتیجه عملی محدودتر است: حذف یک بازی رقابتی همیشه درایور کرنلی آن را حذف نمیکند، بنابراین بررسی فهرست درایورهای نصبشده ویندوز (با دستور driverquery در یک ترمینال با سطح دسترسی بالا) پس از حذف عنوانهای دارای حفاظت ضدتقلب، ارزش سی ثانیهای که میگیرد را دارد. برای ناشرانی که هنوز درباره نحوه ساخت نسل بعدی ضدتقلب تصمیمگیری میکنند، مصالحه VAC شرکت Valve همان چیزی است که ارزش بررسی جدی دارد: یک سیستم شناسایی با سقف پایینتر، اما با ردپای کرنلی بهقدری کوچک که دیگر درایور امضاشده مورد علاقه یک گروه باجافزاری نباشد.