-
Notifications
You must be signed in to change notification settings - Fork 37.7k
depends: harden libevent #27118
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
depends: harden libevent #27118
Conversation
The following sections might be updated with supplementary metadata relevant to reviewers and maintainers. ReviewsSee the guideline for information on the review process.
If your review is incorrectly listed, please react with 👎 to this comment and the bot will ignore it on the next update. ConflictsReviewers, this pull request conflicts with the following ones:
If you consider this pull request important, please also help to review the conflicting pull requests. Ideally, start with the one that should be merged first. |
e8cb6e6
to
778e34e
Compare
Changed the approach here, from using libevents own hardening option (might send some fixes upstream), and a patch, to just using |
Do you have a before/after count for hardened functions? |
Using GCC 13 and glibc 2.37 (with only this branch): # master
nm -C src/bitcoind | grep _chk
U __fprintf_chk@GLIBC_2.17
U __memcpy_chk@GLIBC_2.17
U __snprintf_chk@GLIBC_2.17
U __stack_chk_fail@GLIBC_2.17
U __stack_chk_guard@GLIBC_2.17
U __vsnprintf_chk@GLIBC_2.17
objdump -d src/bitcoind | grep "_chk@plt" | wc -l
32
# this branch
nm -C src/bitcoind | grep _chk
U __fdelt_chk@GLIBC_2.17
U __fprintf_chk@GLIBC_2.17
U __memcpy_chk@GLIBC_2.17
U __memmove_chk@GLIBC_2.17
U __memset_chk@GLIBC_2.17
U __snprintf_chk@GLIBC_2.17
U __stack_chk_fail@GLIBC_2.17
U __stack_chk_guard@GLIBC_2.17
U __vsnprintf_chk@GLIBC_2.17
objdump -d src/bitcoind | grep "_chk@plt" | wc -l
54 If I combine with our own use of FORTIFY_SOURCE=3: nm -C src/bitcoind | grep _chk
U __fdelt_chk@GLIBC_2.17
U __fprintf_chk@GLIBC_2.17
U __memcpy_chk@GLIBC_2.17
U __memmove_chk@GLIBC_2.17
U __memset_chk@GLIBC_2.17
U __snprintf_chk@GLIBC_2.17
U __stack_chk_fail@GLIBC_2.17
U __stack_chk_guard@GLIBC_2.17
U __vsnprintf_chk@GLIBC_2.17
objdump -d src/bitcoind | grep "_chk@plt" | wc -l
81 |
I changed the approach because I don't want us to use the gcc-hardening option. |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
ACK 778e34e
778e34e
to
ff4a73a
Compare
Rebased on top of #27027. |
ACK ff4a73a |
ff4a73a depends: use FORTIFY_SOURCE=3 with libevent (fanquake) Pull request description: Use `FORTIFY_SOURCE=3` when building libevent in depends. I've upstreamed a change to switch libevent from using =2 to =3 as well: libevent/libevent#1418. Solves half of bitcoin#27038, by giving us some fortified funcs in `bitcoin-cli`. ACKs for top commit: TheCharlatan: ACK ff4a73a Tree-SHA512: eaf692ec92b288f0cb524c011fc81529f58efa4c43d418a7b3ae7108eba2bccba708a81a28ac6d063267be80ca615637c6e3fccc02497d7367af2eaae0e8d812
This PR introduced a regression when building with depends and disabled hardening:
|
Add an option that when passed, will disable hardening options, and pass `--disable-hardening` through to configure. Annoyingly, because of the way we link libssp for Windows builds, they now fail (after bitcoin#27118), if building with depends, and configuring with --disable-hardening. See: bitcoin#27118 (comment).
Add an option that when passed, will disable hardening options, and pass `--disable-hardening` through to configure. Annoyingly, because of the way we link libssp for Windows builds, they now fail (after bitcoin#27118), if building with depends, and configuring with --disable-hardening. See: bitcoin#27118 (comment).
Add an option that when passed, will disable hardening options, and pass `--disable-hardening` through to configure. Annoyingly, because of the way we link libssp for Windows builds, they now fail (after bitcoin#27118), if building with depends, and configuring with --disable-hardening. See: bitcoin#27118 (comment).
Add an option that when passed, will disable hardening options, and pass `--disable-hardening` through to configure. Annoyingly, because of the way we link libssp for Windows builds, they now fail (after bitcoin#27118), if building with depends, and configuring with --disable-hardening. See: bitcoin#27118 (comment).
Add an option that when passed, will disable hardening options, and pass `--disable-hardening` through to configure. Annoyingly, because of the way we link libssp for Windows builds, they now fail (after bitcoin#27118), if building with depends, and configuring with --disable-hardening. See: bitcoin#27118 (comment).
Add an option that when passed, will disable hardening options, and pass `--disable-hardening` through to configure. Due to the way we link libssp for Windows builds, they now fail (after bitcoin#27118), if building with depends, and configuring with --disable-hardening. See: bitcoin#27118 (comment). This change would add a depends opiton such that, if someone wants to build with, for windows, without hardening, they can do so. This may also be useful when building for debugging.
Followup for discussion in 27406. |
Add an option that when passed, will disable hardening options, and pass `--disable-hardening` through to configure. Due to the way we link libssp for Windows builds, they now fail (after bitcoin#27118), if building with depends, and configuring with --disable-hardening. See: bitcoin#27118 (comment). This change would add a depends opiton such that, if someone wants to build with, for windows, without hardening, they can do so. This may also be useful when building for debugging.
436df1e depends: add NO_HARDEN option (fanquake) Pull request description: Add an option that when passed, will disable hardening options, and pass `--disable-hardening` through to configure. Due to the way we link `libssp` for Windows builds, they now fail (after #27118), if building with depends, and configuring with `--disable-hardening` (Windows is the odd build out here). See: bitcoin/bitcoin#27118 (comment). This change would add a depends option such that, if someone wants to build with depends, for Windows, without hardening, they can do so. This may also be useful when building for debugging. ACKs for top commit: hebasto: re-ACK 436df1e Tree-SHA512: 5a3ef5ec87b10a5ad0a284201988ce94789451735c7c7e20d337f7232955b0b9a0addab1c3b5725755f00d8ce6741aa9c8cb5e3d48d926515b7dde46acdbcaa0
436df1e depends: add NO_HARDEN option (fanquake) Pull request description: Add an option that when passed, will disable hardening options, and pass `--disable-hardening` through to configure. Due to the way we link `libssp` for Windows builds, they now fail (after bitcoin#27118), if building with depends, and configuring with `--disable-hardening` (Windows is the odd build out here). See: bitcoin#27118 (comment). This change would add a depends option such that, if someone wants to build with depends, for Windows, without hardening, they can do so. This may also be useful when building for debugging. ACKs for top commit: hebasto: re-ACK 436df1e Tree-SHA512: 5a3ef5ec87b10a5ad0a284201988ce94789451735c7c7e20d337f7232955b0b9a0addab1c3b5725755f00d8ce6741aa9c8cb5e3d48d926515b7dde46acdbcaa0
Add an option that when passed, will disable hardening options, and pass `--disable-hardening` through to configure. Due to the way we link libssp for Windows builds, they now fail (after #27118), if building with depends, and configuring with --disable-hardening. See: bitcoin/bitcoin#27118 (comment). This change would add a depends opiton such that, if someone wants to build with, for windows, without hardening, they can do so. This may also be useful when building for debugging.
Add an option that when passed, will disable hardening options, and pass `--disable-hardening` through to configure. Due to the way we link libssp for Windows builds, they now fail (after bitcoin#27118), if building with depends, and configuring with --disable-hardening. See: bitcoin#27118 (comment). This change would add a depends opiton such that, if someone wants to build with, for windows, without hardening, they can do so. This may also be useful when building for debugging.
Add an option that when passed, will disable hardening options, and pass `--disable-hardening` through to configure. Due to the way we link libssp for Windows builds, they now fail (after bitcoin#27118), if building with depends, and configuring with --disable-hardening. See: bitcoin#27118 (comment). This change would add a depends opiton such that, if someone wants to build with, for windows, without hardening, they can do so. This may also be useful when building for debugging.
Add an option that when passed, will disable hardening options, and pass `--disable-hardening` through to configure. Due to the way we link libssp for Windows builds, they now fail (after #27118), if building with depends, and configuring with --disable-hardening. See: bitcoin/bitcoin#27118 (comment). This change would add a depends opiton such that, if someone wants to build with, for windows, without hardening, they can do so. This may also be useful when building for debugging.
Add an option that when passed, will disable hardening options, and pass `--disable-hardening` through to configure. Due to the way we link libssp for Windows builds, they now fail (after #27118), if building with depends, and configuring with --disable-hardening. See: bitcoin/bitcoin#27118 (comment). This change would add a depends opiton such that, if someone wants to build with, for windows, without hardening, they can do so. This may also be useful when building for debugging.
Use
FORTIFY_SOURCE=3
when building libevent in depends. I've upstreamed a change to switch libevent from using =2 to =3 as well: libevent/libevent#1418.Solves half of #27038, by giving us some fortified funcs in
bitcoin-cli
.