52 lines
1.4 KiB
Diff
52 lines
1.4 KiB
Diff
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
|
|
From: Charalampos Stratakis <cstratak@redhat.com>
|
|
Date: Wed, 8 Jan 2025 04:58:22 +0100
|
|
Subject: 00459: Apply Intel Control-flow Technology for x86-64
|
|
|
|
Required for mitigation against return-oriented programming (ROP) and Call or Jump Oriented Programming (COP/JOP) attacks
|
|
|
|
Proposed upstream: https://github.com/python/cpython/pull/128606
|
|
|
|
See also: https://sourceware.org/annobin/annobin.html/Test-cf-protection.html
|
|
---
|
|
Python/asm_trampoline.S | 22 ++++++++++++++++++++++
|
|
1 file changed, 22 insertions(+)
|
|
|
|
diff --git a/Python/asm_trampoline.S b/Python/asm_trampoline.S
|
|
index 460707717d..341d0bbe51 100644
|
|
--- a/Python/asm_trampoline.S
|
|
+++ b/Python/asm_trampoline.S
|
|
@@ -9,6 +9,9 @@
|
|
# }
|
|
_Py_trampoline_func_start:
|
|
#ifdef __x86_64__
|
|
+#if defined(__CET__) && (__CET__ & 1)
|
|
+ endbr64
|
|
+#endif
|
|
sub $8, %rsp
|
|
call *%rcx
|
|
add $8, %rsp
|
|
@@ -26,3 +29,22 @@ _Py_trampoline_func_start:
|
|
.globl _Py_trampoline_func_end
|
|
_Py_trampoline_func_end:
|
|
.section .note.GNU-stack,"",@progbits
|
|
+# Note for indicating the assembly code supports CET
|
|
+#if defined(__x86_64__) && defined(__CET__) && (__CET__ & 1)
|
|
+ .section .note.gnu.property,"a"
|
|
+ .align 8
|
|
+ .long 1f - 0f
|
|
+ .long 4f - 1f
|
|
+ .long 5
|
|
+0:
|
|
+ .string "GNU"
|
|
+1:
|
|
+ .align 8
|
|
+ .long 0xc0000002
|
|
+ .long 3f - 2f
|
|
+2:
|
|
+ .long 0x3
|
|
+3:
|
|
+ .align 8
|
|
+4:
|
|
+#endif // __x86_64__
|