Skip to main content

ka9q_ubersdr CVE-2026-97723

| EUVDEUVD-2026-86499 MEDIUM
Cross-site Scripting (XSS) (CWE-79)
2026-09-25 mitre GHSA-w3hg-374m-rvgx
5.4
CVSS 3.1 · Vendor: mitre
View

Attack ChainAIDerived

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

  1. Access
    Connect to vulnerable SDR chat interface
  2. Delivery
    Post message with crafted quote-breakout URL
  3. Exploit
    Message stored server-side
  4. Execution
    Victim loads chat and message renders
  5. Impact
    Injected JavaScript executes in victim's browser

Vulnerability Assessment

Weakness
CWE
OWASP Top 10:2025
A05:2025 - Injection
ASVS 5.0
V1 - Encoding and Sanitization Output encoding, context-aware escaping
MITRE ATT&CK

2 techniques across 2 tactics: Initial Access, Execution

The technique list with ATT&CK links and the kill-chain view is part of the Basic plan and up.

Exploitation Conditions

Exploitation requires a running ka9q_ubersdr instance before version 0.1.58 with the chat feature in use, and the ability to submit a chat message that is stored and later rendered to other users. The attacker embeds a URL containing quotation characters so the linkified href attribute breaks out and injects attacker-controlled HTML/JS; delivery is passive because rendering alone triggers execution (no victim click, per the description). Limiting factors: the target must be an unpatched instance whose chat is reachable to the attacker, and a second user must view the chat for impact to occur; if the instance restricts chat to authenticated users, effective privilege rises to PR:L. Impact is confined to client-side script execution in viewers' browsers, not the server.

Impact

This is a genuine but modest-severity stored XSS (CWE-79) in the chat rendering of ka9q_ubersdr, a niche hobbyist KA9Q-based web SDR interface. The vendor/NVD CVSS 3.1 vector (AV:N/AC:H/PR:N/UI:N/S:C/C:L/I:L/A:N = 5.4) is internally consistent with a stored XSS: network-reachable, no privileges asserted, no victim click required (UI:N, confirmed by the description's 'No click on the malicious link was required'), scope change into the victim's browser context (S:C), and limited confidentiality/integrity impact (C:L/I:L). I would rate complexity lower than the vendor's AC:H - breaking out of an href with a quotation character is a well-understood, reliable technique, so AC:L (~6.1) is more defensible; the AC:H choice appears conservative rather than justified. No EPSS score, no CISA KEV listing, and no public exploit code are present in the input, so exploitation status is 'no public exploit identified at time of analysis' - this is not confirmed active exploitation. The only impact ceiling is that the flaw yields client-side script execution (session/UI manipulation of other viewers), not server compromise. Net: a real, patch-worthy bug but a low real-world priority given the tiny deployment footprint and absence of exploitation signals. Note one ambiguity: PR:N assumes chat posting is open to unauthenticated users; if the SDR instance gates chat behind a login, effective privilege would be PR:L - verify against deployment.

Exploit ScenarioDerived

An attacker connected to a vulnerable ka9q_ubersdr web SDR instance posts a chat message containing a crafted URL whose quotation characters break out of the generated <a href="..."> attribute and inject additional HTML attributes carrying JavaScript. When any other user's browser later renders the stored message, the script executes automatically with no click required. No public exploit code is identified, but the patched linkifyUrls diff makes the payload construction straightforward.

This Month Plan within 30 days. Why: MEDIUM severity (CVSS 4.0-6.9).
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 – Sep 25, 2026

Stored cross-site scripting (XSS) in the chat feature of madpsy's ka9q_ubersdr web SDR interface allows an attacker who can post a chat message to execute arbitrary JavaScript in the browsers of every other user who later views that channel in ka9q_ubersdr before 0.1.58. The linkifier that turns chat URLs into anchors does not neutralize quotation characters, so a crafted URL escapes the generated href attribute and injects attacker-controlled HTML attributes; because the payload is persisted server-side and executes on rendering, no click by the victim is required (the assessed vector is CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:C/C:L/I:L/A:N, matching the published 5.4 severity). Impact is limited to client-side script execution in viewers' browsers rather than server compromise, and no public exploit code has been identified at time of analysis, although the public fix commit (6aa858da1c030cae11b94c7d6c72322adb9ec60d, PR #114) does document the exact vulnerable pattern.

RemediationAI

Upgrade ka9q_ubersdr to 0.1.58 or later, which contains the vendor-released patch in commit 6aa858da1c030cae11b94c7d6c72322adb9ec60d (pull request https://github.com/madpsy/ka9q_ubersdr/pull/114); the patch escapes quotes in linkified URLs, allowlists only http/https schemes, hardens the HTML escaping helper, and applies CSS.escape() to message IDs. If immediate upgrade is not possible, the most reliable compensating control is to disable or remove the chat feature for untrusted users, since the vulnerability has no server-side exploit path and the chat renderer is the only delivery vector; the trade-off is complete loss of chat functionality. Alternatively, restrict chat to authenticated, trusted operators - note this changes the effective attacker precondition from unauthenticated (PR:N in the assessed vector) to authenticated (PR:L). Because the instance itself is the trust boundary, binding the SDR web UI to localhost or placing it behind an authenticating reverse proxy and blocking direct internet exposure removes the ability of arbitrary remote users to inject messages, at the cost of accessibility. A strict Content-Security-Policy with script-src 'self' and no 'unsafe-inline' will block injected inline event handlers and javascript: payloads, but may break legitimate inline scripts and styles in the application, so it should be validated before enforcement. Filtering chat messages for quote characters or URL-like strings at an intermediary is possible but prone to bypass and breaks legitimate links.

Affected VersionsENISA

ka9q_ubersdr 0 <0.1.58

Affected Packages

euvd ka9q_ubersdr fix: 0.1.58

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

ka9q_ubersdr is a browser-based front end for KA9Q-based software-defined radio receivers, and its chat panel is implemented in static/chat-ui.js. Two defects combine here: a linkifyUrls routine used a regular expression to rewrite URLs into '<a href="$1" ...>' anchors without escaping the captured text, and the accompanying escapeHtml helper built output by assigning div.textContent then reading div.innerHTML, which HTML-escapes ampersands and angle brackets but leaves quotation marks untouched. A URL containing a double quote therefore terminates the href attribute early and lets the attacker append arbitrary attributes, including event handlers, into the rendered anchor. CWE-79 (Improper Neutralization of Input During Web Page Generation, i.e. XSS) is the root-cause class; the stored, render-triggered nature of the payload and the fact that injected attributes persist in the page are what make this a persistent XSS rather than reflected. The presence of S:C in the vector reflects that script execution in a viewer's session crosses a trust boundary from the chat data store to the browser origin serving the SDR UI. The upstream fix combines three controls: CSS.escape() on message IDs used in querySelector, an explicit http/https protocol allowlist via URL parsing, and correct manual escaping of &, <, >, " and ' plus replacement of quotes with &quot; inside the generated href.

Know when JavaScript 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 (mitre) PRIMARY 5.4 MEDIUM
AV:N/AC:H/PR:N/UI:N/S:C/C:L/I:L/A:N
vuln.today AI 7.2 HIGH

Stored XSS auto-executing on render (UI:N), quote-breakout is a reliable known technique so AC:L; scope changes into victim browser (S:C) with limited C/I and no availability impact.

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

Primary rating from Vendor (mitre).

CVSS VectorVendor: mitre

Attack Vector
Network
Attack Complexity
High
Privileges Required
None
User Interaction
None
Scope
Changed
Confidentiality
Low
Integrity
Low
Availability
None

DescriptionCVE.org

madpsy ka9q_ubersdr before 0.1.58 has a stored cross-site scripting (XSS) vulnerability in the chat message rendering functionality. User-controlled URLs in chat messages were insufficiently neutralized before being converted into HTML links. Quotation characters could break out of the generated href attribute and introduce attacker-controlled HTML attributes, allowing arbitrary JavaScript to execute in the browser of another user when the stored chat message was rendered. No click on the malicious link was required.

Threat Intelligence Overview

EPSS Score
0.2%
Top 90% exploitable
Prevalence
Rare
obscure single-developer hobbyist KA9Q web SDR project, negligible enterprise footprint
Data Quality
6 sources
Confidence: High

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 MEDIUM
CISA KEV No
Public POC No
EPSS 0.2%
Patch available Yes
Active threat No
Deciding rule
MEDIUM severity (CVSS 4.0-6.9)
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
None
System Exposure· derived
Open
Automatable
No
Human Impact· derived
Medium
Technical Impact
Partial

Priority Score

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

Attack Technique

Cross-Site Scripting occurs when an application accepts untrusted data and sends it to a web browser without proper validation or encoding.

CVE-2026-102827 CRITICAL POC
9.8 Sep 29

Command injection in simple-git, the Node.js library for running git commands and published on npm, affects all releases

CVE-2026-77615 HIGH POC
8.7 Sep 17

Stored DOM-based cross-site scripting in Paella Player's closed-caption rendering path (paella-core before 2.12.11) allo

CVE-2026-92776 HIGH POC
8.6 Sep 16

Authorization bypass in Wiki.js through 2.5.314 allows an authenticated user who has been granted access to at least one

CVE-2026-102826 HIGH POC
8.1 Sep 29

Untrusted git configuration includes reachable through simple-git before 4.0.0 let an attacker execute arbitrary command

CVE-2026-85715 HIGH POC
7.5 Sep 17

Improper memory allocation control in ExifReader before 4.41.1 allows remote attackers to exhaust heap memory and termin

CVE-2026-102278 HIGH POC
7.5 Sep 28

Deeply nested brace patterns cause unbounded recursion in the npm brace-expansion library, exhausting the native stack a

CVE-2026-102276 HIGH POC
7.5 Sep 28

Stack exhaustion in the npm library brace-expansion (all versions prior to 1.1.19, 2.1.5, 3.0.7, and 5.0.10) lets a craf

CVE-2026-92775 HIGH POC
7.1 Sep 16

Server-side request forgery in Wiki.js through 2.5.314 lets an authenticated user who holds page-editing permissions for

CVE-2026-101910 MEDIUM POC
6.9 Sep 28

The JavaScript library ip-address (npm) fails to treat the NAT64 local-use prefix 64:ff9b:1::/48 as private, so applicat

CVE-2026-101914 MEDIUM POC
6.5 Sep 28

Authorization bypass in the @grpc/grpc-js-xds package (the xDS/RBAC extension for @grpc/grpc-js) lets a request for one

CVE-2026-101912 MEDIUM POC
6.3 Sep 28

Cross-family subnet comparisons in the ip-address npm library (all versions before 10.7.1) can cause isInSubnet and isHo

CVE-2026-101911 MEDIUM POC
6.3 Sep 28

Denial of service in the ip-address JavaScript/npm library (all versions prior to 10.7.1) lets remote attackers stall or

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