Skip to content
Threat Feed
medium advisory

Transaction Recipient Substitution Vulnerability in @bsv/wallet-toolbox

A vulnerability (CVE-2026-56744) in @bsv/wallet-toolbox and related packages allows a compromised or malicious storage provider to silently substitute transaction recipient scripts, causing funds to be sent to attacker-controlled addresses.

CVE search metadata

CVE search record: CVE-2026-56744. KEV: no. Product: @bsv/wallet-toolbox (< 2.4.0), @bsv/wallet-toolbox-client (< 2.4.0), @bsv/wallet-toolbox-mobile (< 2.4.0). Brief: Transaction Recipient Substitution Vulnerability in @bsv/wallet-toolbox. Brief link: https://feed.craftedsignal.io/briefs/2026-09-bsv-wallet-toolbox-vulnerability/

A critical integrity vulnerability (CVE-2026-56744) exists in the @bsv/wallet-toolbox, @bsv/wallet-toolbox-client, and @bsv/wallet-toolbox-mobile packages. The flaw stems from an insufficient validation process during transaction construction within the createAction workflow. When using a remote StorageClient, the wallet fetches transaction outputs from the storage server; however, the buildSignableTransaction method fails to compare the returned lockingScript against the outputs originally requested by the application. Consequently, a malicious storage provider can substitute the intended recipient's script with one under their control. The wallet signs this modified transaction, and the UI provides no indication of the swap. This vulnerability impacts all versions of these packages between 1.x and 2.3.x. The attack is specific to the storage operator or entities with access to the storage infrastructure, as the storage server's identity is verified via mutual authentication.

Attack Chain

  1. Attacker establishes or compromises a remote storage server used by the target wallet client.
  2. Victim initiates a payment request within the wallet application specifying a legitimate recipient.
  3. The wallet client sends a request to the storage server to build the transaction.
  4. The malicious storage server intercepts the request and generates a transaction response containing an attacker-controlled lockingScript instead of the one requested by the caller.
  5. The wallet client's buildSignableTransaction function retrieves the attacker-provided lockingScript from the storage response.
  6. The client fails to perform a validation check against the original requested outputs and proceeds to sign the modified transaction.
  7. The wallet broadcasts the signed transaction, transferring funds to the attacker-controlled address while maintaining the original intended address in the UI.

Impact

Successful exploitation results in the unauthorized transfer of funds to attacker-controlled addresses. Because the wallet UI continues to display the original intended recipient, the fraud remains hidden from the victim during and after the transaction process. The vulnerability affects all users relying on remote storage configurations, particularly those using the default storage.babbage.systems infrastructure if the operator is compromised or malicious.

Recommendation

  1. Upgrade all instances of @bsv/wallet-toolbox, @bsv/wallet-toolbox-client, and @bsv/wallet-toolbox-mobile to version 2.4.0 or higher immediately to address CVE-2026-56744.
  2. Review application logs for any unexpected changes in destination addresses returned by the storage provider if historical incident investigation is required.
  3. Implement strict validation checks in client-side transaction signing logic to ensure that signed outputs strictly match the application-requested outputs before signing.

Immediate actions

Upgrade affected npm packages to version 2.4.0 or later.

IT Operations 24h

Mitigations

Upgrade @bsv/wallet-toolbox, @bsv/wallet-toolbox-client, and @bsv/wallet-toolbox-mobile to version 2.4.0.

immediate IT Operations

CVE-2026-56744

Indicators of compromise

1

domain

TypeValue
domainstorage.babbage.systems