Skip to main content

Electrum CVE-2026-117603

| EUVDEUVD-2026-110852 CRITICAL
Time-of-check Time-of-use (TOCTOU) Race Condition (CWE-367)
2026-10-27 VulnCheck GHSA-98mp-7r7x-725c
9.3
CVSS 4.0 · Vendor: VulnCheck
View

Attack ChainAIDerived

Hypothetical attack flow derived from CVE metadata – not a confirmed exploit chain

  1. Access
    Obtain valid NWC connection to target wallet
  2. Delivery
    Send concurrent pay_invoice requests (or repeated sub-satoshi msat invoices)
  3. Exploit
    Pass budget_allows_spend() before add_to_budget() / floor msat to sat
  4. Execution
    Execute lightning payments exceeding daily_limit_sat
  5. Impact
    Drain 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.

Act Now Prioritize within 24-48h. Why: CRITICAL severity.
Patch available 0.2% exploitation probability (EPSS)

Get an e-mail when this CVE is exploited, patched or re-scored. Free account.

Alert me

AnalysisAIv1 – 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

electrum 0 <4.7.2

Affected Packages

euvd electrum fix: 4.7.2

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

Vendor (VulnCheck) PRIMARY 9.3 CRITICAL
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
vuln.today AI 8.1 HIGH

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).

3.1 AV:N/AC:L/PR:L/UI:N/S:U/C:N/I:H/A:H
4.0 AV:N/AC:L/AT:N/PR:L/UI:N/VC:N/VI:H/VA:H/SC:N/SI:N/SA:N

Primary rating from Vendor (VulnCheck).

CVSS VectorVendor: VulnCheck

Attack Vector
Network
Attack Complexity
Low
Attack Requirements
None
Privileges Required
None
User Interaction
None
Vulnerable system: Confidentiality
High
Vulnerable system: Integrity
High
Vulnerable system: Availability
High
Subsequent system: Confidentiality
None
Subsequent system: Integrity
None
Subsequent system: Availability
None

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

Why It Matters

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.

Business Impact: High
Compensating Controls

Apply vendor patch.

Threat Intelligence Overview

EPSS Score
0.2%
Top 91% exploitable
Prevalence
Medium
popular Bitcoin desktop wallet, but vulnerable NWC plugin is default-disabled
Data Quality
4 sources
Confidence: Medium

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.

SignalValue
Severity CRITICAL
CISA KEV No
Public POC No
EPSS 0.2%
Patch available Yes
Active threat No
Deciding rule
CRITICAL severity
What every action level means
Emergency Immediate action required. Criteria: CRITICAL + in CISA KEV (actively exploited) without patch, OR CRITICAL + EPSS > 30% without patch, OR CRITICAL + active threat signals without patch.
Act Now Prioritize within 24-48h. Criteria: in KEV with patch available, OR CRITICAL + public POC, OR HIGH + EPSS > 10%, OR CRITICAL + active threat, OR any CRITICAL severity.
This Week Schedule remediation this week. Criteria: HIGH severity (CVSS 7.0-8.9). Patch within normal change window.
This Month Plan within 30 days. Criteria: MEDIUM severity (CVSS 4.0-6.9), lower exploitation probability. Include in regular patch cycle.
Monitor Track and reassess. Criteria: LOW severity (CVSS 0.1-3.9), minimal exploitation risk. No immediate action needed.

SSVC AssessmentENISA

SSVC Decision· derived
Scheduled
Exploitation· derived
None
System Exposure· derived
Open
Automatable· derived
Yes
Human Impact
High

Priority Score

46
Low Medium High Critical
KEV: 0
EPSS: 0
CVSS: +46
PoC: 0
Weaponized: 0
Threat intel: 0
Gov advisory: 0

Attack Technique

Authentication bypass attacks exploit flaws in the verification mechanisms that control access to systems and applications.

This site uses cookies essential for authentication and security. No tracking or analytics cookies are used. Privacy Policy