چرا نوع درایور یا بهتر بگم فریمورکش برای امنیت وحملات BYOVD مهم هست ؟
وقتی یک مهاجم میخواد از تکنیک BYOVD (استفاده از درایورهای قانونی ولی آسیبپذیر برای نفوذ به هسته) استفاده کنه:
اگر درایور هدف با روش قدیمی (WDM) نوشته شده باشه، احتمال وجود باگهای ساده و خامی که بشه ازشون سوءاستفاده کرد خیلی بیشتره و مهندسی معکوس کردنش هم راحت تر هست.
اگر درایور هدف با روش جدید (KMDF) نوشته شده باشه، چون فریمورک خیلی از خطاهای برنامهنویسی رو خودش فیلتر میکنه، پیدا کردن باگ سختتره و ساختار کدهای توی حافظه شکل متفاوتی داره.
پس نحوه مدیریت IOCTLها، محل کدهای اجرایی در حافظه، قابلیتهای امنیتی و میزان سختی مهندسی معکوس، چالش های شما هستند.
یعنی چی ؟ این سناریو ها وجود دارند :
در مدل فریمورک قدیمی (WDM) برنامه به صورت مستقیم با کد درایور ارتباط برقرار میکند. درایور باید صف را مدیریت کند، بررسی اندازه داده و سنجش دسترسی را کلا خودش به شکل دستی انجام دهد. اگر برنامه نویس یک بررسی امنیتی را فراموش کند، نفوذگر با فرستادن یک داده دستکاری شده (IOCTL) مستقیما به کنترل هسته (Ring 0) میرسد.
در مدل فریمورک جدید (KMDF) درخواست برنامه ابتدا وارد صف هوشمند فریمورک میشود. KMDF دادهها را ارزیابی و مرتب میکند و سپس نسخه امن را به درایور تحویل میدهد. اینجا نفوذگر برای رخنه، به جای اشتباههای ساده برنامه نویس، باید با ابزارهای دفاعی خود فریمورک درگیر شود.
_



