05.08.2016 Views

Problem

us-16-Weston-Windows-10-Mitigation-Improvements

us-16-Weston-Windows-10-Mitigation-Improvements

SHOW MORE
SHOW LESS

You also want an ePaper? Increase the reach of your titles

YUMPU automatically turns print PDFs into web optimized ePapers that Google loves.

Corrupt a C++ virtual table pointer and trigger virtual method call to first gadget<br />

Compile time<br />

Runtime<br />

void Foo(...) {<br />

// SomeFunc is address-taken<br />

// and may be called indirectly<br />

Object->FuncPtr = SomeFunc;<br />

}<br />

Metadata is automatically added to the image which<br />

identifies functions that may be called indirectly<br />

void Bar(...) {<br />

// Compiler-inserted check to<br />

// verify call target is valid<br />

_guard_check_icall(Object->FuncPtr);<br />

Object->FuncPtr(xyz);<br />

}<br />

A lightweight check is inserted prior to indirect calls<br />

which will verify that the call target is valid at runtime<br />

Image<br />

Load<br />

Process<br />

Start<br />

Indirect<br />

Call<br />

•Update valid call target data<br />

with metadata from PE image<br />

•Map valid call target data<br />

•Perform O(1) validity check<br />

•Terminate process if invalid<br />

target<br />

Tactic Applies to First shipped<br />

Breaking exploitation techniques Edge on Windows 10 and IE11 on Windows 8.1+ November, 2014 (Windows 8.1 Update 3)

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!