bsv-sdk and bsv-wallet persist unverified certifier signatures in acquire_certificate (direct and issuance paths)
Key facts
- Attack vector
- Network
- Privileges required
- Low
- User interaction
- None
- Attack complexity
- Low
- Impact type
- Security bypass
- Confidentiality · integrity · availability
- High · High · None
- Fix status
- Fixed
Attack profile from CVSS 3.1 · CNA. Fix status from CNA and GitHub. Impact type from CWE-347.
Summary
BSV Ruby SDK is the Ruby SDK for the BSV blockchain. From 0.3.1 to before 0.8.2, BSV::Wallet::WalletClient#acquire_certificate persists certificate records to storage without verifying the certifier's signature over the certificate contents. In acquisition_protocol: 'direct', the caller supplies all certificate fields (including signature:) and the record is written to storage verbatim. In acquisition_protocol: 'issuance', the client POSTs to a certifier URL and writes whatever signature the response body contains, also without verification. An attacker who can reach either API (or who controls a certifier endpoint targeted by the issuance path) can forge identity certificates that subsequently appear authentic to list_certificates and prove_certificate.
Why it matters now
SSVC decision points
CISA ADP · SSVC 2.0.3
- Exploitation
- Poc
- Automatable
- No
- Technical impact
- Total
The decision (Track, Attend, Act) also depends on your mission and well-being impact; see CISA's SSVC guide.
Affected products
| Vendor | Product | Affected versions | Fixed in | Status | Source |
|---|---|---|---|---|---|
| sgbett | bsv-ruby-sdk | 0.3.1 to before 0.8.2 | 0.8.2 | Patch available | CNA |
| sgbett | bsv-sdk | 0.3.1 to before 0.8.2 | 0.8.2 | Patch available | CNA |
| sgbett | bsv-wallet | 0.1.2 to before 0.3.4 | 0.3.4 | Patch available | CNA |
| — | bsv-sdk (RubyGems) | 0.3.1 to before 0.8.2 | 0.8.2 | Patch available | GHSA-hc36-c89j-5f4j |
| — | bsv-wallet (RubyGems) | 0.1.2 to before 0.3.4 | 0.3.4 | Patch available | GHSA-hc36-c89j-5f4j |
- bsv-ruby-sdk Vendorsgbett Affected 0.3.1 to before 0.8.2 Fixed in 0.8.2 Patch available CNA
- bsv-sdk Vendorsgbett Affected 0.3.1 to before 0.8.2 Fixed in 0.8.2 Patch available CNA
- bsv-wallet Vendorsgbett Affected 0.1.2 to before 0.3.4 Fixed in 0.3.4 Patch available CNA
- bsv-sdk (RubyGems) Vendor— Affected 0.3.1 to before 0.8.2 Fixed in 0.8.2 Patch available GHSA-hc36-c89j-5f4j
- bsv-wallet (RubyGems) Vendor— Affected 0.1.2 to before 0.3.4 Fixed in 0.3.4 Patch available GHSA-hc36-c89j-5f4j
Remediation
- Fix · CNA bsv-ruby-sdk (sgbett) Fixed in 0.8.2
- Fix · CNA bsv-sdk (sgbett) Fixed in 0.8.2
- Fix · CNA bsv-wallet (sgbett) Fixed in 0.3.4
- Fix · GHSA-hc36-c89j-5f4j bsv-sdk (RubyGems) Fixed in 0.8.2 Advisory →
- Fix · GHSA-hc36-c89j-5f4j bsv-wallet (RubyGems) Fixed in 0.3.4 Advisory →
Timeline
- 2026-10-02 Threatist record created from CVE-2026-40070
- 2026-10-03 Alias added: GHSA-hc36-c89j-5f4j
References
Other 7
- https://github.com/sgbett/bsv-ruby-sdk/issues/305
- https://github.com/sgbett/bsv-ruby-sdk/pull/306
- https://github.com/sgbett/bsv-ruby-sdk/commit/4992e8a265fd914a7eeb0405c69d1ff0122a84cc
- https://brc.dev/52
- https://github.com/rubysec/ruby-advisory-db/blob/master/gems/bsv-sdk/CVE-2026-40070.yml
- https://github.com/rubysec/ruby-advisory-db/blob/master/gems/bsv-wallet/CVE-2026-40070.yml
- https://github.com/sgbett/bsv-ruby-sdk
Sources
- CVE-2026-40070 · CVE Program
- CVE-2026-40070 · NVD
- FIRST EPSS
- GHSA-hc36-c89j-5f4j · GitHub Advisory Database · CC BY 4.0
This product uses the NVD API but is not endorsed or certified by the NVD. Sources and licences