Severity by source
CVSS:4.0/AV:N/AC:L/AT:N/PR:L/UI:N/VC:L/VI:L/VA:L/SC:N/SI:N/SA:N/E:P/CR:X/IR:X/AR:X/MAV:X/MAC:X/MAT:X/MPR:X/MUI:X/MVC:X/MVI:X/MVA:X/MSC:X/MSI:X/MSA:X/S:X/AU:X/R:X/V:X/RE:X/U:X
PR:L reflects required low-privilege access to invoke nlp.extend() with controlled input; S:U and Low C/I/A match the prototype pollution's contained, partial impact with no cross-system scope change.
Primary rating from Vendor (VulDB).
CVSS VectorVendor: VulDB
Lifecycle Timeline
5DescriptionCVE.org
A vulnerability was identified in spencermountain compromise up to 14.15.1. Affected is the function nlp.extend of the file src/API/extend.js of the component Public Root API. The manipulation of the argument plugin leads to improperly controlled modification of object prototype attributes. Remote exploitation of the attack is possible. The exploit is publicly available and might be used. The identifier of the patch is b4644ab7179700df0607521f61c1ee9b5f78d89d. Applying a patch is the recommended action to fix this issue. The vendor was contacted early, responded in a very professional manner and quickly released a fixed version of the affected product.
AnalysisAI
Prototype pollution in compromise (spencermountain/compromise) through version 14.15.1 exposes all JavaScript applications using the library to Object.prototype contamination via the nlp.extend() Public Root API. A low-privileged remote attacker who can supply a crafted plugin argument containing __proto__, constructor, or prototype keys can inject properties into the global Object.prototype, producing partial confidentiality, integrity, and availability impact across the Node.js runtime. A public exploit exists via GitHub issue #1208, a vendor patch has been released (commit b4644ab7), and no CISA KEV listing has been confirmed at time of analysis.
Technical ContextAI
Compromise is a widely-used JavaScript NLP library (CPE: cpe:2.3:a:spencermountain:compromise:*:*:*:*:*:*:*:*). The vulnerability resides in the mergeDeep() helper within src/API/extend.js, which is invoked when application code calls nlp.extend(plugin). The function iterates over plugin object keys and recursively merges them into the library's internal model without sanitizing prototype-chain keys. An attacker supplying an object with __proto__, constructor, or prototype as keys triggers CWE-1321 (Improperly Controlled Modification of Object Prototype Attributes), polluting Object.prototype for the entire JavaScript heap. Because all objects in V8 inherit from Object.prototype, injected properties propagate to every object instantiated after the pollution, potentially altering null-checks, guard conditions, or security-sensitive property lookups throughout the host application. The fix (commit b4644ab7) introduces an isUnsafeKey() guard that skips these three dangerous keys in both the model-merge and methods-merge loops, with regression tests covering __proto__, constructor.prototype, and prototype key injection paths.
RemediationAI
The primary remediation is to apply the upstream patch by upgrading to the first compromise release incorporating commit b4644ab7179700df0607521f61c1ee9b5f78d89d - verify the exact patched version tag on the npm registry (https://www.npmjs.com/package/compromise) or GitHub releases, as the available data does not confirm a specific version number beyond 14.15.1. The VulDB advisory is at https://vuldb.com/vuln/378246. If an immediate upgrade is not feasible, restrict all invocations of nlp.extend() to hardcoded, developer-controlled plugin objects and explicitly prohibit passing any user-supplied, environment-derived, or third-party-loaded data as the plugin argument; this eliminates the attacker-controlled input path that enables exploitation. As an additional defensive layer, apply an Object.prototype freeze or use a prototype-pollution sanitization library (e.g., deep-clean) at application startup, though this may have compatibility side effects with other libraries that legitimately extend prototypes. Avoid using compromise in configurations where plugin data originates from untrusted sources until the patch is applied.
More in Prototype Pollution
View allPrototype pollution in Adobe Acrobat Reader versions 24.001.30356, 26.001.21367 and earlier enables arbitrary code execu
Prototype pollution in the farinspace Partners WordPress plugin (versions up to and including 0.2.0) enables remote unau
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
A vulnerability exists in the 'dagre-d3-es' Node.js package version 7.0.9, specifically within the 'bk' module's addConf
A Prototype Pollution vulnerability in the util-deps.addFileDepend function of magix-combine-ex versions thru 1.2.10 all
Chartist 1.x through 1.3.0 allows Prototype Pollution via the extend function. Rated critical severity (CVSS 9.8), this
Same technique Information Disclosure
View allShare
External POC / Exploit Code
Leaving vuln.today
EUVD-2026-43743
GHSA-29jc-r7wj-73vf