Attack ChainAIDerived
Hypothetical attack flow derived from CVE metadata – not a confirmed exploit chain
-
AccessObtain low-privilege access to application
-
DeliverySupply crafted XML Schema with external network references
-
ExploitApplication invokes Nokogiri::XML::Schema on JRuby with default options
-
ExecutionCase-sensitive NONET denylist bypass permits outbound network request
-
ImpactAttacker-controlled server receives SSRF hit or XXE-exfiltrated data
Vulnerability Assessment
| Weakness |
CWE
OWASP Top 10:2025
A05:2025 - Injection
ASVS 5.0
V1 - Encoding and Sanitization Case sensitivity handling
|
| Exploitation Conditions | Exploitation requires: (1) the target Ruby application must be running on the JRuby implementation - CRuby deployments at any Nokogiri version are immune; (2) the application must use Nokogiri::XML::Schema to parse XML schemas, specifically with default parse options (NONET enabled); (3) the attacker must be able to supply or influence the schema content processed by the application, since the bypass is triggered by external resource references embedded in the schema itself; and (4) CVSS PR:L indicates some level of authenticated or low-privilege access is required, and UI:R indicates a user or process action must trigger the schema parse. Applications that do not parse schemas from untrusted sources, or that run on CRuby, face no exposure from this vulnerability. The limiting factors - JRuby-only, schema-input control, PR:L, UI:R - significantly constrain the realistic attacker population. |
| Impact | CVSS 2.6 (Low) is internally consistent with the vector AV:N/AC:H/PR:L/UI:R/S:U/C:L/I:N/A:N, reflecting high attack complexity, a required low-privileged authenticated context, mandatory user interaction, and only limited confidentiality impact. The JRuby-only scope is a hard architectural constraint that eliminates risk for the majority of Nokogiri deployments, which run on CRuby. This is a bypass of CVE-2020-26247, scored identically, and represents an incomplete fix rather than a novel attack class. No EPSS data was provided, so quantitative exploitation probability cannot be stated; however, the absence of KEV listing, no identified POC, and the niche JRuby deployment requirement collectively suggest low real-world exploitation pressure. The SSRF/XXE impact is limited to confidentiality (C:L) with no integrity or availability component. The primary concern is in environments that parse attacker-controlled XML schemas on JRuby - a non-default workflow that requires deliberate application design. Risk is real but operationally narrow; this should be patched in normal release cycles rather than treated as an emergency. |
| Exploit ScenarioDerived | An attacker crafts a malicious XML Schema document containing references to attacker-controlled external URLs using alternate-case scheme strings (exploiting the case-sensitive denylist bypass) and submits it to a JRuby-based Ruby application that uses Nokogiri::XML::Schema for schema validation with default parse options. The application's Nokogiri JRuby implementation issues an outbound HTTP request to the attacker's server despite NONET being set, enabling the attacker to map internal network topology via SSRF or extract data via XXE response channels. No public exploit code has been identified, and the high attack complexity - requiring JRuby runtime, attacker-controlled schema input, and user interaction - suggests exploitation would be targeted rather than opportunistic. |
Get an e-mail when this CVE is exploited, patched or re-scored. Free account.
Alert meAnalysisAIv1 – Jun 25, 2026
NONET network restriction bypass in Nokogiri's JRuby implementation permits external resource fetching during XML Schema parsing despite the default network-blocking parse option being set, exposing applications to potential SSRF and XXE attacks. Only JRuby-based deployments are affected - CRuby users are fully protected because libxml2's xmlNoNetExternalEntityLoader enforces NONET at the I/O layer independently of Nokogiri's option handling. Rated low severity by maintainers (CVSS 2.6); vendor-released patch is available in version 1.19.4, and no public exploit has been identified at time of analysis.
RemediationAI
Upgrade to Nokogiri 1.19.4 or later via gem update nokogiri or by updating the Gemfile pin; this is the only confirmed fix per the vendor advisory at https://github.com/sparklemotion/nokogiri/security/advisories/GHSA-8678-w3jw-xfc2. The vendor confirms no workarounds exist for affected versions. Note that 1.19.4 introduces a breaking change: the NONET denylist is replaced with an allowlist, so any application that previously relied (even unknowingly) on network resource loading with default parse options will have that access blocked. If trusted schemas genuinely require network resource resolution, explicitly disable NONET using Nokogiri::XML::ParseOptions.new.nononet - but only for inputs that are fully trusted, as this re-enables the original network-access risk documented in CVE-2020-26247.
Affected VersionsENISA
Affected Packages
Source: OSV (Open Source Vulnerabilities)
Affects your stack
Affects 1 package in rubygems
Checking this CVE against your own stacks and servers is part of the Basic plan and up.
Technical ContextAI · show details
Nokogiri is a widely used Ruby gem that wraps libxml2 for the CRuby runtime and uses a separate Java-based XML parser for JRuby. The NONET parse option was introduced as a default for Nokogiri::XML::Schema following CVE-2020-26247 to block network resource resolution during schema parsing. The JRuby implementation enforced this restriction via a network-scheme denylist, but CWE-178 (Improper Handling of Case Sensitivity) indicates the denylist performed case-sensitive matching, allowing bypasses via alternate-case scheme values (e.g., 'HTTP://' instead of 'http://'). The fix in 1.19.4 replaces the denylist with a case-insensitive allowlist that permits only file: scheme and local path references, aligning JRuby behavior with CRuby. The affected CPE is cpe:2.3:a:sparklemotion:nokogiri:*:*:*:*:*:*:*:*, covering all Nokogiri versions prior to 1.19.4 on JRuby.
Know when Nokogiri 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
AV:N/AC:H/PR:L/UI:R/S:U/C:L/I:N/A:N
Requires JRuby runtime, attacker-supplied schema, and user interaction (AC:H, PR:L, UI:R); impact limited to SSRF/XXE data disclosure with no integrity or availability consequence.
Primary rating from Vendor (GitHub_M).
CVSS VectorVendor: GitHub_M
Lifecycle Timeline
1DescriptionCVE.org
Nokogiri is an open source XML and HTML library for the Ruby programming language. Prior to 1.19.4, the NONET parse option, which Nokogiri turns on by default for Nokogiri::XML::Schema (see CVE-2020-26247), was not correctly enforced on the JRuby implementation. As a result, a schema parsed with default options could still cause external resources to be fetched over the network, potentially enabling SSRF or XXE attacks. This vulnerability is fixed in 1.19.4.
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
Server-Side Request Forgery exploits applications that fetch remote resources based on user-supplied URLs.
XML External Entity (XXE) attacks exploit XML parsers that process Document Type Definitions (DTDs) without proper restrictions.
Nokogiri is an open source XML and HTML library for Ruby. Rated high severity (CVSS 8.2), this vulnerability is remotely
A command injection vulnerability in Nokogiri v1.10.3 and earlier allows commands to be executed in a subprocess via Rub
Denial-of-service in Nokogiri before 1.19.3 stems from three distinct ReDoS vulnerabilities in the CSS selector tokenize
Out-of-bounds memory read in Nokogiri (CRuby) versions before 1.19.4 crashes the host Ruby process when application code
Nokogiri is an open source XML and HTML library for the Ruby programming language. Rated high severity (CVSS 7.5), this
Nokogiri is an open source XML and HTML library for Ruby. Rated high severity (CVSS 7.5), this vulnerability is remotely
Nokogiri is a Rubygem providing HTML, XML, SAX, and Reader parsers with XPath and CSS selector support. Rated high sever
Heap memory leaks in Nokogiri's XSLT transform method (versions before 1.19.3) enable gradual denial of service against
Unchecked return value in Nokogiri's CRuby extension (versions 1.5.1 through 1.19.0) causes the `canonicalize` method to
Out-of-bounds read in Nokogiri's `NodeSet#[]` method (all versions before 1.19.4) enables an attacker who can supply a l
Nokogiri is a Rubygem providing HTML, XML, SAX, and Reader parsers with XPath and CSS selector support. Rated medium sev
Use-after-free in Nokogiri's CRuby XInclude processing (versions prior to 1.19.4) can leave Ruby wrapper objects pointin
EUVD-2026-39421
NVD
CVE.org
EPSS
Vulnrichment
GitHub
VulDB
Exploit-DB