CVE-2025-61140
Critical · 9.8CVSS
9.8
EPSS
0.5%
Published
Jan 28, 2026
CISA due date
—
Cloudanix analysis
A vulnerable software component can let a remote attacker tamper with how an application handles data, potentially causing unauthorized access, data changes, or outages.
- Exploitation
- Remote Unauthenticated
- Attacker needs
- None
- Complexity
- Low
- Impact
- Full Compromise
- Component
- Library
- Class
- Improper Input Validation
- Remediation
- Upgrade
- Effort
- Medium
- Patch risk
- Low
What it actually does
The vulnerable value function in dchester jsonpath 1.1.1 does not adequately validate attacker-controlled path/property input before writing into JavaScript objects. An attacker who can influence JSONPath expressions or values processed by the library may be able to assign properties such as __proto__, constructor, or prototype, causing JavaScript prototype pollution. In Node.js applications, prototype pollution can alter behavior across objects, bypass authorization or validation logic, corrupt application data, trigger denial of service, and in vulnerable application patterns potentially lead to code execution. The CVSS 9.8 rating reflects network-reachable exploitation with low complexity, no authentication, and potential high confidentiality, integrity, and availability impact when the library is exposed through application functionality.
Why it matters to the business
Applications that expose jsonpath processing to users, APIs, integrations, workflow engines, configuration importers, or data transformation features may be vulnerable to unauthorized data access, tampering, service disruption, or compromise of business logic. Because jsonpath is a reusable dependency, exposure may exist indirectly through downstream packages or embedded application features rather than direct use by engineering teams. Although EPSS is currently low and no public exploit maturity or KEV listing is reported, the high severity means affected services should be reviewed and remediated promptly, especially where untrusted users can submit JSONPath-like input.
How an attack unfolds
An attacker first finds an application endpoint, job processor, import function, or integration that passes user-controlled JSONPath expressions or assignment values into the vulnerable dchester jsonpath value function. They then craft input that references prototype-related properties, such as __proto__, constructor, or prototype, causing the library to write attacker-chosen properties onto Object.prototype or another shared prototype. Once polluted, newly created objects may inherit malicious defaults. The attacker then abuses application-specific behavior that trusts inherited properties: for example, bypassing security checks, changing configuration flags, corrupting serialized output, forcing exceptions, or influencing template, command, or deserialization paths. The final impact depends on how the host application uses polluted objects, but can range from denial of service and data integrity failures to privilege escalation or remote code execution in unsafe patterns.
How to fix it
Inventory all direct and transitive use of dchester jsonpath, especially version 1.1.1. No fixed version was provided in the input, so treat affected deployments as requiring compensating controls until the maintainer publishes a patched release or an application-level patch is available. If a safe maintained fork or patched release is available from trusted upstream sources, upgrade and regression-test immediately. Where upgrade is not possible, prevent untrusted input from reaching jsonpath value assignment functionality; reject path components named __proto__, prototype, constructor, or similar meta-properties; use allowlists for permitted path syntax; and create objects with null prototypes where practical. Consider replacing the dependency with a maintained JSONPath implementation that explicitly protects against prototype pollution. Restart Node.js processes after remediation because polluted prototypes can persist for the lifetime of a process.
How to confirm the fix worked
Confirm exposure by generating a software bill of materials or dependency tree and checking for dchester jsonpath 1.1.1 in package-lock.json, yarn.lock, pnpm-lock.yaml, npm ls output, bundled JavaScript, or vendor directories. Review code paths to determine whether untrusted users can influence JSONPath expressions, object paths, or values passed to the library's value function. Validate mitigation with a safe test in a non-production environment: attempt to process input containing prototype keys such as __proto__.polluted and verify that {}.polluted remains undefined after processing. Confirm that dependency scans no longer report the affected version or that compensating input validation blocks prototype-pollution keys before library invocation.
Typical attack path
- Identify an internet-facing or remotely reachable feature that accepts JSON, filtering rules, JSONPath expressions, transformation mappings, or query-like path input.
- Submit crafted JSONPath/value input containing prototype-pollution keys such as __proto__, constructor, or prototype.
- Trigger the vulnerable value function in dchester jsonpath 1.1.1 so the application writes attacker-controlled properties to a shared JavaScript prototype.
- Invoke follow-on application functionality that creates or evaluates objects affected by the polluted prototype.
- Abuse inherited polluted properties to bypass logic, alter data, crash the process, or reach application-specific code execution primitives.
How to detect it
To determine whether exploitation already occurred, search application access logs, API gateway logs, WAF logs, reverse proxy logs, and application debug/error logs for JSONPath or JSON payloads containing prototype-pollution property names. Focus on endpoints that accept filters, rules, transformations, mappings, import files, workflow definitions, or arbitrary JSON. Review Node.js application logs for unexpected TypeError exceptions, authorization anomalies, configuration values changing unexpectedly, unusual serialized properties appearing across unrelated objects, or sudden process crashes after suspicious requests. If request bodies are logged, look for attempts to set __proto__, constructor.prototype, or prototype properties inside JSONPath expressions or object paths. In memory forensics or live triage, test whether Object.prototype contains unexpected enumerable properties, but perform this carefully because normal runtime inspection can be noisy and application-specific. There are no known KEV or named threat actor indicators in the provided data, so detection should focus on behavioral and input-pattern evidence rather than actor-specific infrastructure.
- __proto__
- constructor.prototype
- constructor[prototype]
- prototype.polluted
- __proto__.polluted
- ["__proto__"]
- ['__proto__']
- ["constructor"]["prototype"]
- ['constructor']['prototype']
- jsonpath
- lib/index.js
- Object.prototype
What your security team should do
- Prioritize internet-facing Node.js services and APIs that accept user-controlled JSONPath, JSON transformation rules, filters, or mapping expressions.
- Run dependency inventory across source repositories, container images, serverless packages, and deployed artifacts for dchester jsonpath 1.1.1.
- If no patched upstream version is available, implement strict input allowlisting and block __proto__, prototype, and constructor path segments wherever JSONPath input is accepted.
- Add regression tests for prototype pollution to affected applications and CI pipelines.
- Monitor application logs and error telemetry for suspicious JSONPath input containing prototype-pollution property names.
- Review authorization, validation, templating, and configuration logic for unsafe reliance on inherited object properties; prefer Object.hasOwn or hasOwnProperty checks.
- Restart affected Node.js services after patching or mitigation to clear any in-memory polluted prototype state.
- Track upstream advisories for a fixed version or maintained replacement and schedule dependency replacement if the package is no longer maintained.
The record
The value function in jsonpath 1.1.1 lib/index.js is vulnerable to Prototype Pollution.
Affected packages
| Ecosystem | Package | Introduced | Fixed |
|---|---|---|---|
| npm | jsonpath | 0 | 1.2.0 |
| SUSE:Linux Enterprise High Performance Computing 15 SP4-ESPOS | golang-github-prometheus-node_exporter | 0 | 1.9.1-150100.3.38.1 |
| SUSE:Linux Enterprise High Performance Computing 15 SP4-LTSS | golang-github-prometheus-node_exporter | 0 | 1.9.1-150100.3.38.1 |
| SUSE:Linux Enterprise High Performance Computing 15 SP5-ESPOS | golang-github-prometheus-node_exporter | 0 | 1.9.1-150100.3.38.1 |
| SUSE:Linux Enterprise High Performance Computing 15 SP5-LTSS | golang-github-prometheus-node_exporter | 0 | 1.9.1-150100.3.38.1 |
| SUSE:Linux Enterprise Module for Basesystem 15 SP7 | golang-github-prometheus-node_exporter | 0 | 1.9.1-150100.3.38.1 |
| SUSE:Linux Enterprise Module for Package Hub 15 SP7 | golang-github-prometheus-alertmanager | 0 | 0.28.1-150100.4.31.1 |
| SUSE:Linux Enterprise Module for Package Hub 15 SP7 | golang-github-prometheus-prometheus | 0 | 3.5.0-150100.4.29.1 |
| SUSE:Linux Enterprise Module for Package Hub 15 SP7 | golang-github-prometheus-promu | 0 | 0.17.0-150000.3.30.1 |
| SUSE:Linux Enterprise Server 15 SP4-LTSS | golang-github-prometheus-node_exporter | 0 | 1.9.1-150100.3.38.1 |
| SUSE:Linux Enterprise Server 15 SP5-LTSS | golang-github-prometheus-node_exporter | 0 | 1.9.1-150100.3.38.1 |
| SUSE:Linux Enterprise Server 15 SP6-LTSS | golang-github-prometheus-node_exporter | 0 | 1.9.1-150100.3.38.1 |
| SUSE:Linux Enterprise Server for SAP Applications 15 SP4 | golang-github-prometheus-node_exporter | 0 | 1.9.1-150100.3.38.1 |
| SUSE:Linux Enterprise Server for SAP Applications 15 SP5 | golang-github-prometheus-node_exporter | 0 | 1.9.1-150100.3.38.1 |
| SUSE:Linux Enterprise Server for SAP Applications 15 SP6 | golang-github-prometheus-node_exporter | 0 | 1.9.1-150100.3.38.1 |
| SUSE:Manager Client Tools 15 | dracut-saltboot | 0 | 1.1.0-150000.1.65.1 |
| SUSE:Manager Client Tools 15 | golang-github-QubitProducts-exporter_exporter | 0 | 0.4.0-150000.1.21.1 |
| SUSE:Manager Client Tools 15 | golang-github-boynux-squid_exporter | 0 | 1.13.0-150000.1.12.1 |
| SUSE:Manager Client Tools 15 | golang-github-lusitaniae-apache_exporter | 0 | 1.0.10-150000.1.26.1 |
| SUSE:Manager Client Tools 15 | golang-github-prometheus-alertmanager | 0 | 0.28.1-150100.4.31.1 |
| SUSE:Manager Client Tools 15 | golang-github-prometheus-prometheus | 0 | 3.5.0-150000.3.67.1 |
| SUSE:Manager Client Tools 15 | grafana | 0 | 11.6.11-150000.1.90.1 |
| SUSE:Manager Client Tools 15 | prometheus-blackbox_exporter | 0 | 0.26.0-150000.1.30.2 |
| SUSE:Manager Client Tools 15 | spacecmd | 0 | 5.0.15-150000.3.142.1 |
| SUSE:Manager Client Tools 15 | uyuni-tools | 0 | 0.1.38-150000.1.30.1 |
| SUSE:Manager Client Tools for SLE Micro 5 | dracut-saltboot | 0 | 1.1.0-150000.1.65.1 |
| SUSE:Manager Client Tools for SLE Micro 5 | golang-github-QubitProducts-exporter_exporter | 0 | 0.4.0-150000.1.21.1 |
| SUSE:Manager Client Tools for SLE Micro 5 | golang-github-prometheus-node_exporter | 0 | 1.9.1-150100.3.38.1 |
| SUSE:Manager Client Tools for SLE Micro 5 | prometheus-blackbox_exporter | 0 | 0.26.0-150000.1.30.2 |
| SUSE:Manager Client Tools for SLE Micro 5 | uyuni-tools | 0 | 0.1.38-150000.1.30.1 |
| openSUSE:Leap 15.6 | dracut-saltboot | 0 | 1.1.0-150000.1.65.1 |
| openSUSE:Leap 15.6 | golang-github-QubitProducts-exporter_exporter | 0 | 0.4.0-150000.1.21.1 |
| openSUSE:Leap 15.6 | golang-github-boynux-squid_exporter | 0 | 1.13.0-150000.1.12.1 |
| openSUSE:Leap 15.6 | golang-github-lusitaniae-apache_exporter | 0 | 1.0.10-150000.1.26.1 |
| openSUSE:Leap 15.6 | golang-github-prometheus-alertmanager | 0 | 0.28.1-150100.4.31.1 |
| openSUSE:Leap 15.6 | golang-github-prometheus-node_exporter | 0 | 1.9.1-150100.3.38.1 |
| openSUSE:Leap 15.6 | golang-github-prometheus-prometheus | 0 | 3.5.0-150100.4.29.1 |
| openSUSE:Leap 15.6 | golang-github-prometheus-promu | 0 | 0.17.0-150000.3.30.1 |
| openSUSE:Leap 15.6 | prometheus-blackbox_exporter | 0 | 0.26.0-150000.1.30.2 |
| openSUSE:Leap 15.6 | spacecmd | 0 | 5.0.15-150000.3.142.1 |
| openSUSE:Leap 16.0 | golang-github-prometheus-prometheus | 0 | 3.5.0-160000.2.1 |
Related vulnerabilities
- GHSA-6c59-mwgh-r2x6 JSONPath vulnerable to Prototype Pollution due to insufficient input validation of object… Same vulnerability
- GHSA-87r5-mp6g-5w5j jsonpath has Arbitrary Code Injection via Unsafe Evaluation of JSON Path Expressions Also affects jsonpath
- CVE-2026-1615 Versions of the package jsonpath before 1.3.0 are vulnerable to Arbitrary Code Injection… Also affects jsonpath
- CVE-2026-25547 @isaacs/brace-expansion is a hybrid CJS/ESM TypeScript fork of brace-expansion. Also affects golang-github-prometheus-node_exporter
- CVE-2025-13465 Lodash versions 4.0.0 through 4.17.22 are vulnerable to prototype pollution in the… Also affects golang-github-prometheus-node_exporter
- CVE-2025-12816 node-forge has an Interpretation Conflict vulnerability via its ASN.1 Validator… Also affects golang-github-prometheus-node_exporter
- CVE-2026-27606 Rollup is a module bundler for JavaScript. Also affects golang-github-prometheus-promu
- CVE-2026-21722 Public dashboards with annotations enabled did not limit their annotation timerange to… Also affects golang-github-prometheus-promu