Attack ChainAIDerived
Hypothetical attack flow derived from CVE metadata – not a confirmed exploit chain
-
AccessVictim client connects to malicious XMPP server
-
ExploitServer returns oversized SCRAM salt in s= attribute
-
ExecutionSalt decodes to >124 bytes overflowing 128-byte stack buffer in SCRAM_Hi
-
ImpactClient aborts or stack memory corrupted (NDEBUG)
Vulnerability Assessment
| Weakness |
CWE
ASVS 5.0
V15 - Secure Coding and Architecture Stack buffer bounds checking
MITRE ATT&CK
1 technique across 1 tactic: Execution The technique list with ATT&CK links and the kill-chain view is part of the Basic plan and up. |
| Exploitation Conditions | The victim must run a libstrophe-based client (version through 0.14.0) that performs SCRAM SASL authentication and must initiate a connection to an attacker-controlled or compromised XMPP server; the server then sends a server-first-message whose s= (salt) attribute base64-decodes to more than 124 bytes, overflowing the 128-byte stack buffer in SCRAM_Hi(). Limiting factors: exploitation is passive and requires the client to connect to the malicious server (AT:P/UI:P) rather than any action against an exposed service; SCRAM-based authentication must be in use; and memory-overwrite (versus a controlled abort) only occurs in NDEBUG builds where the guarding assertion is compiled out, so default assert-enabled builds yield a crash/DoS rather than memory corruption. |
| Impact | This is a client-side vulnerability in which a malicious or compromised XMPP server attacks a connecting libstrophe client - not a server-side flaw exploitable at scale. The CVSS 4.0 vector (AV:N/AC:L/AT:P/PR:N/UI:P/VC:N/VI:L/VA:H) scores 6.0 (Medium) and the signals are internally consistent: network vector but gated by an attack requirement (AT:P, victim must connect to an attacker-controlled server) and passive user interaction (UI:P), with impact dominated by availability (VA:H, client abort) and only low integrity (VI:L, stack corruption in NDEBUG builds) and zero confidentiality. No EPSS score was provided and the CVE is NOT in CISA KEV, so there is no evidence of active exploitation; exploitation status is 'no public exploit identified at time of analysis,' though a detailed technical write-up exists on hackmd. The realistic worst case is denial of service (client crash/abort); reliable arbitrary code execution is uncertain and limited to NDEBUG builds where the guarding assertion is compiled out, and stack canaries/ASLR further constrain exploitability. Net: a genuine but lower-priority Medium issue - the attacker must control the server the victim chooses to authenticate to, so this favors targeted or malicious-service scenarios over widespread opportunistic attacks. Reported by VulnCheck but no independent vendor (strophe) patch advisory is referenced in the provided data - verify fix availability with the project. |
| Exploit ScenarioDerived | A libstrophe-based XMPP client (e.g., a chat application) initiates SCRAM SASL authentication to a server the attacker controls or has compromised. The server returns a server-first-message whose s= (salt) attribute base64-decodes to more than 124 bytes, overflowing the 128-byte stack buffer in SCRAM_Hi() and crashing the client, or corrupting stack memory in NDEBUG builds. A technical write-up is publicly available, but no weaponized exploit code is identified; exploitation is passive, requiring the victim to connect to the malicious server. |
Get an e-mail when this CVE is exploited, patched or re-scored. Free account.
Alert meAnalysisAIv1 – Oct 18, 2026
Stack-based buffer overflow in libstrophe through 0.14.0 allows a malicious or compromised XMPP server to crash or corrupt the stack of a connecting client during SCRAM SASL authentication: a server-first-message whose base64 s= (salt) attribute decodes to more than 124 bytes overruns the fixed 128-byte stack buffer in SCRAM_Hi(). Only clients that perform SCRAM authentication and connect out to an attacker-controlled or compromised server are exposed, so the flaw is client-side and requires the victim to initiate the connection rather than exposing an attack surface at scale. Impact is predominantly denial of service (process abort), with limited stack memory overwrite possible only in NDEBUG builds where the guarding assertion is compiled out; no public exploit code or confirmed active exploitation (CISA KEV) is identified at time of analysis, though a technical write-up of the flaw is publicly available.
RemediationAI
No vendor-released patch identified at time of analysis: the reported data covers libstrophe through 0.14.0 and provides no fixed release, so track https://github.com/strophe/libstrophe and the VulnCheck advisory (https://www.vulncheck.com/advisories/libstrophe-through-0.14.0-stack-based-buffer-overflow-via-scram-salt-in-scram-hi) for a patched version and rebuild all clients that link the library. Because a fix is not yet available, apply specific compensating controls: add a bounds check around the SCRAM_Hi() base64 decode so the s= salt is rejected when its decoded length exceeds the 128-byte buffer (a small local patch, but it must be carried forward on every upstream rebase); build with assertions enabled rather than -DNDEBUG so an oversized salt aborts the client cleanly instead of corrupting the stack, accepting a deliberate crash-on-attack trade-off; and restrict SASL to mechanisms that do not use this code path, such as EXTERNAL or PLAIN over a verified TLS channel, at the cost of compatibility with servers that only offer SCRAM and of exposing credentials to the TLS endpoint. Enforce strict TLS certificate validation and pinning of the XMPP server's certificate so an on-path attacker cannot impersonate a trusted server - this does not protect against a legitimately malicious or compromised server operator, since the hostile input arrives after a valid handshake.
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
libstrophe is a small, portable C library implementing the XMPP (Jabber) client protocol, widely embedded in chat clients and bots; the affected code paths live in src/scram.c and src/sasl.c of the 0.14.0 tree. The weakness is CWE-121, a stack-based buffer overflow, arising in SCRAM_Hi() - the key-derivation routine used by the SCRAM-SHA-1/SCRAM-SHA-256 SASL mechanisms defined in RFC 5802. In the SCRAM exchange the server sends a server-first-message containing r= (nonce), s= (base64 salt) and i= (iteration count); libstrophe base64-decodes the s= value into a fixed 128-byte stack buffer without validating the decoded length against that buffer size. Any salt that decodes to 125 bytes or more therefore writes past the end of the buffer. In default assert-enabled builds an assertion fires and the process aborts (clean denial of service); in NDEBUG/release builds the assertion is compiled out, so the overflow proceeds and adjacent stack memory - return addresses, saved registers, locals - can be corrupted. Because the input is fully attacker-controlled and delivered as part of a normal authentication handshake, no special client-side privileges are needed, only that SCRAM be the negotiated mechanism.
Know when Libstrophe 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:P/PR:N/UI:P/VC:N/VI:L/VA:H/SC:N/SI:N/SA:N
Remote malicious server with no client privileges (PR:N) but the victim must connect to it (UI:R); primary impact is client abort (A:H) with possible stack corruption (I:L) only in NDEBUG builds and no data disclosure (C:N).
Primary rating from Vendor (VulnCheck).
CVSS VectorVendor: VulnCheck
DescriptionCVE.org
libstrophe through 0.14.0 contains a stack-based buffer overflow vulnerability in SCRAM_Hi that allows malicious XMPP servers to overflow a 128-byte stack buffer by sending an oversized SCRAM salt. Attackers can send a server-first-message whose s= attribute decodes to more than 124 bytes, aborting the client or overwriting stack memory in NDEBUG builds.
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
A buffer overflow occurs when a program writes more data to a memory buffer than it was allocated to hold, causing the excess data to spill into adjacent memory regions.
A stack-based buffer overflow occurs when a program writes more data to a buffer located on the stack than it was allocated to hold.
EUVD-2026-103505
GHSA-37wj-432m-6r6f
NVD
CVE.org
Exploit-DB