Skip to main content

uri-js CVE-2026-103387

| EUVDEUVD-2026-90361 LOW
Uncaught Exception (CWE-248)
2026-09-30 VulDB GHSA-cw9r-3wqp-32hm
2.1
CVSS 4.0 · Vendor: VulDB
View

Attack ChainAIDerived

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

  1. Access
    Identify endpoint parsing user-supplied URIs
  2. Delivery
    Submit crafted malformed mailto: URI
  3. Exploit
    Trigger uncaught exception in mailto.ts parser
  4. Execution
    Crash request handler or process
  5. Impact
    Denial of service

Vulnerability Assessment

Weakness
CWE
OWASP Top 10:2025
A10:2025 - Mishandling of Exceptional Conditions
ASVS 5.0
V16 - Security Logging and Error Handling Exception handling completeness
Exploitation Conditions

Exploitation requires the target application to invoke uri-js's URI.parse() on attacker-controlled input containing a crafted mailto: scheme URI (the vulnerable Mailto Header Handler in src/schemes/mailto.ts). No authentication or special privileges are needed (PR:N), and the malicious URI can be delivered remotely through any input channel the app parses. Limiting factors: impact is confined to a low-severity availability hit (an uncaught exception) rather than code execution or data exposure; applications that wrap URI.parse in exception handling, or that never parse untrusted mailto URIs, are not affected; and there is no fixed version, so mitigation relies on caller-side try/catch or input validation. Affects uri-js versions up to and including 4.4.1.

Impact

This is a low-to-moderate real-world risk that maps well to its 5.3 (CVSS 4.0) score. The vendor vector CVSS:4.0/AV:N/AC:L/AT:N/PR:N/UI:P/VC:N/VI:N/VA:L describes a remotely reachable, unauthenticated, low-complexity flaw whose ONLY technical impact is a low-severity availability hit (VA:L) - confidentiality and integrity are explicitly N, so this is a denial-of-service/robustness bug (CWE-248 uncaught exception), not information disclosure. E:P in the vector plus the reference to garycourt/uri-js issue #103 confirms 'publicly available exploit code exists,' but there is no CISA KEV listing and no EPSS score in the input, so there is no evidence of active exploitation - treat POC availability and active exploitation as distinct signals. Note a data conflict: the Tags label this 'Information Disclosure,' which directly contradicts the CVSS impacts (VC:N, only VA:L) - the actual effect is an application-crashing exception, not data disclosure. Realistic impact is bounded because the crash only propagates if the consuming application calls URI.parse on attacker-controlled mailto: input without exception handling; many callers wrap parsing in try/catch, further limiting blast radius. This is a hygiene/patch-when-convenient issue rather than an emergency, tempered by the fact that the maintainer has not responded and the project is effectively unmaintained.

Exploit ScenarioDerived

An attacker submits a malformed mailto: URI (e.g., via a form field, API parameter, message header, or webhook payload) to an application that calls uri-js URI.parse() on that input. The crafted argument to the mailto header handler triggers an uncaught exception in src/schemes/mailto.ts, crashing the request handler or, in a single-threaded Node.js process without proper error handling, the whole service. Public proof-of-concept exists in the project's GitHub issue #103.

Monitor Track and reassess. Why: LOW severity (CVSS 0.1-3.9).
No patch listed yet 0.6% exploitation probability (EPSS)

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

Alert me

AnalysisAIv1 – Sep 30, 2026

An uncaught exception in the mailto: scheme handler of uri-js through 4.4.1 allows remote attackers to disrupt or crash applications that call URI.parse() on attacker-supplied mailto URIs. The flaw is remotely reachable and requires no authentication (CVSS 4.0 vector PR:N, AV:N), but its impact is limited to a low-severity availability hit - the crafted input triggers an unhandled exception rather than code execution, data disclosure, or integrity loss. Publicly available exploit code exists, referenced through the upstream GitHub issue tracker, though there is no indication of confirmed active exploitation; the upstream project has not responded to the report, so no fixed version is available.

RemediationAI

No vendor-released patch identified at time of analysis; the upstream project has not responded to the issue report, so no fixed version number exists to cite. As a direct compensating control, wrap every URI.parse() call that can receive untrusted input in a try/catch block and treat a parse failure on mailto: URIs as a rejected/invalid input rather than letting the exception propagate - the trade-off is that legitimate but malformed mailto values are dropped and callers must handle the failure path gracefully. Alternatively, validate or pre-sanitize mailto: input (rejecting or normalizing malformed headers and address fields) before passing it to uri-js, acknowledging that aggressive validation may reject some edge-case valid URIs. Applications that never parse untrusted mailto URIs, or that already contain exception handling around URI.parse(), are not affected and require no change. Track https://github.com/garycourt/uri-js/issues/103 and https://vuldb.com/vuln/412124 for a future upstream fix, and if mailto parsing is not a needed feature, consider disabling or stubbing mailto scheme support in the calling code.

Affected VersionsENISA

uri-js 4.4.1
uri-js 4.4.0

Affected Packages

euvd uri_js no fix

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

uri-js is a JavaScript/Node.js library that implements RFC 3986 URI parsing and serialization, widely consumed as a dependency in web and server-side stacks. The vulnerable component is the Mailto Header Handler implemented in src/schemes/mailto.ts, which is invoked when URI.parse() encounters a mailto: scheme. CWE-248 (Uncaught Exception) identifies the root cause: the mailto scheme parser does not defensively handle a malformed 'to' argument, so a parsing failure throws a JavaScript exception that propagates out of URI.parse() to the calling application. The CPE cpe:2.3:a:garycourt:uri-js:*:*:*:*:*:*:*:* designates all published versions of the garycourt/uri-js package, with the reported affected range extending up to and including 4.4.1. Any application that passes untrusted input to URI.parse() and does not wrap the call in exception handling is exposed to an unhandled-exception condition that can abort request handling or crash a process.

Know when Uri Js 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 (VulDB) PRIMARY 2.1 MEDIUM
CVSS:4.0/AV:N/AC:L/AT:N/PR:N/UI:P/VC:N/VI:N/VA:L/SC:N/SI:N/SA:N/E:P
vuln.today AI 5.3 MEDIUM

Remotely reachable unauthenticated parser input (AV:N/PR:N); uncaught exception yields only limited availability loss (A:L) with no confidentiality/integrity impact; parsing needs no user interaction (UI:N).

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

Primary rating from Vendor (VulDB).

CVSS VectorVendor: VulDB

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

Lifecycle Timeline

3
Severity Changed
Sep 30, 2026 - 20:53 NVD
MEDIUM LOW
CVSS changed
Sep 30, 2026 - 20:53 NVD
5.3 (MEDIUM) 2.1 (LOW)
CVE Published
Sep 30, 2026 - 19:45 cve.org
MEDIUM 5.3

DescriptionCVE.org

A weakness has been identified in garycourt uri-js up to 4.4.1. This affects the function URI.parse of the file src/schemes/mailto.ts of the component Mailto Header Handler. This manipulation of the argument to causes uncaught exception. The attack may be initiated remotely. The exploit has been made available to the public and could be used for attacks. The project was informed of the problem early through an issue report but has not responded yet.

Threat Intelligence Overview

EPSS Score
0.6%
Top 55% exploitable
Prevalence
High
very widely used npm URI-parsing library, common transitive dependency (e.g., ajv)
Exploit
POC
Public exploit code exists
Data Quality
6 sources
Confidence: High
EUVD NVD CVE.org EPSS Vulnrichment GitHub VulDB

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 LOW
CISA KEV No
Public POC Yes
EPSS 0.6%
Patch available No
Active threat No
Deciding rule
LOW severity (CVSS 0.1-3.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
Poc
System Exposure· derived
Open
Automatable
No
Human Impact· derived
Medium
Technical Impact
Partial

Priority Score

31
Low Medium High Critical
KEV: 0
EPSS: +1
CVSS: +10
PoC: +20
Weaponized: 0
Threat intel: 0
Gov advisory: 0

More in Uri Js

View all

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