Rollbar.js CVE-2025-62517
MEDIUMAttack ChainAIDerived
Hypothetical attack flow derived from CVE metadata – not a confirmed exploit chain
-
AccessIdentify app passing untrusted input to rollbar.configure()
-
ExploitCraft payload with __proto__ polluting key
-
ExecutionTrigger merge()/set() prototype pollution
-
ImpactCorrupt Object.prototype affecting app logic
Vulnerability Assessment
| Weakness |
CWE
ASVS 5.0
V3 - Web Frontend Security Prototype pollution prevention
MITRE ATT&CK
2 techniques across 2 tactics: Execution, Initial Access The technique list with ATT&CK links and the kill-chain view is part of the Basic plan and up. |
| Exploitation Conditions | Exploitation requires that the consuming application call rollbar.configure() with attacker-controllable input - this specific API data flow is the mandatory precondition, confirmed by both the NVD description and the GHSA advisory. The affected code paths are merge() (which built its accumulator on a pollutable plain object) and the set() helper (which walked untrusted property paths); a payload carrying a __proto__ key is what triggers pollution. LIMITING FACTORS: the vulnerability is inert unless the host app passes untrusted values into configure() (reflected in AC:H), affects only rollbar.js before 2.26.5 and the 3.0.0-alpha1 through 3.0.0-beta4 pre-releases, and the official workaround (sanitizing/avoiding untrusted input to configure()) fully mitigates it without upgrading. No authentication or user interaction is required by the library itself (PR:N/UI:N). |
| Impact | This is a genuine but conditional, moderate-severity issue rather than a top-tier emergency. The signals are internally consistent and point LOW on real-world risk: CVSS 3.1 base is 5.9 (Medium) with vector AV:N/AC:H/PR:N/UI:N/S:U/C:N/I:H/A:N - note AC:H, reflecting that exploitation is not trivial, and C:N/A:N meaning the only base impact is to integrity (prototype pollution). EPSS is low at 0.39% (31st percentile), the CVE is NOT on CISA KEV, and no public exploit was identified, so there is no evidence of active or imminent mass exploitation. The most important nuance the raw CVSS hides: AV:N is technically defensible but misleading as a standalone trigger - exploitation only occurs when the embedding application itself passes attacker-controlled data into rollbar.configure(). In other words, the vulnerable data flow must be built by the consuming app; rollbar.js is not remotely exploitable on its own. There is no SSVC decision data provided. Net: treat as a routine dependency-hygiene patch (bump to 2.26.5 or 3.0.0-beta5), prioritized by whether your code actually forwards untrusted input into rollbar.configure(), not as a drop-everything incident. |
| Exploit ScenarioDerived | An application feeds untrusted data (e.g. values derived from user input, query strings, or a JSON body) into rollbar.configure(). Because merge() previously built its result on a normal object and set() walked attacker-controlled paths, a payload containing a __proto__ key pollutes Object.prototype, injecting properties visible across all objects in the Node.js or browser runtime and potentially altering downstream application logic. No public exploit code was identified, and the high attack complexity (AC:H) reflects that the attacker depends on the host app exposing this exact configure() data flow. |
Get an e-mail when this CVE is exploited, patched or re-scored. Free account.
Alert meAnalysisAIv1 – Oct 08, 2026
Prototype pollution in the merge() helper of the Rollbar.js browser/Node logging SDK lets attacker-supplied data corrupt Object.prototype when a consuming application passes untrusted values into rollbar.configure(). Only npm/rollbar releases before 2.26.5 and the 3.0.0-alpha1 through 3.0.0-beta4 pre-releases are affected; per the CVSS vector the attack is network-reachable and requires no authentication or user interaction (PR:N/UI:N), though exploitation is conditional on the host application forwarding attacker-controllable input to configure(), which is why complexity is rated High (AC:H). Impact is limited to integrity (I:H) with no confidentiality or availability effect, EPSS is low at 0.39% (31st percentile), and no public exploit code or active exploitation has been identified at time of analysis.
RemediationAI
Vendor-released patches are available: upgrade to npm/rollbar 2.26.5 (fixes the 2.x line, PR https://github.com/rollbar/rollbar.js/pull/1394) or to 3.0.0-beta5 for anyone on the 3.0.0-alpha1 through 3.0.0-beta4 pre-releases (PR https://github.com/rollbar/rollbar.js/pull/1390); both are described in the GitHub advisory GHSA-xcg2-9pp4-j82x. If upgrading is not immediately possible, the officially endorsed workaround is to guarantee that no untrusted input ever reaches rollbar.configure() - validate or whitelist configuration keys, strip __proto__, constructor, and prototype keys from any object sourced from user, network, or serialized JSON data before passing it in, and avoid reflecting request bodies or query strings into SDK configuration. This workaround fully neutralizes the issue but places the burden on every call site, so it is fragile as a long-term control. As an additional compensating layer, deploying a prototype-pollution-safe deep-merge (for example one that rejects dangerous keys or uses null-prototype objects) in application code reduces blast radius if a similar primitive exists elsewhere; note that Node.js --disable-proto=delete or --disable-proto=throw only mitigates the __proto__-based vector and not constructor.prototype paths, and may break libraries that legitimately rely on __proto__.
Affected Packages
Source: OSV (Open Source Vulnerabilities)
Affects your stack
Affects 1 package in npm
Checking this CVE against your own stacks and servers is part of the Basic plan and up.
Technical ContextAI · show details
The issue is a classic JavaScript prototype pollution flaw (CWE-1321) rooted in how Rollbar.js deep-merges configuration and walks property paths. In the vulnerable code, merge() initialized its accumulator with a plain object literal (result = {}), so a payload containing a __proto__ key such as {"__proto__": {"polluted": "yes"}} could be written onto Object.prototype and inherited by every object in the runtime. A second affected path was the set() utility, which walked attacker-influenced property paths and likewise permitted __proto__ traversal. Because the SDK is consumed as a library, the polluted prototype does not by itself harm Rollbar; the primitive only materializes when the host application supplies untrusted structured data to rollbar.configure(). The upstream fix hardens both sinks: merge() now builds its accumulator with Object.create(null) so no prototype exists to pollute, and set() calls Object.setPrototypeOf(obj, null) before writing, plus regression tests asserting that {}.polluted stays undefined after hostile merge/set calls. The advisory is tracked as GHSA-xcg2-9pp4-j82x under the npm/rollbar package.
Know when Prototype Pollution 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:N/UI:N/S:U/C:N/I:H/A:N
AC:H because exploitation depends on the app forwarding untrusted input to configure(); PR:N/UI:N as the library imposes no auth; C:N/A:N with I:H since prototype pollution corrupts integrity only.
Primary rating from Vendor (github).
CVSS VectorVendor: github
DescriptionCVE.org
Rollbar.js offers error tracking and logging from Javascript to Rollbar. In versions before 2.26.5 and from 3.0.0-alpha1 to before 3.0.0-beta5, there is a prototype pollution vulnerability in merge(). If application code calls rollbar.configure() with untrusted input, prototype pollution is possible. This issue has been fixed in versions 2.26.5 and 3.0.0-beta5. A workaround involves ensuring that values passed to rollbar.configure() do not contain untrusted input.
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
Information disclosure occurs when an application unintentionally exposes sensitive data that aids attackers in reconnaissance or directly compromises security.
More in Prototype Pollution
View allPrototype pollution in Adobe Acrobat Reader versions 24.001.30356, 26.001.21367 and earlier enables arbitrary code execu
All versions of package dojo are vulnerable to Prototype Pollution via the setObject function. Rated critical severity (
Prototype pollution in the farinspace Partners WordPress plugin (versions up to and including 0.2.0) enables remote unau
The package handlebars before 4.7.7 are vulnerable to Prototype Pollution when selecting certain compiling options to co
This affects the package ini before 1.3.6. Rated critical severity (CVSS 9.8), this vulnerability is remotely exploitabl
Prototype pollution vulnerability in 'deephas' versions 1.0.0 through 1.0.5 allows attacker to cause a denial of service
A Prototype Pollution issue in Cronvel Tree-kit v.0.7.4 and before allows a remote attacker to execute arbitrary code vi
A Prototype Pollution issue in Aliconnect /sdk v.0.0.6 allows an attacker to execute arbitrary code via the aim function
All versions of the package safe-eval are vulnerable to Prototype Pollution via the safeEval function, due to improper s
This affects the package vm2 before 3.9.4 via a Prototype Pollution attack vector, which can lead to execution of arbitr
Prototype Pollution in chargeover redoc v2.0.9-rc.69 allows attackers to execute arbitrary code or cause a Denial of Ser
alizeait unflatto <= 1.0.2 was discovered to contain a prototype pollution via the method exports.unflatto at /dist/inde
NVD
CVE.org
EPSS
GitHub
Exploit-DB