mirror of
https://github.com/dashpay/dash.git
synced 2024-12-24 19:42:46 +01:00
Merge bitcoin/bitcoin#26835: contrib: add PE Canary check to security-check
6ba17d4955b75b4f4064a817dd55427f25b194bf scripts: add PE Canary check to security-check (fanquake) Pull request description: We should be checking this, same as ELF & MACHO. Guix Build: ```bash 6334c001b276ca5f0278092be68bf6d49d9b755bcac893bbd4aa58df57356e40 guix-build-6ba17d4955b7/output/dist-archive/bitcoin-6ba17d4955b7.tar.gz e27ad7fffb377bc6264477933859ab47c7283a68fbf86124d3801bc4c8b790dd guix-build-6ba17d4955b7/output/x86_64-w64-mingw32/SHA256SUMS.part ef7b61bd854f0d3c39f356ef85ac18d37c5740874111f5ce46f7ce3381e714ca guix-build-6ba17d4955b7/output/x86_64-w64-mingw32/bitcoin-6ba17d4955b7-win64-debug.zip c419324597487f248143a076d6eb2a56b0dbf5ce690ca89afaaee5c6b352e1a1 guix-build-6ba17d4955b7/output/x86_64-w64-mingw32/bitcoin-6ba17d4955b7-win64-setup-unsigned.exe a18ff1e3026cd9fc08dd7b500c06a343462aef4a37538608d940d1845bcdb94a guix-build-6ba17d4955b7/output/x86_64-w64-mingw32/bitcoin-6ba17d4955b7-win64-unsigned.tar.gz 7e4ee0669940f4b8c1a12dab836898511a60f06a62057ac03beaca8bb693bfb4 guix-build-6ba17d4955b7/output/x86_64-w64-mingw32/bitcoin-6ba17d4955b7-win64.zip ``` ACKs for top commit: sipsorcery: ACK 6ba17d4955b75b4f4064a817dd55427f25b194bf. Tree-SHA512: 1acc24c0cb36dbc30311f4eee64e3d4737c828b97039be0f72cfe061bcb8c4d5c830d7792f503e711e219a62d85b7e07cdff3510cbd4f8d46895a7cb66b88219
This commit is contained in:
parent
b6bde7322c
commit
0dd997c4e5
@ -146,6 +146,12 @@ def check_PE_control_flow(binary) -> bool:
|
|||||||
return True
|
return True
|
||||||
return False
|
return False
|
||||||
|
|
||||||
|
def check_PE_Canary(binary) -> bool:
|
||||||
|
'''
|
||||||
|
Check for use of stack canary
|
||||||
|
'''
|
||||||
|
return binary.has_symbol('__stack_chk_fail')
|
||||||
|
|
||||||
def check_MACHO_NOUNDEFS(binary) -> bool:
|
def check_MACHO_NOUNDEFS(binary) -> bool:
|
||||||
'''
|
'''
|
||||||
Check for no undefined references.
|
Check for no undefined references.
|
||||||
@ -203,6 +209,7 @@ BASE_PE = [
|
|||||||
('NX', check_NX),
|
('NX', check_NX),
|
||||||
('RELOC_SECTION', check_PE_RELOC_SECTION),
|
('RELOC_SECTION', check_PE_RELOC_SECTION),
|
||||||
('CONTROL_FLOW', check_PE_control_flow),
|
('CONTROL_FLOW', check_PE_control_flow),
|
||||||
|
('Canary', check_PE_Canary),
|
||||||
]
|
]
|
||||||
|
|
||||||
BASE_MACHO = [
|
BASE_MACHO = [
|
||||||
|
@ -94,19 +94,19 @@ class TestSecurityChecks(unittest.TestCase):
|
|||||||
cc = determine_wellknown_cmd('CC', 'x86_64-w64-mingw32-gcc')
|
cc = determine_wellknown_cmd('CC', 'x86_64-w64-mingw32-gcc')
|
||||||
write_testcode(source)
|
write_testcode(source)
|
||||||
|
|
||||||
self.assertEqual(call_security_check(cc, source, executable, ['-Wl,--disable-nxcompat','-Wl,--disable-reloc-section','-Wl,--disable-dynamicbase','-Wl,--disable-high-entropy-va','-no-pie','-fno-PIE']),
|
self.assertEqual(call_security_check(cc, source, executable, ['-Wl,--disable-nxcompat','-Wl,--disable-reloc-section','-Wl,--disable-dynamicbase','-Wl,--disable-high-entropy-va','-no-pie','-fno-PIE','-fno-stack-protector']),
|
||||||
(1, executable+': failed PIE DYNAMIC_BASE HIGH_ENTROPY_VA NX RELOC_SECTION CONTROL_FLOW'))
|
(1, executable+': failed PIE DYNAMIC_BASE HIGH_ENTROPY_VA NX RELOC_SECTION CONTROL_FLOW Canary'))
|
||||||
self.assertEqual(call_security_check(cc, source, executable, ['-Wl,--nxcompat','-Wl,--disable-reloc-section','-Wl,--disable-dynamicbase','-Wl,--disable-high-entropy-va','-no-pie','-fno-PIE']),
|
self.assertEqual(call_security_check(cc, source, executable, ['-Wl,--nxcompat','-Wl,--disable-reloc-section','-Wl,--disable-dynamicbase','-Wl,--disable-high-entropy-va','-no-pie','-fno-PIE','-fstack-protector-all', '-lssp']),
|
||||||
(1, executable+': failed PIE DYNAMIC_BASE HIGH_ENTROPY_VA RELOC_SECTION CONTROL_FLOW'))
|
(1, executable+': failed PIE DYNAMIC_BASE HIGH_ENTROPY_VA RELOC_SECTION CONTROL_FLOW'))
|
||||||
self.assertEqual(call_security_check(cc, source, executable, ['-Wl,--nxcompat','-Wl,--enable-reloc-section','-Wl,--disable-dynamicbase','-Wl,--disable-high-entropy-va','-no-pie','-fno-PIE']),
|
self.assertEqual(call_security_check(cc, source, executable, ['-Wl,--nxcompat','-Wl,--enable-reloc-section','-Wl,--disable-dynamicbase','-Wl,--disable-high-entropy-va','-no-pie','-fno-PIE','-fstack-protector-all', '-lssp']),
|
||||||
(1, executable+': failed PIE DYNAMIC_BASE HIGH_ENTROPY_VA CONTROL_FLOW'))
|
(1, executable+': failed PIE DYNAMIC_BASE HIGH_ENTROPY_VA CONTROL_FLOW'))
|
||||||
self.assertEqual(call_security_check(cc, source, executable, ['-Wl,--nxcompat','-Wl,--enable-reloc-section','-Wl,--disable-dynamicbase','-Wl,--disable-high-entropy-va','-pie','-fPIE']),
|
self.assertEqual(call_security_check(cc, source, executable, ['-Wl,--nxcompat','-Wl,--enable-reloc-section','-Wl,--disable-dynamicbase','-Wl,--disable-high-entropy-va','-pie','-fPIE','-fstack-protector-all', '-lssp']),
|
||||||
(1, executable+': failed PIE DYNAMIC_BASE HIGH_ENTROPY_VA CONTROL_FLOW')) # -pie -fPIE does nothing unless --dynamicbase is also supplied
|
(1, executable+': failed PIE DYNAMIC_BASE HIGH_ENTROPY_VA CONTROL_FLOW')) # -pie -fPIE does nothing unless --dynamicbase is also supplied
|
||||||
self.assertEqual(call_security_check(cc, source, executable, ['-Wl,--nxcompat','-Wl,--enable-reloc-section','-Wl,--dynamicbase','-Wl,--disable-high-entropy-va','-pie','-fPIE']),
|
self.assertEqual(call_security_check(cc, source, executable, ['-Wl,--nxcompat','-Wl,--enable-reloc-section','-Wl,--dynamicbase','-Wl,--disable-high-entropy-va','-pie','-fPIE','-fstack-protector-all', '-lssp']),
|
||||||
(1, executable+': failed HIGH_ENTROPY_VA CONTROL_FLOW'))
|
(1, executable+': failed HIGH_ENTROPY_VA CONTROL_FLOW'))
|
||||||
self.assertEqual(call_security_check(cc, source, executable, ['-Wl,--nxcompat','-Wl,--enable-reloc-section','-Wl,--dynamicbase','-Wl,--high-entropy-va','-pie','-fPIE']),
|
self.assertEqual(call_security_check(cc, source, executable, ['-Wl,--nxcompat','-Wl,--enable-reloc-section','-Wl,--dynamicbase','-Wl,--high-entropy-va','-pie','-fPIE','-fstack-protector-all', '-lssp']),
|
||||||
(1, executable+': failed CONTROL_FLOW'))
|
(1, executable+': failed CONTROL_FLOW'))
|
||||||
self.assertEqual(call_security_check(cc, source, executable, ['-Wl,--nxcompat','-Wl,--enable-reloc-section','-Wl,--dynamicbase','-Wl,--high-entropy-va','-pie','-fPIE', '-fcf-protection=full']),
|
self.assertEqual(call_security_check(cc, source, executable, ['-Wl,--nxcompat','-Wl,--enable-reloc-section','-Wl,--dynamicbase','-Wl,--high-entropy-va','-pie','-fPIE', '-fcf-protection=full','-fstack-protector-all', '-lssp']),
|
||||||
(0, ''))
|
(0, ''))
|
||||||
|
|
||||||
clean_files(source, executable)
|
clean_files(source, executable)
|
||||||
|
Loading…
Reference in New Issue
Block a user