Angular 表达式沙箱逃逸 CVE-2026-44643 允许 RCE
Angular 表达式 <1.5.2 中的 CVE-2026-44643 允许攻击者通过恶意过滤器表达式逃离沙箱,在系统上执行任意代码。

执行摘要
一个严重的沙箱逃逸漏洞,被追踪为 CVE-2026-44643,已在 angular-expressions 库中披露——这是一个独立的模块,提供 Angular.JS 表达式解析,不依赖于完整的 Angular 框架。1.5.2 版本之前的版本允许攻击者使用过滤器构建恶意表达式,突破预期的沙箱并在底层系统上执行任意代码。维护者发布了 1.5.2 版本以解决这个缺陷。该漏洞是通过项目的 GitHub 安全咨询渠道报告的;截至本文撰写时,尚未发布 CVSS 评分。
技术分析
angular-expressions 库被需要在非浏览器环境(如 Node.js 或服务器端渲染管道)中使用 Angular.JS 风格的模板表达式(例如 {{ expression | filter }})的开发人员使用。沙箱旨在限制表达式评估到安全的属性访问和函数调用,防止访问危险的全局变量,如 process、require 或 eval。
根据在项目 GitHub 仓库上发布的咨询,当表达式包含 filters —— 一个链式值转换的特性时,沙箱执行失败。攻击者可以提供一个过滤器表达式,在评估期间,该表达式逃逸沙箱上下文并获得对完整 JavaScript 运行时的访问。咨询声明:“攻击者可以使用过滤器编写恶意表达式,逃逸沙箱以在系统上执行任意代码。”
公共咨询中没有详细说明逃逸的具体机制,但历史上类似的 Angular.JS 沙箱逃逸通常利用过滤器函数是针对全局范围或原型链解析的事实,允许攻击者通过属性遍历访问 Function 或 eval 等构造函数。1.5.2 版本的修复可能限制了过滤器解析到白名单或应用了更严格的上下文隔离。
重要的是,这个漏洞影响任何使用 angular-expressions 来评估用户提供的或不受信任的表达式的应用程序。常见的用例包括配置引擎、低代码平台和服务器端渲染框架,其中处理用户定义的模板。由于该库通常在 Node.js 环境中使用,成功的利用可能导致完整的服务器妥协——任意文件读写、数据泄露或横向移动。
缓解措施与建议
所有 angular-expressions 的用户应立即升级到版本 1.5.2。咨询确认该修复包含在此版本中,并未记录任何替代方案。防御者应该:
- 通过扫描
package.json或锁定文件中的包名,识别所有依赖于angular-expressions的应用程序和服务。 - 使用
npm install [email protected]或等效命令更新到1.5.2。 - 审查任何将用户提供的表达式传递给库的代码路径——即使在修补后,也尽可能避免评估不受信任的表达式。
- 监控之前运行易受攻击版本的服务器上是否有后利用活动的迹象(意外的外向连接、文件修改)。
尚未分配 CVSS 评分,但鉴于沙箱逃逸导致任意代码执行,一旦评分,严重性可能是 Critical(CVSS 9.0–10.0)。
订阅更新
将最新的网络安全资讯直接发送到您的邮箱。
