-
Notifications
You must be signed in to change notification settings - Fork 38.7k
build: disable BIP70 support by default #15584
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
Conversation
713fe4a to
1a8624a
Compare
|
Concept ACK
|
|
So is this removing BIP70 from the release as well? I'm reluctant to turn it off for developers by default while still shipping it. At minimum Travis should continue to check it in that case. But even then, GUI test coverage is too low to rely on that. |
Not for the release but for the gitian built binaries. We could re-add the BIP70 support to the gitian build. But as this is, it will disable BIP70 in gitian. |
|
I would recommend holding off on disabling support for BIP70 for release binaries until all major merchant processors have stopped requiring it. Dropping BIP70 support before the merchant payment processors stop requiring it would incentivize users to switch to less secure wallets that have BIP70 implementations with known unpatched vulnerabilities. I would instead recommend making the deprecation warning more aggressive, maybe add to the deprecation warning that it's recommended users contact/inform the merchant that they are using an deprecated and insecure protocol. Unfortunately the largest merchant payment processor that requires BIP70 is still publishing misinformation in regards to the security of BIP70(such as disproven claims that BIP70 improves protection against MITM attacks) so it may be necessary in the deprecation warning to indicate that merchants should not be trusted to provide accurate information about BIP70 and that users should not follow any merchant recommendations to switch wallets. |
|
@jameshilliard Do any merchants require BIP70 at this point? (A particular payment processor claims it does, but AFAIK their implementation is broken and already doesn't work with Core.) |
Well Core can make payments to that particular processor, the incompatible/non-standard part of their implementation introduces an unfixed security vulnerability but it doesn't seem to affect the ability to send payments(due to the incompatible/non-standard part being after the payment is broadcast by Core to the network). My worry is that prematurely removing BIP70 in Core would result in users switching to vulnerable wallets when they see the error message indicating they can't make a payment. Having a warning message encourage users to complain to the merchant about using a deprecated/insecure protocol on the other hand would help increase their support costs for processing BIP70 transactions which is the main reason they refuse to fix their security vulnerability or support BIP21. The idea is essentially to have the warning make their support costs for BIP21 lower than their BIP70 support costs by increasing merchant/customer complaints and support costs for BIP70. |
|
Hate to say it, but we should probably do a release with something like #15064 before disabling BIP70 by default... :/ |
|
The following sections might be updated with supplementary metadata relevant to reviewers and maintainers. ConflictsNo conflicts as of last run. |
1a8624a to
c53da7c
Compare
|
ACK for 0.19.0 |
|
Concept ACK |
|
ACK c53da7c5f166a95f3ae37f817f8cd7b94812077a Tested that a build with the default configure does not download BIP 70 requests. |
|
Gitian builds for commit 00dad5e (master):
Gitian builds for commit 991b570e11fc3a18bb65267de19628723b248ba5 (master and this pull):
|
a3fb456 to
e09913f
Compare
Done & rebased. Also added a commit to specify Protobuf as optional in the build docs. |
|
I think we need something like #16858 before merging this so that users don't switch to BIP70 compatible wallets with insecure BIP70 implementations. |
|
@jameshilliard I agree that would be nice to have, but I don't personally think that's enough reason to make this miss the 0.19 deadline. |
|
ACK e09913f Read the autotools changes. awesome that this removes the protobuf requirement. One thing i'm not sure I get is the change to the |
protobuf is still required when BIP70 is compiled and was never required when BIP70 is not compiled.
While we disable it by default, the option still exists and at least one ci config should build it |
|
ACK e09913f -- diff looks correct Smaller attack surface is better! |
e09913f doc: specify protobuf as optional in build docs (fanquake) 376f492 build: disable BIP70 support by default (fanquake) Pull request description: Disable BIP70 support in the GUI by default for `0.19.0` (for eventual removal in `0.20.0`?). Users who want to compile with BIP70 support enabled can pass `--enable-bip70` to `./configure`. I've inverted the current `--disable-bip70` test to instead pass `--enable-bip70`. Tested configurations on `macOS` (`protobuf` installed with `brew`). Protobuf available and `./configure`: ``` Options used to compile and link: with wallet = yes with gui / qt = yes with bip70 = no ``` Protobuf available and `./configure --enable-bip70`: ``` Options used to compile and link: with wallet = yes with gui / qt = yes with bip70 = yes ``` Protobuf not available (i.e `brew unlink protobuf`) and `./configure`: ``` Options used to compile and link: with wallet = yes with gui / qt = yes with bip70 = no ``` Protobuf not available and `./configure --enable-bip70`: ``` checking whether to build test_bitcoin-qt... yes checking whether to build BIP70 support... configure: error: protobuf missing ``` TODO: - [x] Remove `protobuf` from other Travis builds - [ ] Documentation updates (mention that `protobuf` is now optional)? - [ ] Could split release notes into GUI and build ACKs for top commit: laanwj: ACK e09913f elichai: ACK e09913f Read the autotools changes. awesome that this removes the protobuf requirement. practicalswift: ACK e09913f -- diff looks correct Tree-SHA512: 7bf87ae8555e24db2da2e89cc4d4e90d09be27499ad386ad65879d05df8f96d9a1384379891ac8963d17728c90e55961560813df97e849e631e2de8c08e210c8
e09913f doc: specify protobuf as optional in build docs (fanquake) 376f492 build: disable BIP70 support by default (fanquake) Pull request description: Disable BIP70 support in the GUI by default for `0.19.0` (for eventual removal in `0.20.0`?). Users who want to compile with BIP70 support enabled can pass `--enable-bip70` to `./configure`. I've inverted the current `--disable-bip70` test to instead pass `--enable-bip70`. Tested configurations on `macOS` (`protobuf` installed with `brew`). Protobuf available and `./configure`: ``` Options used to compile and link: with wallet = yes with gui / qt = yes with bip70 = no ``` Protobuf available and `./configure --enable-bip70`: ``` Options used to compile and link: with wallet = yes with gui / qt = yes with bip70 = yes ``` Protobuf not available (i.e `brew unlink protobuf`) and `./configure`: ``` Options used to compile and link: with wallet = yes with gui / qt = yes with bip70 = no ``` Protobuf not available and `./configure --enable-bip70`: ``` checking whether to build test_bitcoin-qt... yes checking whether to build BIP70 support... configure: error: protobuf missing ``` TODO: - [x] Remove `protobuf` from other Travis builds - [ ] Documentation updates (mention that `protobuf` is now optional)? - [ ] Could split release notes into GUI and build ACKs for top commit: laanwj: ACK e09913f elichai: ACK e09913f Read the autotools changes. awesome that this removes the protobuf requirement. practicalswift: ACK e09913f -- diff looks correct Tree-SHA512: 7bf87ae8555e24db2da2e89cc4d4e90d09be27499ad386ad65879d05df8f96d9a1384379891ac8963d17728c90e55961560813df97e849e631e2de8c08e210c8
…IP70 URI. 1153caf Qt: advise users not to switch wallets when opening a BIP70 URI. (James Hilliard) Pull request description: It would probably be a good idea to have something like this before #15584 is merged. ACKs for top commit: jonasschnelli: utACK 1153caf fanquake: ACK 1153caf Tree-SHA512: 6e682dd280c44eaafb1206c32439df42a20173c33297bf93dd607f0a7a2faec8e2d17fff83c85027083ebd11a71795b443e707992251574370dd1d46b7bff060
107e030 build: make protobuf optional in depends (fanquake) ff6122f doc: clarify protobuf build requirements (fanquake) Pull request description: As mentioned by dongcarl in #15584 (comment), make building `protobuf` optional in depends. With this change it will only be built if you pass `PROTOBUF=1`. ACKs for top commit: laanwj: code review ACK 107e030 Sjors: tACK 107e030 on macOS 10.14. When I build depends with `PROTOBUF=1` then `./configure` has `bip70` enabled. Tree-SHA512: 49bc247a6879aaf55b943a3d0b930544ddef1e69a481955a8bebe0b02c9ad0fe168b93025f34168334cef34bb567478eb98eacab62ba909f2f64fb21119c71b8
…ing a BIP70 URI. 1153caf Qt: advise users not to switch wallets when opening a BIP70 URI. (James Hilliard) Pull request description: It would probably be a good idea to have something like this before bitcoin#15584 is merged. ACKs for top commit: jonasschnelli: utACK 1153caf fanquake: ACK 1153caf Tree-SHA512: 6e682dd280c44eaafb1206c32439df42a20173c33297bf93dd607f0a7a2faec8e2d17fff83c85027083ebd11a71795b443e707992251574370dd1d46b7bff060
107e030 build: make protobuf optional in depends (fanquake) ff6122f doc: clarify protobuf build requirements (fanquake) Pull request description: As mentioned by dongcarl in bitcoin#15584 (comment), make building `protobuf` optional in depends. With this change it will only be built if you pass `PROTOBUF=1`. ACKs for top commit: laanwj: code review ACK 107e030 Sjors: tACK 107e030 on macOS 10.14. When I build depends with `PROTOBUF=1` then `./configure` has `bip70` enabled. Tree-SHA512: 49bc247a6879aaf55b943a3d0b930544ddef1e69a481955a8bebe0b02c9ad0fe168b93025f34168334cef34bb567478eb98eacab62ba909f2f64fb21119c71b8
|
@gmaxwell wrote a thoughtful comment on reddit explaining some of the motives behind this decision and the issues surrounding BIP 70. I thought it would be useful to copy this here for future reference:
|
Disable BIP70 support in the GUI by default for
0.19.0(for eventual removal in0.20.0?).Users who want to compile with BIP70 support enabled can pass
--enable-bip70to./configure.I've inverted the current
--disable-bip70test to instead pass--enable-bip70.Tested configurations on
macOS(protobufinstalled withbrew).Protobuf available and
./configure:Protobuf available and
./configure --enable-bip70:Protobuf not available (i.e
brew unlink protobuf) and./configure:Protobuf not available and
./configure --enable-bip70:TODO:
protobuffrom other Travis buildsprotobufis now optional)?