Skip to main content

@casl/ability CVE-2026-111172

| EUVDEUVD-2026-102299 MEDIUM
Improperly Controlled Modification of Object Prototype Attributes (Prototype Pollution) (CWE-1321)
2026-10-15 VulnCheck
6.0
CVSS 4.0 · Vendor: VulnCheck
View

Attack ChainAIDerived

Hypothetical attack flow derived from CVE metadata – not a confirmed exploit chain

  1. Access
    Gain ability to supply CASL rule conditions
  2. Delivery
    Inject dotted key e.g. 'toString.call'
  3. Exploit
    rulesToFields expands path onto inherited builtin
  4. Execution
    Shared Object.prototype function corrupted process-wide
  5. Impact
    Node.js process denial of service

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 application (1) uses @casl/ability between 6.7.5 and 7.0.2, (2) calls rulesToFields() on an ability, and (3) allows an attacker to control the keys of a rule's conditions object so that a dotted key such as 'toString.call', 'hasOwnProperty', or 'valueOf' can be supplied. The dotted path is then expanded via the internal setByPath helper and reaches an inherited builtin, mutating Object.prototype members shared across the whole process. Limiting factors: the attacker must have write influence over rule-condition construction (PR:L - typically a server-side or privileged operation, not raw external input), the CVSS 4.0 vector marks High attack complexity and a Present attack requirement (AC:H/AT:P), and the impact is confined to availability (process DoS) with no confidentiality or integrity consequence. Applications that never expose rule-condition keys to untrusted data, or that do not use rulesToFields(), are not exploitable.

Impact

This is a moderate-severity, availability-only issue, not an urgent priority. The supplied CVSS 4.0 vector (AV:N/AC:H/AT:P/PR:L/UI:N) scores 6.0 and limits impact to availability (VA:H) with no confidentiality or integrity effect (VC:N/VI:N) - consistent with a prototype-pollution bug that corrupts shared Node.js builtins to crash the process rather than achieve RCE or data theft. Exploitation is gated by High attack complexity (AC:H), a Present attack requirement (AT:P), and Low privileges (PR:L), meaning the attacker must already be able to supply CASL rule conditions, which in most deployments is a privileged/server-side operation rather than arbitrary external input. No EPSS score, KEV listing, or POC indicator is present in the input, so there is no signal of active or widespread exploitation - the disclosure comes from VulnCheck research with a vendor patch. Net assessment: a real but conditional DoS affecting applications that feed attacker-influenceable conditions into rulesToFields(); treat as a dependency-hygiene patch rather than an emergency. NOTE: the real-world PR level depends entirely on whether the host application exposes rule-condition construction to untrusted actors - verify in your own code path.

Exploit ScenarioDerived

An attacker who can influence the condition objects of CASL rules (for example an application that builds authorization rules from user-supplied filter/query input) submits a dotted key such as 'toString.call' with a value. When the application calls rulesToFields() to derive field defaults, the dotted key walks into and overwrites a shared builtin function on Object.prototype process-wide, corrupting it for all code and crashing or destabilizing the Node.js process. No public exploit identified at time of analysis, and the network-reachable path still carries high attack complexity (AC:H).

This Month Plan within 30 days. Why: MEDIUM severity (CVSS 4.0-6.9).
Patch available 0.4% exploitation probability (EPSS)

Get an e-mail when this CVE is exploited, patched or re-scored. Free account.

Alert me

AnalysisAIv1 – Oct 15, 2026

Denial of service in the @casl/ability npm package (6.7.5 through 7.0.1) stems from prototype pollution in the rulesToFields() helper, which expands attacker-influenced dotted condition keys through an internal setByPath utility and can overwrite inherited builtins such as Function.prototype.call, corrupting shared objects process-wide and crashing the Node.js process. Only applications that call rulesToFields() on rule conditions whose keys are under an attacker's write influence are affected, and the required access is authenticated (PR:L) with high attack complexity, so exposure is conditional rather than broad. The impact is availability only (no confidentiality or integrity loss), no public exploit code has been identified at time of analysis, and the flaw is not listed in CISA KEV, making this a moderate-severity issue rather than an urgent one.

RemediationAI

Upgrade @casl/ability to 7.0.2 or later - the vendor-released patch that fixes this issue; the fix is visible in the upstream references at https://github.com/stalniy/casl/commit/58242cb3c7911c8a89bacfb7d732701d81bc1324 and https://github.com/stalniy/casl/pull/1305, with additional detail at https://www.vulncheck.com/advisories/casl-ability-6.7.5-before-7.0.2-prototype-pollution-via-rulestofields-setbypath. If an immediate upgrade is not possible, the highest-value compensating control is to stop feeding attacker-influenced condition keys into rulesToFields(): validate and reject condition keys containing dots, as well as '__proto__', 'constructor', and 'prototype', at the boundary where rules are built (side effect: legitimate nested-condition keys must be restructured into explicit nested objects instead of dotted strings, which can require application changes). Because the assessed prerequisite is authenticated write influence over rule-condition construction (PR:L), restricting rule authoring to trusted server-side code or privileged roles measurably reduces exposure. Defensively freezing or null-prototyping Object.prototype/Function.prototype is not recommended as a general workaround: freezing Object.prototype must occur before any pollution and has process-wide side effects that frequently break third-party libraries, while per-call sanitization of condition keys carries no such risk.

Affected VersionsENISA

@casl/ability 6.7.5 <7.0.2

Affected Packages

euvd casl_ability fix: 7.0.2

Source: OSV (Open Source Vulnerabilities)

Affects your stack

Affects 1 package in euvd

Checking this CVE against your own stacks and servers is part of the Basic plan and up.

Technical ContextAI · show details

CASL is a JavaScript/TypeScript authorization library in which an Ability is composed of rules, each carrying action, subject, and an optional conditions object. The rulesToFields() utility (part of the @casl/ability package, sourced from packages/casl-ability/src/utils.ts) converts those conditions into a flat field map, and dotted condition keys are expanded into nested objects by an internal setByPath helper that walks the path segment by segment. Because the traversal writes into whatever object it reaches rather than into a guaranteed own, prototype-free object, a key such as 'toString.call', 'hasOwnProperty.call', or 'valueOf' can resolve to an inherited builtin function on Object.prototype/Function.prototype and mutate it for the entire process. This is CWE-1321 (improperly controlled modification of object prototype attributes, i.e. prototype pollution); the practical consequence is that a polluted builtin throws or misbehaves for all code in the process, producing a denial of service. The vendor fix (commit 58242cb3c7911c8a89bacfb7d732701d81bc1324, PR #1305) is corroborated by new tests showing null-prototype result objects (Object.getPrototypeOf(object) === null), skipping of '__proto__', 'constructor', and 'prototype' as final properties, replacement of non-object/array intermediate values when expanding dotted paths, and dotted-path merging that produces own properties instead of touching builtins. CPE data identifies the affected artifact as cpe:2.3:a:stalniy:@casl/ability; because the code is an npm library, exploitation depends entirely on how the consuming application uses it.

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

Vendor (VulnCheck) PRIMARY 6.0 MEDIUM
CVSS:4.0/AV:N/AC:H/AT:P/PR:L/UI:N/VC:N/VI:N/VA:H/SC:N/SI:N/SA:N
vuln.today AI 5.3 MEDIUM

Attacker must control rule conditions (PR:L) and overcome non-trivial path/key constraints (AC:H); impact is process-wide DoS only, so C:N/I:N/A:H with no scope change.

3.1 AV:N/AC:H/PR:L/UI:N/S:U/C:N/I:N/A:H
4.0 AV:N/AC:H/AT:P/PR:L/UI:N/VC:N/VI:N/VA:H/SC:N/SI:N/SA:N

Primary rating from Vendor (VulnCheck).

CVSS VectorVendor: VulnCheck

Attack Vector
Network
Attack Complexity
High
Attack Requirements
Present
Privileges Required
Low
User Interaction
None
Vulnerable system: Confidentiality
None
Vulnerable system: Integrity
None
Vulnerable system: Availability
High
Subsequent system: Confidentiality
None
Subsequent system: Integrity
None
Subsequent system: Availability
None

DescriptionCVE.org

@casl/ability 6.7.5 before 7.0.2 contains a prototype pollution vulnerability in rulesToFields() that allows attackers to modify inherited builtins via dotted condition keys. Attackers controlling rule conditions can supply keys like 'toString.call' to alter shared builtin functions process-wide, causing denial of service for the Node.js process.

Threat Intelligence Overview

EPSS Score
0.4%
Top 69% exploitable
Prevalence
Medium
popular Node.js authorization library, but not universally deployed
Data Quality
6 sources
Confidence: High

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.

SignalValue
Severity MEDIUM
CISA KEV No
Public POC No
EPSS 0.4%
Patch available Yes
Active threat No
Deciding rule
MEDIUM severity (CVSS 4.0-6.9)
What every action level means
Emergency Immediate action required. Criteria: CRITICAL + in CISA KEV (actively exploited) without patch, OR CRITICAL + EPSS > 30% without patch, OR CRITICAL + active threat signals without patch.
Act Now Prioritize within 24-48h. Criteria: in KEV with patch available, OR CRITICAL + public POC, OR HIGH + EPSS > 10%, OR CRITICAL + active threat, OR any CRITICAL severity.
This Week Schedule remediation this week. Criteria: HIGH severity (CVSS 7.0-8.9). Patch within normal change window.
This Month Plan within 30 days. Criteria: MEDIUM severity (CVSS 4.0-6.9), lower exploitation probability. Include in regular patch cycle.
Monitor Track and reassess. Criteria: LOW severity (CVSS 0.1-3.9), minimal exploitation risk. No immediate action needed.

SSVC AssessmentENISA

SSVC Decision· derived
Scheduled
Exploitation
None
System Exposure· derived
Open
Automatable
No
Human Impact· derived
Medium
Technical Impact
Partial

Priority Score

30
Low Medium High Critical
KEV: 0
EPSS: 0
CVSS: +30
PoC: 0
Weaponized: 0
Threat intel: 0
Gov advisory: 0

Attack Technique

Denial of Service attacks render applications or systems unavailable by overwhelming resources or triggering failure conditions.

CVE-2026-34621 HIGH POC
8.6 Apr 11

Prototype pollution in Adobe Acrobat Reader versions 24.001.30356, 26.001.21367 and earlier enables arbitrary code execu

CVE-2021-23450 CRITICAL POC
9.8 Dec 17

All versions of package dojo are vulnerable to Prototype Pollution via the setObject function. Rated critical severity (

CVE-2024-56059 CRITICAL
9.8 Dec 18

Prototype pollution in the farinspace Partners WordPress plugin (versions up to and including 0.2.0) enables remote unau

CVE-2021-23383 CRITICAL POC
9.8 May 04

The package handlebars before 4.7.7 are vulnerable to Prototype Pollution when selecting certain compiling options to co

CVE-2020-7788 CRITICAL POC
9.8 Dec 11

This affects the package ini before 1.3.6. Rated critical severity (CVSS 9.8), this vulnerability is remotely exploitabl

CVE-2020-28271 CRITICAL POC
9.8 Nov 12

Prototype pollution vulnerability in 'deephas' versions 1.0.0 through 1.0.5 allows attacker to cause a denial of service

CVE-2023-38894 CRITICAL POC
9.8 Aug 16

A Prototype Pollution issue in Cronvel Tree-kit v.0.7.4 and before allows a remote attacker to execute arbitrary code vi

CVE-2024-24292 CRITICAL POC
9.8 Mar 28

A Prototype Pollution issue in Aliconnect /sdk v.0.0.6 allows an attacker to execute arbitrary code via the aim function

CVE-2023-26121 CRITICAL POC
10.0 Apr 11

All versions of the package safe-eval are vulnerable to Prototype Pollution via the safeEval function, due to improper s

CVE-2021-23449 CRITICAL POC
10.0 Oct 18

This affects the package vm2 before 3.9.4 via a Prototype Pollution attack vector, which can lead to execution of arbitr

CVE-2024-39011 CRITICAL POC
9.8 Jul 30

Prototype Pollution in chargeover redoc v2.0.9-rc.69 allows attackers to execute arbitrary code or cause a Denial of Ser

CVE-2024-38988 CRITICAL POC
9.8 Mar 28

alizeait unflatto <= 1.0.2 was discovered to contain a prototype pollution via the method exports.unflatto at /dist/inde

This site uses cookies essential for authentication and security. No tracking or analytics cookies are used. Privacy Policy