`@bsv/wallet-toolbox` / `-client` / `-mobile` don't verify storage-supplied recipient output scripts against caller-requested outputs in createAction (can redirect payments when using remote storage)
`@bsv/wallet-toolbox` provides BRC-100 wallet signing and storage components, while `@bsv/wallet-toolbox-client` and `@bsv/wallet-toolbox-mobile` provide client-focused distributions for standard and mobile applications using wallet storage services. A vulnerability in these packages causes transactions created through a remote `StorageClient` to trust output locking scripts returned by the storage provider without verifying that they match the outputs requested by the caller. A malicious or compromised storage provider can substitute a recipient script or inject an additional output, causing the wallet to sign and broadcast a transaction that redirects funds while the application and user interface continue to display the intended recipient. Source and npm publication history indicate that stable versions `@bsv/wallet-toolbox` and `@bsv/wallet-toolbox-client` from 1.1.47 through 2.3.3, and `@bsv/wallet-toolbox-mobile` from its initial 1.3.21 release through 2.3.3, are affected. All three packages are patched in version 2.4.0. Applications unable to upgrade should avoid remote `StorageClient` providers, use local storage, or independently verify every transaction output’s locking script and value against the original request before signing
- Products
- Not specified
- Affected versions
- Not specified
- Fixed versions
- Not specified
- CVEs
- CVE-2026-56744
- Confirmed fixed CVEs
- Not specified
- Updated in this feed
- 3 Nov 2026, 04:44 UTC · Revision 1
Source evidence
`@bsv/wallet-toolbox` / `-client` / `-mobile` don't verify storage-supplied recipient output scripts against caller-requested outputs in createAction (can redirect payments when using remote storage)
core-osv · Original sourcePublished 24 Sept 2026, 16:56 UTC
`@bsv/wallet-toolbox` provides BRC-100 wallet signing and storage components, while `@bsv/wallet-toolbox-client` and `@bsv/wallet-toolbox-mobile` provide client-focused distributions for standard and mobile applications using wallet storage services. A vulnerability in these packages causes transactions created through a remote `StorageClient` to trust output locking scripts returned by the storage provider without verifying that they match the outputs requested by the caller. A malicious or compromised storage provider can substitute a recipient script or inject an additional output, causing the wallet to sign and broadcast a transaction that redirects funds while the application and user interface continue to display the intended recipient. Source and npm publication history indicate that stable versions `@bsv/wallet-toolbox` and `@bsv/wallet-toolbox-client` from 1.1.47 through 2.3.3, and `@bsv/wallet-toolbox-mobile` from its initial 1.3.21 release through 2.3.3, are affected. All three packages are patched in version 2.4.0. Applications unable to upgrade should avoid remote `StorageClient` providers, use local storage, or independently verify every transaction output’s locking script and value against the original request before signing
osv:CVE-2026-56744
Complete source record
{
"id": "a96294a3e90eefa3272e29c142f2e5d7825f10639ba95fc26b56d1aa25727ca5",
"url": "https://osv.dev/vulnerability/CVE-2026-56744",
"method": "structured",
"payload": {
"kind": "advisory",
"title": "`@bsv/wallet-toolbox` / `-client` / `-mobile` don't verify storage-supplied recipient output scripts against caller-requested outputs in createAction (can redirect payments when using remote storage)",
"summary": "`@bsv/wallet-toolbox` provides BRC-100 wallet signing and storage components, while `@bsv/wallet-toolbox-client` and `@bsv/wallet-toolbox-mobile` provide client-focused distributions for standard and mobile applications using wallet storage services. A vulnerability in these packages causes transactions created through a remote `StorageClient` to trust output locking scripts returned by the storage provider without verifying that they match the outputs requested by the caller. A malicious or compromised storage provider can substitute a recipient script or inject an additional output, causing the wallet to sign and broadcast a transaction that redirects funds while the application and user interface continue to display the intended recipient. Source and npm publication history indicate that stable versions `@bsv/wallet-toolbox` and `@bsv/wallet-toolbox-client` from 1.1.47 through 2.3.3, and `@bsv/wallet-toolbox-mobile` from its initial 1.3.21 release through 2.3.3, are affected. All three packages are patched in version 2.4.0. Applications unable to upgrade should avoid remote `StorageClient` providers, use local storage, or independently verify every transaction output’s locking script and value against the original request before signing",
"evidence": "osv:CVE-2026-56744",
"products": [],
"severity": "high",
"structured": {
"id": "CVE-2026-56744",
"aliases": [
"CVE-2026-56744",
"GHSA-36f9-7rg5-cpf8"
],
"metrics": [
{
"type": "CVSS_V4",
"score": "CVSS:4.0/AV:N/AC:L/AT:N/PR:N/UI:N/VC:N/VI:H/VA:N/SC:N/SI:N/SA:N"
}
],
"affected": [
{
"ranges": [
{
"repo": "https://github.com/bsv-blockchain/ts-stack",
"type": "GIT",
"events": [
{
"introduced": "0"
},
{
"fixed": "3a11f6111919245a3090e9f3895cfc4f21a80d28"
},
{
"fixed": "5492cabbef4ddc7f60cc49cdf5d8c74ed2e5d949"
},
{
"fixed": "5ee60395e78e8b822d9a78efeacc6039c249819b"
}
],
"database_specific": {
"extracted_events": [
{
"range": [
{
"fixed": "3a11f6111919245a3090e9f3895cfc4f21a80d28"
}
],
"source": "REFERENCES_COMMIT"
},
{
"range": [
{
"fixed": "5492cabbef4ddc7f60cc49cdf5d8c74ed2e5d949"
}
],
"source": "REFERENCES_COMMIT"
},
{
"range": [
{
"fixed": "5ee60395e78e8b822d9a78efeacc6039c249819b"
}
],
"source": "REFERENCES_COMMIT"
}
]
}
},
{
"repo": "https://github.com/bsv-blockchain/wallet-toolbox",
"type": "GIT",
"events": [
{
"introduced": "0"
},
{
"fixed": "ca651b067c0238cd8b1ddd3af225daa503857a07"
}
],
"database_specific": {
"extracted_events": [
{
"range": [
{
"fixed": "ca651b067c0238cd8b1ddd3af225daa503857a07"
}
],
"source": "REFERENCES_COMMIT"
}
]
}
}
],
"versions": [
"release/v2026-July-3_B",
"release/v2026-July-3",
"release/v2026-July-2",
"release/v2026-July-1",
"release/v2026-June-30_B",
"release/v2026-June-30",
"release/v2026-June-29_B",
"release/v2026-June-29",
"infra/v2026-June-26",
"infra/v2026-June-25",
"release/v2026-june-24_B",
"release/v2026-June-24",
"release/v2026-June-23_B",
"release/v2026-June-23",
"infra/v2026-June-19_E",
"infra/v2026-June-19_D",
"infra/v2026-June-19_C",
"infra/v2026-June-19_B",
"release/v2026-June-19_B",
"infra/v2026-June-19",
"release/v2026-June-16",
"release/v2026-June-10",
"release/v2026-May-28",
"infra/v2026-May-28",
"release/v2026-May-26",
"infra/v2026-May-25_C",
"infra/v2026-May-25_B",
"infra/v2026-May-25",
"release/v2026-May-24_B",
"release/v2026-May-24",
"release/v2026-May-23_B",
"release/v2026-May-23",
"release/v2026-May-22_B",
"infra/v2026-May-22",
"release/v2026-May-22",
"release/v2006-May-20",
"release/v2026-May-18",
"release/v2026-05-18_attempt_4",
"release/v2026-05-18_attempt_3",
"release/v2026-05-18_attempt_2",
"release/v2026-05-18",
"release/v2026-05-17",
"elease/v2026-05-18",
"packages/wallet/wallet-toolbox/v2.1.26",
"packages/wallet/wallet-toolbox/mobile/v2.1.26",
"packages/wallet/wallet-toolbox/client/v2.1.26",
"packages/wallet/ts-wallet-relay/v0.1.1",
"Sonar-Wave-6",
"Sonar-Wave-2",
"Sonar-Wave-1",
"packages/overlays/topics/v1.0.0",
"packages/helpers/fund-wallet/v1.3.1",
"packages/sdk/v2.1.0",
"packages/wallet/wallet-toolbox/v2.1.24",
"first-passing",
"v1.1.46",
"v1.1.45",
"v1.1.44",
"v1.1.43",
"v1.1.42",
"v1.1.41",
"v1.1.40",
"v1.1.39",
"v1.1.38",
"v1.1.37",
"v1.1.36",
"v1.1.35",
"v1.1.34",
"v1.1.33",
"v1.1.32",
"v1.1.31",
"v1.1.30",
"v1.1.29",
"v1.1.28",
"v1.1.27",
"v1.1.25",
"v1.1.24",
"v1.1.23",
"v1.1.22",
"v1.1.21",
"v1.1.20",
"v1.1.19",
"v1.1.18",
"v1.1.17",
"v1.1.15",
"v1.1.7",
"v1.1.5",
"v1.1.4",
"v1.1.3",
"v1.1.1",
"v0.0.40",
"v0.0.39",
"wspub",
"v0.0.38",
"v0.0.37",
"v0.0.36",
"v0.0.35",
"v0.0.34",
"v0.0.32",
"v0.0.31",
"v0.0.30",
"v0.0.29",
"v0.0.28",
"v0.0.27",
"v0.0.26",
"v0.0.25",
"v0.0.24",
"v0.0.23",
"v0.0.22",
"v0.0.19",
"v0.0.18",
"v0.0.17",
"v0.0.16",
"v0.0.12",
"v0.0.11",
"v0.0.10",
"v0.0.9",
"v0.0.8",
"v0.0.7",
"v0.0.6",
"v0.0.5",
"v0.0.4",
"v0.0.3",
"v0.0.2"
],
"database_specific": {
"source": "https://storage.googleapis.com/cve-osv-conversion/osv-output/CVE-2026-56744.json"
}
}
],
"modified": "2026-10-28T02:30:26.067758675Z",
"provider": "osv",
"references": [
"https://github.com/CVEProject/cvelistV5/tree/main/cves/2026/56xxx/CVE-2026-56744.json",
"https://github.com/bsv-blockchain/ts-stack/security/advisories/GHSA-36f9-7rg5-cpf8",
"https://nvd.nist.gov/vuln/detail/CVE-2026-56744",
"https://github.com/bsv-blockchain/ts-stack/commit/3a11f6111919245a3090e9f3895cfc4f21a80d28",
"https://github.com/bsv-blockchain/ts-stack/commit/5492cabbef4ddc7f60cc49cdf5d8c74ed2e5d949",
"https://github.com/bsv-blockchain/ts-stack/commit/5ee60395e78e8b822d9a78efeacc6039c249819b",
"https://github.com/bsv-blockchain/wallet-toolbox/commit/ca651b067c0238cd8b1ddd3af225daa503857a07"
],
"provider_metadata": {
"cwe_ids": [
"CWE-1288"
],
"cna_assigner": "GitHub_M",
"unresolved_ranges": [
{
"extracted_events": [
{
"range": [
{
"introduced": "1.1.47"
},
{
"fixed": "2.4.0"
},
{
"introduced": "1.1.47"
},
{
"fixed": "2.4.0"
},
{
"introduced": "1.3.21"
},
{
"fixed": "2.4.0"
}
],
"source": "AFFECTED_FIELD",
"strategy": "StringRangeExpression"
}
]
},
{
"extracted_events": [
{
"range": [
{
"introduced": "1.1.47"
},
{
"last_affected": "2.3.3"
},
{
"last_affected": "2.3.3"
},
{
"fixed": "2.4.0"
}
],
"source": "DESCRIPTION"
}
]
}
],
"osv_generated_from": "https://github.com/CVEProject/cvelistV5/tree/main/cves/2026/56xxx/CVE-2026-56744.json"
}
},
"related_cves": [
{
"value": "CVE-2026-56744",
"evidence": "/id"
}
],
"security_relevant": true,
"severity_evidence": "/severity/0/score"
},
"source_id": "core-osv",
"document_id": 492460,
"published_at": "2026-09-24T16:56:12.791+00:00"
}