Commit Graph

67 Commits

Author SHA1 Message Date
be4f78275f contrib: test for FORTIFY_SOURCE in security-check.py 2024-09-09 12:35:13 +01:00
1bc9f64bee contrib: assume binary existence in sec/sym checks
If the binaries don't exist, the Guix build has failed for some other
reason.

There's no need to check for unknown architectures, or executable
formats, as the only ones that could be built are those that we've
configured toolchains for in Guix.

We've also been doing this inconsistently across the two scripts.
2024-07-18 14:05:09 +01:00
51d8f435c9 contrib: simplify ELF test-security-check 2024-07-18 10:31:05 +01:00
1810e20677 contrib: simplify PE test-security-check 2024-07-18 10:31:01 +01:00
6c9746ff92 contrib: simplify MACHO test-security-check 2024-07-18 09:49:51 +01:00
5335e454c0 contrib: add macho branch protection check 2024-01-03 17:28:39 +00:00
d516cf83ed test: use built-in collection types for type hints (Python 3.9 / PEP 585)
Since Python 3.9, type hinting has become a little less awkward, as for
collection types one doesn't need to import the corresponding
capitalized types (`Dict`, `List`, `Set`, `Tuple`, ...) anymore, but can
use the built-in types directly. [1] [2]
This commit applies the replacement for all Python scripts (i.e. in the
contrib and test folders) for the basic types:
    - typing.Dict  -> dict
    - typing.List  -> list
    - typing.Set   -> set
    - typing.Tuple -> tuple

[1] https://docs.python.org/3.9/whatsnew/3.9.html#type-hinting-generics-in-standard-collections
[2] https://peps.python.org/pep-0585/#implementation for a list of type
2023-10-25 01:10:21 +02:00
7f96638723 contrib: add macOS fixup_chains check to security-check
Followup to #27676.
2023-06-29 12:08:08 +01:00
ec822e88dd Merge bitcoin/bitcoin#27813: guix: Update python-lief package to 0.13.2
529c92e837 guix: Update `python-lief` package to 0.13.2 (Hennadii Stepanov)

Pull request description:

  The Guix's `python-lief` package is going to move to using external deps, rather than the bundled ones (https://lists.gnu.org/archive/html/guix-patches/2023-05/msg01302.html). We want to continue using our own package indefinitely, to keep the build simpler, and allow for easier updating.

  Changes in `contrib/devtools/security-check.py` are caused by 6357c6370b.

  Also see: https://github.com/bitcoin/bitcoin/pull/27507.

ACKs for top commit:
  fanquake:
    ACK 529c92e837

Tree-SHA512: ad81111b090a39b380fe25bb27b54a339e78a158f462c7adda25d5ee55f0d654107b1486b29b9687ad0808e27b01e04f53a0e8ffc6600b79103d6bd0dfec64ef
2023-06-28 11:41:35 +01:00
529c92e837 guix: Update python-lief package to 0.13.2 2023-06-23 17:02:49 +01:00
3df6070466 contrib: remove macOS lazy_bind check
In future, this will be replaced by a check for fixup_chains usage.
2023-06-22 15:28:47 +00:00
015cc5e588 lint: stop ignoring LIEF imports
Type stubs are now available as of 0.13.0.
See https://github.com/lief-project/LIEF/issues/650.
2023-05-29 10:23:52 +01:00
0c579203d2 Merge bitcoin/bitcoin#25867: lint: enable E722 do not use bare except
61bb4e783b lint: enable E722 do not use bare except (Leonardo Lazzaro)

Pull request description:

  Improve test code and enable E722 lint check.

   If you want to catch all exceptions that signal program errors, use except Exception: (bare except is equivalent to except BaseException:).

  Reference: https://peps.python.org/pep-0008/#programming-recommendations

ACKs for top commit:
  MarcoFalke:
    lgtm ACK 61bb4e783b

Tree-SHA512: c7497769d5745fa02c78a20f4a0e555d8d3996d64af6faf1ce28e22ac1d8be415b98e967294679007b7bda2a9fd04031a9d140b24201e00257ceadeb5c5d7665
2023-02-22 09:28:09 +00:00
61bb4e783b lint: enable E722 do not use bare except 2023-02-18 11:24:09 +00:00
6ba17d4955 scripts: add PE Canary check to security-check 2023-01-06 10:49:18 +00:00
306ccd4927 scripted-diff: Bump copyright headers
-BEGIN VERIFY SCRIPT-
./contrib/devtools/copyright_header.py update ./
-END VERIFY SCRIPT-

Commits of previous years:
- 2021: f47dda2c58
- 2020: fa0074e2d8
- 2019: aaaaad6ac9
2022-12-24 23:49:50 +00:00
983e0a2058 contrib: use LIEF 0.12.0 for symbol and security checks 2022-03-28 10:31:12 +01:00
6fe55160dd contrib: support arm64 darwin in security checks 2022-01-26 17:32:10 +08:00
5a8f907c93 scripts: add CONTROL_FLOW to ELF security checks 2022-01-04 22:45:45 +08:00
6ca5efa8ed script rename control flow check to MACHO specific 2022-01-04 22:45:44 +08:00
b9898aeeaa scripts: make security checks architecture independent
This paves the way for using and checking for architecture dependent
flags like -fcf-protection on x86_64 Linux and -mbranch-protection on 64
bit ARM.
2022-01-03 21:36:55 +08:00
f47dda2c58 scripted-diff: Bump copyright headers
-BEGIN VERIFY SCRIPT-
./contrib/devtools/copyright_header.py update ./
-END VERIFY SCRIPT-

Commits of previous years:
* 2020: fa0074e2d8
* 2019: aaaaad6ac9
2021-12-30 19:36:57 +02:00
feee308401 scripts: match on exe type over str in security-check.py 2021-12-18 11:41:36 +08:00
f31d4bd214 scripts: test for PE control flow instrumentation 2021-11-17 16:12:47 +08:00
a46f71bb70 lint: enable mypy checking for missing imports
Achieve this by adding some ignore, and making data/ importable.

Co-authored-by: João Barbosa <joao.paulo.barbosa@gmail.com>
2021-10-16 09:14:37 +08:00
00b85d0b13 scripts: only parse the binary once in security-check.py 2021-10-12 08:36:21 +08:00
cad40a5b16 scripts: use LIEF for ELF checks in security-check.py 2021-10-12 08:36:21 +08:00
42b589d18f scripts: test for MACHO control flow instrumentation 2021-05-09 14:26:09 +08:00
955140b326 contrib: consolidate PIE and NX security checks 2021-05-04 20:48:00 +08:00
0f5d77c8e4 contrib: add PE PIE check to security checks 2021-05-04 20:48:00 +08:00
8e1f40dd9a contrib: use LIEF for PE security checks 2021-05-04 20:47:59 +08:00
a25b2e965c contrib: use LIEF for macOS security checks 2021-05-04 20:47:59 +08:00
7e7eae7aa8 contrib: use f strings in security-check.py 2021-05-04 20:47:59 +08:00
a0a771843f contrib: Changes to checks for PowerPC64
Changes from #14066.
2020-11-22 11:11:32 +01:00
634f6ec4eb contrib: Parse ELF directly for symbol and security checks
Instead of the ever-messier text parsing of the output of the readelf
tool (which is clearly meant for human consumption not to be machine
parseable), parse the ELF binaries directly.

Add a small dependency-less ELF parser specific to the checks.

This is slightly more secure, too, because it removes potential
ambiguity due to misparsing and changes in the output format of `elfread`. It
also allows for stricter and more specific ELF format checks in the future.

This removes the build-time dependency for `readelf`.

It passes the test-security-check for me locally, though I haven't
checked on all platforms.
2020-11-22 11:11:32 +01:00
b6121edf70 swapped "is" for "==" in literal comparison
update lint-python.sh to include check F632
2020-11-09 10:21:51 -05:00
65d0f1a533 devtools: Add security check for separate_code
Check that sections are appropriately separated in virtual memory,
based on their (expected) permissions. This checks for missing
-Wl,-z,separate-code and potentially other problems.

Co-authored-by: fanquake <fanquake@gmail.com>
2020-07-28 12:57:35 +08:00
eacedfb023 scripts: add additional type annotations to security-check.py 2020-05-14 15:30:52 +08:00
83d063e954 scripts: add run_command to security-check.py
Deduplicate all the subprocess code as mentioned in 18713.
2020-05-14 15:29:58 +08:00
13f606b4f9 scripts: remove NONFATAL from security-check.py 2020-05-14 14:36:27 +08:00
061acf62a1 scripts: no-longer check for 32 bit windows in security-check.py 2020-05-14 14:36:27 +08:00
3e38023af7 scripts: add PE .reloc section check to security-check.py 2020-04-23 08:40:24 +08:00
7b99c7454c scripts: add MACHO Canary check to security-check.py 2020-04-21 11:32:01 +08:00
5ca90f8b59 scripts: add MACHO lazy bindings check to security-check.py 2020-04-04 09:54:25 +08:00
edaca2dd12 scripts: add MACHO NX check to security-check.py 2020-03-26 11:39:34 +08:00
e09c701e01 scripted-diff: Bump copyright of files changed in 2020
-BEGIN VERIFY SCRIPT-
./contrib/devtools/copyright_header.py update ./
-END VERIFY SCRIPT-
2020-01-15 02:18:00 +07:00
7c9e821c4e scripts: add MACHO NOUNDEFS check to security-check.py 2020-01-02 14:42:23 +08:00
4ca92dc6d3 scripts: add MACHO PIE check to security-check.py 2020-01-02 14:42:21 +08:00
af1ed206f8 Fix broken Gmane URLs 2018-11-30 13:51:55 +00:00
78dae8cacc Merge #13780: 0.17: Pre-branch maintenance
3fc20632a3 qt: Set BLOCK_CHAIN_SIZE = 220 (DrahtBot)
2b6a2f4a28 Regenerate manpages (DrahtBot)
eb7daf4d60 Update copyright headers to 2018 (DrahtBot)

Pull request description:

  Some trivial maintenance to avoid having to do it again after the 0.17 branch off.

  (The scripts to do this are in `./contrib/`)

Tree-SHA512: 16b2af45e0351b1c691c5311d48025dc6828079e98c2aa2e600dc5910ee8aa01858ca6c356538150dc46fe14c8819ed8ec8e4ec9a0f682b9950dd41bc50518fa
2018-08-08 13:55:27 +02:00