O Control Flow Guard (CFG) foi introduzido como uma camada de mitigação contra exploração de memória indireta, restringindo os alvos válidos de chamadas indiretas de função a um conjunto pré-computado em tempo de compilação.
O problema que o CFG resolve
Chamadas indiretas — via ponteiro de função ou vtable — são um dos vetores mais explorados em corrupção de memória. Sem uma validação de destino, um atacante que controla um ponteiro de função pode redirecionar o fluxo de execução para qualquer endereço mapeado como executável.
Onde a mitigação ainda falha
Apesar da validação de destino, o CFG não impõe integridade de contexto — ou seja, valida para onde a chamada pode ir, mas não a partir de onde ela deveria ter vindo. Isso deixa uma classe de ataques de reentrância e call-stack spoofing ainda viável em cenários específicos de kernel driver.