This repository has been archived by the owner on Aug 2, 2022. It is now read-only.
add harden flags to cicd & pinned builds - 2.0 #8168
Merged
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Change Description
This PR adds a handful of typical compiler hardening options for Linux pinned script builds and cicd builds (so, this includes binaries). I say "typical" as major distros like Ubuntu, Fedora, Arch all ship their packages with most of these hardening options because they can mitigate some classical exploits. There is abundant documentation on what these flags do, but briefly:
-z,now
causes the dynamic linker to resolve all symbols at startup instead of lazy linking later on. Because symbols are resolved before program execution starts,-z,relro
can also be added to make the GOT read only (the linker mprotect()s it after resolving all symbols). Protects against overwriting of the GOT to redirect program flow.I'm seeing something on the order of 3% performance reduction with a replay of recent blocks with OC and replay opts disabled.
Consensus Changes
API Changes
Documentation Additions