CVEReports
CVEReports

Automated vulnerability intelligence platform. Comprehensive reports for high-severity CVEs generated by AI.

Product

  • Home
  • Sitemap
  • RSS Feed

Company

  • About
  • Contact
  • Privacy Policy
  • Terms of Service

© 2026 CVEReports. All rights reserved.

Made with love by Amit Schendel & Alon Barad



CVE-2026-40069

CVE-2026-40069: Integrity Verification Failure in BSV Ruby SDK ARC Broadcaster

Alon Barad
Alon Barad
Software Engineer

Apr 10, 2026·6 min read·30 visits

Executive Summary (TL;DR)

A failure-state validation flaw in bsv-sdk's ARC broadcaster allows attackers to spoof successful transaction broadcasts by submitting malformed or orphan transactions, leading to potential financial discrepancies.

The bsv-sdk Ruby package versions 0.1.0 through 0.8.1 contain a high-severity logic flaw in the Application Registry Connector (ARC) broadcaster implementation. The SDK fails to correctly parse terminal failure statuses returned by ARC nodes, causing applications to accept failed or malformed transactions as successfully broadcasted.

Vulnerability Overview

The bsv-sdk library provides Ruby applications with native interfaces to interact with the Bitcoin SV network. A core feature of this SDK is the Application Registry Connector (ARC) broadcaster, which submits serialized transactions to ARC nodes for inclusion in the blockchain mempool.

This SDK is heavily utilized in wallet backends, merchant payment processors, and automated trading platforms. These applications rely on the broadcaster component to confirm whether a transaction has been successfully propagated to the network before updating internal state logic, such as adjusting user balances or fulfilling orders.

CVE-2026-40069 represents a critical integrity validation failure within this transaction broadcasting flow. The vulnerability is classified as CWE-754, representing an improper check for exceptional conditions within the response parser.

Because the SDK's result parser fails to correctly interpret multiple terminal failure states returned by the ARC protocol, it effectively lies to the calling application. The SDK reports failed transactions as successful broadcasts, creating an immediate state divergence between the application's internal ledger and the actual blockchain network.

Root Cause Analysis

The vulnerability stems from an incomplete failure-state predicate within the lib/bsv/network/arc.rb file. When an application submits a transaction via the ARC broadcaster, the protocol returns a JSON response containing a txStatus field and an optional extraInfo field.

The original implementation of the handle_broadcast_response method utilized a narrow, fail-open approach for determining transaction success. The code explicitly checked the txStatus against a limited constant array containing only the values REJECTED and DOUBLE_SPEND_ATTEMPTED.

If the node returned a status that did not exactly match these two strings, the SDK defaulted to treating the response as a successful broadcast. This assumption violates the ARC protocol specification, which defines several other terminal states indicating transaction rejection.

Specific statuses ignored by the SDK include INVALID for script execution failures, MALFORMED for serialization errors, and MINED_IN_STALE_BLOCK. Furthermore, the SDK did not inspect the extraInfo field for the ORPHAN keyword, which indicates the transaction references non-existent parent inputs and cannot be added to the mempool.

Code Analysis

The patch implemented in commit 4992e8a265fd914a7eeb0405c69d1ff0122a84cc addresses the vulnerability by enforcing a fail-closed validation model. The primary change expands the array of rejected statuses.

# Vulnerable Implementation
REJECTED_STATUSES = %w[REJECTED DOUBLE_SPEND_ATTEMPTED].freeze
 
def handle_broadcast_response(response)
  return false if REJECTED_STATUSES.include?(response['txStatus'])
  true
end

The patched implementation explicitly adds INVALID, MALFORMED, and MINED_IN_STALE_BLOCK to the rejection filter. This ensures that standard protocol errors correctly trigger a false return value, preventing the application from trusting failed broadcasts.

# Patched Implementation
REJECTED_STATUSES = %w[
  REJECTED
  DOUBLE_SPEND_ATTEMPTED
  INVALID
  MALFORMED
  MINED_IN_STALE_BLOCK
].freeze
 
def handle_broadcast_response(response)
  return false if REJECTED_STATUSES.include?(response['txStatus'])
  
  has_orphan_status = response['txStatus']&.upcase&.include?('ORPHAN')
  has_orphan_info = response['extraInfo']&.upcase&.include?('ORPHAN')
  
  return false if has_orphan_status || has_orphan_info
  return false if response['txid'].nil?
  
  true
end

The developers also introduced a case-insensitive substring check for the ORPHAN keyword across both relevant response fields. Additionally, the patch includes protocol hardening measures, such as verifying that the txid field is present and correctly populated, and ensuring the HTTP Content-Type header strictly adheres to application/json.

Exploitation and Attack Methodology

Exploitation of CVE-2026-40069 requires the attacker to construct a transaction that is syntactically valid enough to be parsed by the application but functionally invalid according to network consensus rules.

The attacker begins by identifying an application endpoint that accepts raw transaction hex and processes it using a vulnerable version of bsv-sdk. The attacker then crafts an orphan transaction by referencing fictitious inputs, ensuring the transaction will be rejected by the ARC node's mempool validation.

When the application submits this transaction to the ARC node, the node responds with an HTTP 200 OK status, which is standard for many proxy implementations. The response body contains {"txStatus": "SEEN_ON_NETWORK", "extraInfo": "ORPHAN"}.

The vulnerable SDK implementation parses this JSON response. Since SEEN_ON_NETWORK is not in the limited REJECTED_STATUSES array, the SDK returns a success value. The application proceeds to execute its business logic, such as crediting a user account or releasing digital goods, based on a transaction that does not actually exist on the blockchain.

Impact Assessment

The vulnerability carries a CVSS v3.1 base score of 7.5, reflecting a high-severity integrity impact. The confidentiality and availability metrics are scored as None, as the flaw does not expose sensitive data or allow for denial-of-service conditions.

The primary consequence is severe state divergence between the application's internal database and the actual blockchain. Applications relying on the SDK for payment verification are directly exposed to financial loss, as attackers can spoof successful payments without expending valid network assets.

The attack vector is network-based and requires no elevated privileges or user interaction. Any unauthenticated user capable of interacting with the application's transaction submission workflow can trigger the vulnerability.

While no active exploitation has been observed in the wild, the exploitation methodology is straightforward. The regression tests included in the patch repository provide clear instructions on how to simulate the ARC node responses necessary to trigger the flaw.

Remediation Guidance

The definitive remediation for this vulnerability is upgrading the bsv-sdk package to version 0.8.2 or later. This release introduces the required robust failure-state validation and orphan transaction detection.

Developers must update their application dependency configurations to specify the safe version and run the package manager to apply the update. After applying the patch, application server processes must be restarted to ensure the new library code is loaded into memory.

For environments where immediate patching is not possible, developers should implement defensive programming measures around the broadcast functionality. Applications can manually inspect the raw ARC node response, if accessible, to verify the exact txStatus and extraInfo fields before continuing execution.

Alternatively, applications can introduce a secondary validation step. After broadcasting the transaction, the application can query a trusted block explorer or a direct node RPC interface to confirm the transaction's presence in the mempool before executing state-altering business logic.

Official Patches

GitHubv0.8.2 Release Notes

Fix Analysis (1)

Technical Appendix

CVSS Score
7.5/ 10
CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:H/A:N

Affected Systems

bsv-sdk Ruby package versions 0.1.0 through 0.8.1Wallet backends utilizing ARC broadcast functionalityMerchant payment gateways integrating bsv-sdk

Affected Versions Detail

Product
Affected Versions
Fixed Version
bsv-sdk
SGBETT
>= 0.1.0, < 0.8.20.8.2
AttributeDetail
CWE IDCWE-754
CVSS Score7.5
Attack VectorNetwork
Integrity ImpactHigh
Exploit StatusPoC
KEV ListedFalse

MITRE ATT&CK Mapping

T1190Exploit Public-Facing Application
Initial Access
CWE-754
Improper Check for Unusual or Exceptional Conditions

Improper Check for Unusual or Exceptional Conditions

Vulnerability Timeline

Vulnerability identified during compliance review (Finding F5.13)
2026-04-08
Patch developed and merged into the main repository
2026-04-08
Security hotfix release (v0.8.2) published
2026-04-08
CVE-2026-40069 and GHSA-9hfr-gw99-8rhx publicly disclosed
2026-04-09

References & Sources

  • [1]GitHub Security Advisory GHSA-9hfr-gw99-8rhx
  • [2]Pull Request #306
  • [3]Issue #305

Attack Flow Diagram

Press enter or space to select a node. You can then use the arrow keys to move the node around. Press delete to remove it and escape to cancel.
Press enter or space to select an edge. You can then press delete to remove it or escape to cancel.

More Reports

•21 minutes ago•CVE-2026-104890
7.2

CVE-2026-104890: Remote Code Execution via Mixed-Case File Upload Bypass in Kunstmaan CMS MediaBundle

Kunstmaan CMS MediaBundle prior to version 7.3.2 contains a critical file upload vulnerability where case-sensitive extension checks can be bypassed using mixed-case file extensions. Because extension normalization occurs after the validation routine, files with mixed-case executable extensions (such as pHp) bypass checks but are stored with normalized lowercase executable extensions, allowing authenticated administrators to achieve remote code execution.

Amit Schendel
Amit Schendel
4 views•6 min read
•about 1 hour ago•CVE-2026-106443
8.8

CVE-2026-106443: Remote Code Execution in WeasyPrint via Unvalidated Pillow EPS Processing

A critical remote code execution vulnerability was identified in WeasyPrint prior to version 70.0. When compiling HTML containing a malicious Encapsulated PostScript (EPS) graphic on a host with Ghostscript installed, Pillow invokes Ghostscript to process the image, executing arbitrary PostScript commands.

Amit Schendel
Amit Schendel
4 views•8 min read
•about 2 hours ago•CVE-2026-106489
6.5

CVE-2026-106489: Authorization Bypass via Path Traversal in Spotify Backstage TechDocs Backend

An authorization bypass vulnerability in the Spotify Backstage TechDocs backend plugin allows authenticated attackers with access to at least one valid TechDocs site to read arbitrary static documentation from other entities. This occurs due to un-sanitized relative subpaths passing directly to external storage drivers.

Alon Barad
Alon Barad
7 views•7 min read
•about 3 hours ago•CVE-2026-106502
5.3

CVE-2026-106502: Sensitive Information Exposure in Backstage Scaffolder Backend

The @backstage/plugin-scaffolder-backend package prior to version 4.1.0 is vulnerable to sensitive information exposure in Scaffolder task failure events. Under specific template and failure conditions, an authenticated user can retrieve backend-managed credentials, such as VCS access tokens and API keys, from affected task execution events and stored database logs. This vulnerability has been remediated in version 4.1.0 of the package and is bundled with the Backstage platform release v1.54.6.

Amit Schendel
Amit Schendel
7 views•6 min read
•about 4 hours ago•CVE-2026-61436
8.6

CVE-2026-61436: Missing Webhook Signature Verification in PraisonAI AgentMail Endpoint

A critical security flaw exists in PraisonAI before version 4.6.78 when operating in AgentMail webhook mode. The application processes incoming POST requests without checking for cryptographic signatures, allowing unauthenticated attackers to forge emails, spoof identities, and force AI agents to execute unauthorized operations.

Amit Schendel
Amit Schendel
8 views•7 min read
•about 5 hours ago•CVE-2026-62179
6.5

CVE-2026-62179: Missing Authorization in praisonai-platform Dependency Deletion Route

A missing authorization vulnerability (CWE-862) exists in praisonai-platform versions prior to 0.1.9, allowing low-privileged workspace members to delete planning dependencies on issues owned by administrators by routing the deletion request through an attacker-owned issue.

Amit Schendel
Amit Schendel
7 views•6 min read