• Bruce Dawson's avatar
    Use PAGE_TARGETS_INVALID when allocating code pages · 6930df0f
    Bruce Dawson authored
    PAGE_TARGETS_INVALID tells CFG (Control Flow Guard) to mark all
    addresses as invalid indirect branch targets. This makes exploits more
    difficult. The benefit is minor because most of the code in the Chrome
    process doesn't use the CFG checks, but this will close off a few
    weaknesses and is the direction we will want to go in eventually
    anyway (with specific targets or call sites opted-in to allowing
    calls, using SetProcessValidCallTargets).
    
    PAGE_TARGETS_INVALID may ultimately cause CFG to not allocate memory -
    that is implied by Windows Internals 7th Edition - and if that is
    implemented then this change will save some modest amount of memory.
    
    PAGE_TARGETS_INVALID was introduced in Windows 10 - according to
    Windows Internals Part 1 7th Edition - prior to that it will cause
    VirtualAlloc to fail.
    
    Bug: chromium:870054
    Change-Id: Ib1784fba37cc0ecb5fe5df595f1519531b3b3a20
    Reviewed-on: https://chromium-review.googlesource.com/1186025
    Commit-Queue: Bruce Dawson <brucedawson@chromium.org>
    Reviewed-by: 's avatarUlan Degenbaev <ulan@chromium.org>
    Reviewed-by: 's avatarHannes Payer <hpayer@chromium.org>
    Cr-Commit-Position: refs/heads/master@{#55365}
    6930df0f
Name
Last commit
Last update
..
debug Loading commit data...
platform Loading commit data...
utils Loading commit data...
DEPS Loading commit data...
OWNERS Loading commit data...
adapters.h Loading commit data...
atomic-utils.h Loading commit data...
atomicops.h Loading commit data...
atomicops_internals_atomicword_compat.h Loading commit data...
atomicops_internals_portable.h Loading commit data...
atomicops_internals_std.h Loading commit data...
base-export.h Loading commit data...
bits.cc Loading commit data...
bits.h Loading commit data...
build_config.h Loading commit data...
compiler-specific.h Loading commit data...
cpu.cc Loading commit data...
cpu.h Loading commit data...
division-by-constant.cc Loading commit data...
division-by-constant.h Loading commit data...
export-template.h Loading commit data...
file-utils.cc Loading commit data...
file-utils.h Loading commit data...
flags.h Loading commit data...
format-macros.h Loading commit data...
free_deleter.h Loading commit data...
functional.cc Loading commit data...
functional.h Loading commit data...
hashmap-entry.h Loading commit data...
hashmap.h Loading commit data...
ieee754.cc Loading commit data...
ieee754.h Loading commit data...
iterator.h Loading commit data...
lazy-instance.h Loading commit data...
list.h Loading commit data...
logging.cc Loading commit data...
logging.h Loading commit data...
macros.h Loading commit data...
once.cc Loading commit data...
once.h Loading commit data...
optional.h Loading commit data...
page-allocator.cc Loading commit data...
page-allocator.h Loading commit data...
qnx-math.h Loading commit data...
ring-buffer.h Loading commit data...
safe_conversions.h Loading commit data...
safe_conversions_impl.h Loading commit data...
safe_math.h Loading commit data...
safe_math_impl.h Loading commit data...
sys-info.cc Loading commit data...
sys-info.h Loading commit data...
template-utils.h Loading commit data...
timezone-cache.h Loading commit data...
tsan.h Loading commit data...
v8-fallthrough.h Loading commit data...
win32-headers.h Loading commit data...