مکانیزم CFG ویندوز از طریق یک bitmap در runtime، صحت آدرسهای Indirect Call را اعتبارسنجی میکند؛ از آنجا که gadget های ROP معمولاً به آدرسهای میانی توابع در ntdll اشاره دارند که در metadata کامپایلر ثبت نشدهاند، سیستم با خطای
STATUS_STACK_BUFFER_OVERRUN متوقف میشود.راهحل ارائهشده، استفاده از API غیرمستند
NtSetInformationVirtualMemory با کلاس VmCfgCallTargetInformation است که امکان ثبت دستی آدرسهای مجاز را فراهم میکند. این رویکرد نشان میدهد که در محیطهای مدرن، صرف استفاده از ROP کافی نیست؛ بلکه باید با زیرساختهای امنیتی OS به صورت تعاملی برخورد کرد.
یک یادآوری برای دفاعکنندگان که لایههای حفاظتی باید در کنار هم و به صورت Defense-in-Depth پیادهسازی شوند.
#RedTeam #MalDev #Evasion
@securation