CVEReports
CVEReports

Automated vulnerability intelligence platform. Comprehensive reports for high-severity CVEs generated by AI.

Product

  • Home
  • Sitemap
  • RSS Feed

Company

  • About
  • Contact
  • Privacy Policy
  • Terms of Service

© 2026 CVEReports. All rights reserved.

Made with love by Amit Schendel & Alon Barad



CVE-2026-44643

CVE-2026-44643: Sandbox Escape and Remote Code Execution in angular-expressions

Amit Schendel
Amit Schendel
Senior Security Researcher

May 11, 2026·5 min read·48 visits

Executive Summary (TL;DR)

A critical sandbox escape in angular-expressions < 1.5.2 allows RCE via prototype traversal in malicious filter definitions.

CVE-2026-44643 is a critical sandbox escape vulnerability in the peerigon/angular-expressions library. The flaw permits unauthenticated remote code execution via prototype traversal and improper validation of filter expressions. By crafting specific malicious inputs, attackers can access the global Function constructor.

Vulnerability Overview

The peerigon/angular-expressions library provides a standalone implementation of AngularJS expressions for Node.js and browser environments. The component relies on a dedicated sandbox mechanism to parse and evaluate user-supplied string expressions safely. This design restricts access to global objects, preventing standard JavaScript primitives from executing within the host context.

The vulnerability identified as CVE-2026-44643 constitutes an Eval Injection flaw (CWE-95). The breakdown occurs within the expression parsing logic, specifically where property access boundaries for filters are established. Attackers exploit this boundary failure by supplying carefully structured string expressions that traverse the JavaScript prototype chain.

Successful exploitation results in immediate, unauthenticated remote code execution. Systems evaluating untrusted input through the library are highly exposed, resulting in a CVSS 4.0 score of 9.3. The impact is particularly severe in backend Node.js environments where access to the process object grants comprehensive system control.

Root Cause Analysis

The root cause of the vulnerability is the insufficient validation of property access during the resolution of expression filters. The parser evaluates expression strings and dynamically looks up properties to apply the required filter logic. Prior to version 1.5.2, the compiler did not consistently require hasOwnProperty validation checks on the target objects.

This lack of strict property enforcement facilitates prototype traversal. Attackers construct payloads that reference the __proto__ or constructor attributes of the objects being evaluated. The parser processes these attributes sequentially, ascending the prototype chain instead of restricting lookups to the object's own properties.

Reaching the top of the prototype chain provides the attacker with a reference to the global Function constructor. The Function constructor dynamically generates and executes JavaScript code from raw string inputs. Invoking this constructor bypasses the library's intended containment, allowing interaction with the host environment and native Node.js libraries.

Code Analysis and Patch Review

In vulnerable versions, the files lib/parse.js and lib/main.js handled object property lookups directly without verifying ownership. The parser permitted expressions to navigate through the filter object and retrieve properties inherited from Object.prototype. This architectural decision left the constructor property entirely exposed during evaluation.

The remediation introduced in version 1.5.2 implements several structural hardening techniques. The primary defense is the introduction of a bounded hasOwn function replacing standard property lookups. This utility strictly calls Object.prototype.hasOwnProperty.call, preventing attackers from overriding or bypassing the check by mutating the evaluated object.

// Conceptual representation of the fix in lib/parse.js
// Before Patch
if (obj[key]) { return obj[key]; }
 
// After Patch
const hasOwn = Function.prototype.call.bind(Object.prototype.hasOwnProperty);
if (hasOwn(obj, key)) { return obj[key]; }

Additionally, the patch alters how the filter registry is instantiated. The registry is now initialized using Object.create(null). This creates a null-prototype object, effectively stripping the __proto__ and constructor properties from the root filter context. The ASTCompiler was also modified to detect and block explicit prototype traversal syntaxes.

Exploitation Methodology

Exploitation requires the application to pass user-controlled strings into the angular-expressions evaluation function. The attacker embeds a malicious payload within standard AngularJS filter syntax. The payload appears syntactically valid to the parser but logically forces the evaluation engine to navigate the object tree.

A functional exploit payload uses consecutive constructor calls to step outside the sandbox constraints. The following string demonstrates the bypass mechanism:

"1 | filter: 'constructor.constructor(\"return process\")().mainModule.require(\"child_process\").execSync(\"id\")()'"

When the parser processes this string, the filter lookup resolves the constructor of the filter function itself. The second constructor call accesses the global Function constructor. The attacker passes "return process" to retrieve the active Node.js process object, subsequent calls require the child_process module, and finally invoke execSync to execute arbitrary operating system commands.

Impact Assessment

The execution of arbitrary code via this vulnerability completely compromises the host application. The attacker executes instructions with the privileges of the underlying Node.js process. This level of access typically permits the extraction of sensitive environment variables, database connection strings, and application configuration files.

The CVSS v4.0 vector (CVSS:4.0/AV:N/AC:L/AT:N/PR:N/UI:N/VC:H/VI:H/VA:H/SC:N/SI:N/SA:N) reflects the critical severity of the flaw. The attack vector is strictly network-based, requires no special privileges, and functions independently of user interaction. The impact metrics for confidentiality, integrity, and availability are fully maximized.

In containerized or cloud-native environments, the compromised Node.js process can serve as a staging point for lateral movement. The attacker utilizes standard post-exploitation techniques to pivot into internal networks or cloud service metadata endpoints.

Remediation and Mitigation

The primary remediation step is upgrading the angular-expressions dependency to version 1.5.2 or later. This patch fundamentally alters the object property lookup mechanism and removes the prototype chain from the filter registry. Applying this update neutralizes the known exploitation vectors immediately.

If immediate patching is unfeasible, administrators must apply runtime mitigations. Node.js applications should be executed with the --disable-proto=delete flag. This command-line argument globally disables __proto__ mutations across the runtime, significantly degrading the reliability of prototype-based sandbox escapes.

Developers must implement stringent input validation on any strings passed to the expression evaluator. The application layer should reject inputs containing keywords explicitly associated with traversal or code execution, such as constructor, __proto__, Function, or eval. Defense-in-depth measures, including rigorous Content Security Policies (CSP), restrict the execution scope even if an escape occurs.

Official Patches

peerigonCommit diff between 1.5.1 and 1.5.2

Technical Appendix

CVSS Score
9.3/ 10
CVSS:4.0/AV:N/AC:L/AT:N/PR:N/UI:N/VC:H/VI:H/VA:H/SC:N/SI:N/SA:N

Affected Systems

Node.js environments utilizing peerigon/angular-expressionsBrowser applications relying on client-side expression evaluation

Affected Versions Detail

Product
Affected Versions
Fixed Version
angular-expressions
peerigon
< 1.5.21.5.2
AttributeDetail
CWE IDCWE-95
CVSS v4.09.3
Attack VectorNetwork
ImpactRemote Code Execution (RCE)
Privileges RequiredNone
CISA KEV StatusNot Listed

MITRE ATT&CK Mapping

T1190Exploit Public-Facing Application
Initial Access
T1059.007Command and Scripting Interpreter: JavaScript
Execution
CWE-95
Eval Injection

Improper Neutralization of Directives in Dynamically Evaluated Code ('Eval Injection')

Vulnerability Timeline

Vulnerability published and CVE-2026-44643 assigned
2026-05-11
GitHub Advisory GHSA-pw8r-6689-xvf4 released
2026-05-11
Fixed version 1.5.2 released by Peerigon
2026-05-11

References & Sources

  • [1]GitHub Security Advisory GHSA-pw8r-6689-xvf4
  • [2]NVD Record for CVE-2026-44643
  • [3]angular-expressions GitHub Repository

Attack Flow Diagram

Press enter or space to select a node. You can then use the arrow keys to move the node around. Press delete to remove it and escape to cancel.
Press enter or space to select an edge. You can then press delete to remove it or escape to cancel.

More Reports

•25 minutes ago•CVE-2024-29203
4.3

CVE-2024-29203: Client-Side Cross-Site Scripting via Unsandboxed Iframes and Legacy Embed Elements in TinyMCE

CVE-2024-29203 identifies a cross-site scripting (XSS) vulnerability in the content ingestion and parsing mechanics of TinyMCE rich text editor. Due to a failure to enforce sandbox attributes on dynamic iframe elements and safely handle legacy embed objects, unauthenticated attackers can inject malicious elements that execute scripts within the context of the parent application session.

Amit Schendel
Amit Schendel
1 views•5 min read
•about 2 hours ago•CVE-2026-9277
8.1

CVE-2026-9277: OS Command Injection in shell-quote via Object-Token Line Terminator Parsing Defect

A technical breakdown of the OS command injection vulnerability in the shell-quote NPM package (CVE-2026-9277 / GHSA-w7jw-789q-3m8p). The bug resides in the character-by-character backslash-escaping logic applied to the .op field of object-tokens within the quote() function, which fails to match and escape line terminators due to a regex matching oversight in JavaScript. This allows unauthenticated remote attackers to execute arbitrary shell commands if they can control inputs processed by this library.

Alon Barad
Alon Barad
7 views•6 min read
•about 4 hours ago•CVE-2026-11645
8.8

CVE-2026-11645: Out-of-Bounds Memory Access in Google Chrome V8 Engine

A high-severity memory corruption vulnerability exists in the V8 JavaScript engine of Google Chrome before versions 149.0.7827.102/103. The flaw arises from an incorrect bounds-check elimination during JIT compilation by the TurboFan optimizer, allowing remote attackers to achieve out-of-bounds read and write access inside the sandboxed renderer process.

Amit Schendel
Amit Schendel
19 views•6 min read
•about 12 hours ago•CVE-2026-50751
9.3

CVE-2026-50751: Authentication Bypass in Check Point Security Gateway IKEv1 Legacy Validation

An improper authentication vulnerability (CWE-287) exists in the legacy, deprecated Internet Key Exchange version 1 (IKEv1) key exchange protocol implementation in Check Point Security Gateways. The vulnerability is caused by a logic flow weakness during the certificate validation process for Remote Access VPN and Mobile Access (SSL VPN) connections. An unauthenticated remote attacker can exploit this weakness to bypass user authentication entirely, establishing a fully functional Remote Access VPN connection without a valid password.

Alon Barad
Alon Barad
63 views•6 min read
•1 day ago•CVE-2026-39922
6.3

CVE-2026-39922: Server-Side Request Forgery in GeoNode Service Registration Endpoint

GeoNode versions prior to 4.4.5 and 5.0.2 are vulnerable to Server-Side Request Forgery (SSRF) in the service registration endpoint. Authenticated attackers with low privileges can exploit insufficient input validation in the Web Map Service (WMS) registration module to force the application server to make outbound network queries to loopback addresses, private RFC1918 subnets, link-local scopes, and cloud metadata endpoints. This technical report details the mechanics of the vulnerability, the underlying architectural flaw, and how to effectively remediate and mitigate the associated security risks.

Alon Barad
Alon Barad
4 views•7 min read
•1 day ago•CVE-2022-0492
7.8

CVE-2022-0492: Privilege Escalation and Container Escape via cgroups v1 release_agent

CVE-2022-0492 is a high-severity missing authorization vulnerability in the Linux kernel's Control Groups (cgroups) v1 implementation. The flaw resides within the cgroup_release_agent_write function in kernel/cgroup/cgroup-v1.c, where the kernel fails to validate if the process writing to the release_agent file possesses administrative capabilities in the initial user namespace. This allows a local attacker inside a container with root privileges (UID 0) to abuse user namespaces, mount a cgroups v1 directory, modify the release_agent parameter, and execute arbitrary commands on the host system as host root, effectively achieving a complete container escape.

Amit Schendel
Amit Schendel
12 views•7 min read