[3.14] gh-139808: Add branch protections for aarch64 in asm_trampoline.S (#130864)#150189
Merged
Conversation
….S (python#130864) Apply protection against ROP/JOP attacks for aarch64 on asm_trampoline.S. The BTI flag must be applied in assembler sources for this class of attacks to be mitigated on newer aarch64 processors. See also: https://sourceware.org/annobin/annobin.html/Test-branch-protection.html and https://community.arm.com/arm-community-blogs/b/architectures-and-processors-blog/posts/enabling-pac-and-bti-on-aarch64 The 3.14 backport makes Python/jit_unwind.c changes in Python/perf_jit_trampoline.c. Co-authored-by: Victor Stinner <vstinner@python.org> (cherry picked from commit da8477b)
Member
Author
|
I tested this change on Fedora 43 AArch64 with commands: Output: The BTI and PAC protections are present as expected. |
Contributor
|
The backport looks good, the relevant sections in perf_jit_trampoline.c are exactly identical with jit_unwind.c from the later branches. I've also tested the combination with/without frame pointers and with/without -mbranch-protection=standard, when using the protections, the binary has the proper notes and Perf works across all the paths in all the combons, the frame pointer path and the backup dwarf path. |
Member
Author
|
I merged the PR. @stratakis: Thanks for testing all possible cases! |
|
Thanks @vstinner for the PR 🌮🎉.. I'm working now to backport this PR to: 3.13. |
|
GH-150194 is a backport of this pull request to the 3.13 branch. |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
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.
Apply protection against ROP/JOP attacks for aarch64 on asm_trampoline.S.
The BTI flag must be applied in assembler sources for this class of attacks to be mitigated on newer aarch64 processors.
See also:
https://sourceware.org/annobin/annobin.html/Test-branch-protection.html and
https://community.arm.com/arm-community-blogs/b/architectures-and-processors-blog/posts/enabling-pac-and-bti-on-aarch64
The 3.14 backport makes Python/jit_unwind.c changes in Python/perf_jit_trampoline.c.
(cherry picked from commit da8477b)