diff options
author | fanquake <fanquake@gmail.com> | 2020-03-25 08:11:20 +0800 |
---|---|---|
committer | fanquake <fanquake@gmail.com> | 2020-03-26 11:39:34 +0800 |
commit | edaca2dd123cef958699c07ab248cf0ffc71af07 (patch) | |
tree | 74b0acce3a4276ffd5dea1338514c1b7672780bc /contrib | |
parent | 1a4e9f32efcc5f6a74290446dc58784fd85c7b31 (diff) |
scripts: add MACHO NX check to security-check.py
Diffstat (limited to 'contrib')
-rwxr-xr-x | contrib/devtools/security-check.py | 10 | ||||
-rwxr-xr-x | contrib/devtools/test-security-check.py | 2 |
2 files changed, 12 insertions, 0 deletions
diff --git a/contrib/devtools/security-check.py b/contrib/devtools/security-check.py index 21d64e893d..c05c38d513 100755 --- a/contrib/devtools/security-check.py +++ b/contrib/devtools/security-check.py @@ -197,6 +197,15 @@ def check_MACHO_NOUNDEFS(executable) -> bool: return True return False +def check_MACHO_NX(executable) -> bool: + ''' + Check for no stack execution + ''' + flags = get_MACHO_executable_flags(executable) + if 'ALLOW_STACK_EXECUTION' in flags: + return False + return True + CHECKS = { 'ELF': [ ('PIE', check_ELF_PIE), @@ -212,6 +221,7 @@ CHECKS = { 'MACHO': [ ('PIE', check_MACHO_PIE), ('NOUNDEFS', check_MACHO_NOUNDEFS), + ('NX', check_MACHO_NX) ] } diff --git a/contrib/devtools/test-security-check.py b/contrib/devtools/test-security-check.py index d65e75f12d..1ca0314f3e 100755 --- a/contrib/devtools/test-security-check.py +++ b/contrib/devtools/test-security-check.py @@ -60,6 +60,8 @@ class TestSecurityChecks(unittest.TestCase): cc = 'clang' write_testcode(source) + self.assertEqual(call_security_check(cc, source, executable, ['-Wl,-no_pie','-Wl,-flat_namespace', '-Wl,-allow_stack_execute']), + (1, executable+': failed PIE NOUNDEFS NX')) self.assertEqual(call_security_check(cc, source, executable, ['-Wl,-no_pie','-Wl,-flat_namespace']), (1, executable+': failed PIE NOUNDEFS')) self.assertEqual(call_security_check(cc, source, executable, ['-Wl,-no_pie']), |