
Find real vulnerabilities before they ship
The bitcoinj library is a Java implementation of the Bitcoin protocol. Prior to 0.17.1, ScriptExecution.correctlySpends() contains two fast-path verification bugs for standard P2PKH and native P2WPKH spends in core/src/main/java/org/bitcoinj/script/ScriptExecution.java. In both branches, bitcoinj verifies an attacker-controlled signature/public-key pair but fails to verify that the public key is the one committed to by the output being spent. As a result, any attacker keypair can satisfy bitcoinj's local verification for arbitrary P2PKH and P2WPKH outputs. This vulnerability is fixed in 0.17.1.
Base Score
7.5| Package (Ecosystem) | Introduced | Fixed | Limit |
|---|---|---|---|
| org.bitcoinj:bitcoinj-core(Maven) | 0.15 | 0.17.1 | N/A |
| Base Score | 7.5 |
|---|---|
| Vector String | CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:H/A:N |
| Base Severity | High |
| Version | 3.1 |
| Attack Vector (AV) | NETWORK |