CVE-2026-58505: geojson-vt: uncontrolled recursion enables remote DoS
HIGH@maplibre/geojson-vt before 6.1.1 crashes the whole Node.js process when it parses a deeply nested GeoJSON GeometryCollection, so one unauthenticated network request can take down a service (CWE-674, CVSS 7.5, availability impact only). This is a geospatial library, not an AI/ML component, so its link to AI is indirect. It matters only where it sits in data pipelines that feed ML models, for example geospatial feature preparation or map-based analytics services that accept GeoJSON from untrusted sources. There is no EPSS score, no public exploit, no Nuclei template and no CISA KEV listing, so there is no evidence of active exploitation. However, the trigger is trivial to build and needs no non-default options. Upgrade to 6.1.1, inventory services that pass externally supplied GeoJSON into the library, and add payload depth and size limits plus process supervision as a stopgap.
What is the risk?
Moderate-to-high for any internet-facing service that feeds untrusted GeoJSON to the library, because it needs no authentication, no user interaction and low complexity. Impact is limited to availability, with no confidentiality or integrity effect. Exploitation likelihood is unquantified: EPSS is N/A, there is no known public exploit and it is not in KEV. Risk for AI/ML systems is low, since the library is not an AI component and only matters when it is embedded in an AI data-handling path. Package risk score and dependent counts are unknown, so blast radius cannot be sized from available data.
How does the attack unfold?
How severe is it?
What is the attack surface?
What should I do?
1 step1) Upgrade @maplibre/geojson-vt to 6.1.1 or later (fix in commit cb85688 / PR #156). 2) Find the library with SBOM or dependency scanning (npm ls @maplibre/geojson-vt), including transitive use. 3) Until patched, validate GeoJSON before it reaches the library: cap request body size and maximum nesting depth of GeometryCollection, or reject nested GeometryCollections. 4) Run services under a supervisor (systemd, Kubernetes restart policies) with rate limiting and health checks to limit the outage window. 5) Detect by alerting on repeated process crashes or restarts with 'Maximum call stack size exceeded' in logs, and on unusually large or deeply nested request bodies.
How is it classified?
Which compliance frameworks are affected?
This CVE is relevant to:
Frequently Asked Questions
What is CVE-2026-58505?
@maplibre/geojson-vt before 6.1.1 crashes the whole Node.js process when it parses a deeply nested GeoJSON GeometryCollection, so one unauthenticated network request can take down a service (CWE-674, CVSS 7.5, availability impact only). This is a geospatial library, not an AI/ML component, so its link to AI is indirect. It matters only where it sits in data pipelines that feed ML models, for example geospatial feature preparation or map-based analytics services that accept GeoJSON from untrusted sources. There is no EPSS score, no public exploit, no Nuclei template and no CISA KEV listing, so there is no evidence of active exploitation. However, the trigger is trivial to build and needs no non-default options. Upgrade to 6.1.1, inventory services that pass externally supplied GeoJSON into the library, and add payload depth and size limits plus process supervision as a stopgap.
Is CVE-2026-58505 actively exploited?
No confirmed active exploitation of CVE-2026-58505 has been reported, but organizations should still patch proactively.
How to fix CVE-2026-58505?
1) Upgrade @maplibre/geojson-vt to 6.1.1 or later (fix in commit cb85688 / PR #156). 2) Find the library with SBOM or dependency scanning (npm ls @maplibre/geojson-vt), including transitive use. 3) Until patched, validate GeoJSON before it reaches the library: cap request body size and maximum nesting depth of GeometryCollection, or reject nested GeometryCollections. 4) Run services under a supervisor (systemd, Kubernetes restart policies) with rate limiting and health checks to limit the outage window. 5) Detect by alerting on repeated process crashes or restarts with 'Maximum call stack size exceeded' in logs, and on unusually large or deeply nested request bodies.
What systems are affected by CVE-2026-58505?
This vulnerability affects the following AI/ML architecture patterns: Geospatial data processing pipelines, Server-side tile services, Data ingestion and preprocessing services, Map-based analytics APIs.
What is the CVSS score for CVE-2026-58505?
CVE-2026-58505 has a CVSS v3.1 base score of 7.5 (HIGH). The EPSS exploitation probability is 0.69%.
What is the AI security impact?
Affected AI Architectures
MITRE ATLAS Techniques
AML.T0049Exploit Public-Facing ApplicationCompliance Controls Affected
What are the technical details?
Original Advisory
geojson-vt is a JavaScript library for slicing GeoJSON data into vector tiles on the fly, primarily designed to enable rendering and interacting with large geospatial datasets on the browser side (without a server). Prior to version 6.1.1, @maplibre/geojson-vt contains an uncontrolled recursion vulnerability in its GeoJSON conversion logic. When a GeoJSONVT instance is constructed with a deeply nested GeometryCollection object, the mutually recursive functions featureToInternal and convertGeometryCollection in src/convert.ts exhaust the Node.js call stack, causing an unhandled RangeError: Maximum call stack size exceeded that terminates the process. Because the library is widely used in server-side tile services that accept GeoJSON over the network, a remote unauthenticated attacker can trigger a denial-of-service by sending a single crafted payload. No authentication is required, and no non-default library options are needed. This issue has been patched in version 6.1.1.
Exploitation Scenario
An attacker finds a public endpoint of a geospatial tile or data-preparation service that accepts GeoJSON, for example one feeding a location-based ML model. They send a single payload with thousands of nested GeometryCollection objects. The recursive conversion functions exhaust the call stack, the Node.js process dies, and any downstream inference or analytics workflow that depends on it stalls. The attacker repeats the request each time the service restarts to keep it down.
Weaknesses (CWE)
CWE-674 — Uncontrolled Recursion: The product does not properly control the amount of recursion that takes place, consuming excessive resources, such as allocated memory or the program stack.
- [Implementation] Ensure that an end condition will be reached under all logic conditions. The end condition may include checking against the depth of recursion and exiting with an error if the recursion goes too deep. The complexity of the end condition contributes to the effectiveness of this action.
- [Implementation] Increase the stack size.
Source: MITRE CWE corpus.
CVSS Vector
CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:HReferences
Timeline
Related Vulnerabilities
CVE-2026-3366010.0TensorFlow: type confusion NPD in tensor conversion
Same attack type: DoSCVE-2023-256689.8TensorFlow: unauthenticated RCE via heap buffer overflow
Same attack type: DoSCVE-2022-235879.8TensorFlow: integer overflow in Grappler enables RCE
Same attack type: DoSCVE-2022-359399.8TensorFlow: ScatterNd OOB write enables RCE/crash
Same attack type: DoSCVE-2022-419009.8TensorFlow: heap OOB RCE in FractionalMaxPool op
Same attack type: DoS