PDF Archive

Easily share your PDF documents with your contacts, on the Web and Social Networks.

Share a file Manage my documents Convert Recover PDF Search Help Contact

Documenting the Undocumented Adding CFG Exceptions.pdf

Preview of PDF document documenting-the-undocumented-adding-cfg-exceptions.pdf

Page 1 23418

Text preview


Documenting the Undocumented: Adding CFG Exceptions ­ Breaking Malware

TL;DR Microsoft’s Control Flow Guard (CFG) is a security feature that prevents the abuse of indirect calls from
calling addresses that are not marked as safe. CFG can cause problems for anyone trying to execute malicious
memory manipulations on Windows. In such cases, this can be bypassed by adding an exception to the CFG
bitmap (a mapping of all the “safe” addresses). How can we add such an exception? There are actually two
ways: one documented, the other undocumented. In this post, we’ll walk you through both while analyzing the
undocumented syscall in depth.

What is Microsoft’s Control Flow Guard
A combination of compile and run­time support from CFG implements control flow integrity that tightly restricts
where indirect call instructions can execute.
The compiler does the following:
Adds a lightweight security check before each indirect call in the compiled code
Identifies the set of functions in the application that are valid targets for indirect calls
The runtime support, provided by Windows (both kernel mode and user mode code are involved):
Efficiently maintains state that identifies valid indirect call targets
Implements the logic that verifies that an indirect call target is valid