Attack ChainAIDerived
Hypothetical attack flow derived from CVE metadata – not a confirmed exploit chain
-
AccessObtain valid NWC connection to target wallet
-
DeliverySend concurrent pay_invoice requests (or repeated sub-satoshi msat invoices)
-
ExploitPass budget_allows_spend() before add_to_budget() / floor msat to sat
-
ExecutionExecute lightning payments exceeding daily_limit_sat
-
ImpactDrain wallet funds beyond configured limit
Vulnerability Assessment
| Weakness |
CWE
ASVS 5.0
V15 - Secure Coding and Architecture TOCTOU prevention
|
| Exploitation Conditions | Exploitation requires all of: (1) the built-in Nostr Wallet Connect plugin is enabled - it is default-disabled; (2) a daily_limit_sat is configured (that limit is exactly what is bypassed); (3) the attacker controls a client holding a valid NWC connection that the user issued; and (4) Electrum version in the range 4.6.0 ≤ x < 4.7.2. Two concrete trigger paths exist: the race path needs two or more pay_invoice requests sent concurrently on the same connection so both pass budget_allows_spend() before add_to_budget() runs, and the truncation path needs repeated zero-amount invoices specifying sub-satoshi millisatoshi amounts (e.g. amount=1999 msat) that invoice.get_amount_sat() floors to a smaller whole-sat figure. Limiting factors that reduce real-world risk: the plugin is off by default, a valid user-granted NWC connection is mandatory, and the attack only matters when the connected client is untrusted (e.g. a paid billing service) rather than a trusted app such as Amethyst; the race path also depends on winning a concurrency window, though the truncation path is deterministic. |
| Impact | The vendor CVSS 4.0 base score is 9.3 (Critical) with AV:N/AC:L/AT:N/PR:N/UI:N and VC:H/VI:H/VA:H, and vuln.today assigns the decision label act_now, so on paper this is top-priority. However the signals should be read against the actual mechanism. This is CWE-367 (TOCTOU) - a daily spending-limit bypass in the built-in Nostr Wallet Connect (NWC) plugin - and three facts temper the raw score: (1) the NWC plugin is a default-disabled built-in plugin, so only wallets that explicitly enabled it and configured a daily_limit_sat are exposed; (2) exploitation fundamentally requires the attacker to already hold a valid, user-issued NWC connection, which is an authorization precondition the vendor's PR:N does not reflect - I assess PR:L; and (3) the vendor rates confidentiality VC:H, but this flaw causes unauthorized spending (loss of funds), not data disclosure, so confidentiality impact is realistically None and the true impact is integrity/availability of wallet funds. No CISA KEV listing and no EPSS score are present in the input, and no active exploitation is claimed, so the act_now label is driven by patch availability plus direct financial impact rather than by observed in-the-wild activity. Net: a genuine, patch-now financial-integrity bug for the specific population running the NWC plugin with an untrusted client, but the blast radius is narrower than the unauthenticated 9.3 implies - verify the PR:N vs PR:L discrepancy and the VC:H rating against the vendor advisory. |
| Exploit ScenarioDerived | An untrusted but validly connected NWC client - for example a paid on-demand billing service like ppq.ai that the user authorized - fires two concurrent pay_invoice requests of 1000 sat each against a wallet configured with daily_limit_sat=1000; both requests pass budget_allows_spend() before either call to add_to_budget() runs, so 2000 sat is spent. Alternatively the client repeatedly pays zero-amount invoices specifying amount=1999 msat, which the budget logic floors to 1 sat while actually spending ~2 sat, slowly draining funds past the configured policy. No packaged exploit tool is referenced in the input, but the vendor GHSA advisory publicly documents step-by-step reproduction for both bypass techniques. |
Get an e-mail when this CVE is exploited, patched or re-scored. Free account.
Alert meAnalysisAIv1 – Oct 28, 2026
Electrum's built-in Nostr Wallet Connect plugin can be driven past the user's configured daily_limit_sat, letting an untrusted or compromised NWC client spend more of the wallet's Lightning balance than policy allows. All versions from 4.6.0 (where the plugin was introduced) through 4.7.1 are affected; 4.7.2 is the fixed release. Two trigger paths exist: concurrent pay_invoice requests that both clear budget_allows_spend() before add_to_budget() records the spend (CWE-367), and repeated sub-satoshi millisatoshi amounts that are floored to a smaller whole-satoshi figure during budget accounting. Exploitation requires an authenticated NWC connection issued by the user, the plugin enabled (it ships default-disabled) and a spending limit configured; no public exploit identified at time of analysis, and the vuln.today decision label is act_now.
RemediationAI
Vendor-released patch: upgrade to Electrum 4.7.2, which the advisory states fully fixes both issues; the race bypass is fixed in commit 5222374046d2a92da371d46c79ce0e61e7e2a42d (budget reserved before payment, with remove_from_budget rollback on failure) and the millisatoshi truncation in commit 3956bff0684f6060fbe8c823c3ee921928cdcaa5 (see https://github.com/spesmilo/electrum/security/advisories/GHSA-q7m2-785w-r585). Where upgrading is not immediately possible, the exposure can be removed by disabling the Nostr Wallet Connect plugin - it is default-disabled, and with it off no NWC server is listening and no budget logic is reachable, at the cost of losing NWC functionality entirely. Because the attack requires a client holding a valid connection, revoking NWC connections paired with untrusted or on-demand billing services (the advisory's ppq.ai-style use case is explicitly in scope, whereas a trusted client such as Amethyst is considered unlikely to attack the server) limits who can trigger either path, but does not fix the underlying check/update race or the sat rounding. Note that the advisory frames untrusted clients as the realistic threat model and that a crash or shutdown between reservation and payment completion affects budget deduction under the new code path.
Affected VersionsENISA
Affected Packages
Source: OSV (Open Source Vulnerabilities)
Affects your stack
Affects 1 package in euvd
Checking this CVE against your own stacks and servers is part of the Basic plan and up.
Technical ContextAI · show details
Nostr Wallet Connect (NIP-47) is implemented in Electrum as a built-in plugin (electrum/plugins/nwc/nwcserver.py) that runs an NWC server able to initiate Lightning payments on the user's behalf for a paired client, tracking spend against a configured daily_limit_sat. The root cause is class CWE-367, time-of-check/time-of-use: budget_allows_spend() is evaluated, the payment is attempted, and only afterwards is the amount appended to the per-connection budget_spends list by add_to_budget(); because the server spawns a task per request, two pay_invoice calls on the same connection can both pass the check before either records its spend. Independently, amount conversion in electrum/invoices.py floors millisatoshi amounts to whole satoshis for budget accounting, so a payment of 1999 msat is charged as 1 sat against the limit while 1.999 sat actually leaves the wallet - a deterministic bypass that repeats indefinitely. The upstream fix (a) reserves the budget before starting the payment by calling add_to_budget() up front, (b) introduces remove_from_budget() to roll the reservation back when a payment fails (the commit notes that a shutdown or crash before payment completion leaves the item undeducted even if HTLCs later fail on wallet restart), and (c) is paired with a second commit correcting the msat-to-sat truncation. The vendor scores the issue 9.3 under CVSS 4.0 (AV:N/AC:L/AT:N/PR:N/UI:N, VC:H/VI:H/VA:H); the independent assessment is CVSS 3.1 AV:N/AC:L/PR:L/UI:N/S:U/C:N/I:H/A:H, treating the required user-granted NWC connection as a privilege prerequisite rather than none.
Know when Electrum gets its next vulnerability
- Watch products and get an email when something new is published
- Check this CVE against your own stack and servers
- Exploit and PoC references, threat intelligence from 22 sources
No credit card · 7-day full trial
Severity by source
CVSS:4.0/AV:N/AC:L/AT:N/PR:N/UI:N/VC:H/VI:H/VA:H/SC:N/SI:N/SA:N
Attacker must hold a valid user-issued NWC connection (PR:L); the msat-truncation path is network-reachable and deterministic (AV:N/AC:L); impact is unauthorized spending of funds (I:H/A:H) with no data disclosure (C:N).
Primary rating from Vendor (VulnCheck).
CVSS VectorVendor: VulnCheck
DescriptionCVE.org
Electrum before 4.7.2 contains a spending limit bypass vulnerability in the Nostr Wallet Connect plugin that allows malicious NWC clients to exceed daily_limit_sat by exploiting non-atomic budget checks and millisatoshi truncation. Attackers can send concurrent pay_invoice requests that pass budget_allows_spend() before add_to_budget() runs, or repeatedly pay msat amounts that are floored to whole satoshis, to drain funds beyond the limit.
Technical POC Analysis
The vulnerable code is in electrum/plugins/nwc/nwcserver.py, in the Nostr Wallet Connect plugin.
Full technical POC analysis - root cause, step-by-step exploitation and patch breakdown - is part of the Pro and Business plans.
Executive ViewAI
Electrum versions 4.6.0 through 4.7.1 contain a critical flaw in the Nostr Wallet Connect plugin that can bypass configured daily spending limits, allowing a connected NWC client to overspend the Lightning wallet. This affects organizations using Electrum with NWC enabled and spending limits set, potentially leading to unauthorized fund transfers that could disrupt financial operations and customer trust. Leadership should prioritize patching to 4.7.2 to meet the act_now directive.
Apply vendor patch.
Threat Intelligence Overview
How this decision was reached
The engine reads each signal below and applies a fixed list of rules from top to bottom. The first rule that matches sets the recommended action – like a statement, every line is shown.
What every action level means
SSVC AssessmentENISA
Priority Score
Attack Technique
Authentication bypass attacks exploit flaws in the verification mechanisms that control access to systems and applications.
The Python console in Electrum through 2.9.4 and 3.x through 3.0.5 supports arbitrary Python code without considering (1
Electrum wallets before 4.8.3 can be tricked into replacing a just-broadcast Bitcoin transaction with a conflicting inva
Local code execution in Electrum 4.6.0 through 4.7.1 stems from an authorization bypass in the external plugin loader: a
paymentrequest.py in Electrum before 4.2.2 allows a file:// URL in the r parameter of a payment request (e.g., within QR
Electrum Technologies GmbH Electrum Bitcoin Wallet version prior to version 3.0.5 contains a Missing Authorization vulne
EUVD-2026-110852
GHSA-98mp-7r7x-725c
NVD
CVE.org
EPSS
Exploit-DB