CVE-2025-57052:cJSON库存在CVSS 9.8高危JSON解析漏洞(含PoC)
安全研究员Salah Chafai披露轻量级C语言JSON解析库cJSON存在高危漏洞(CVE-2025-57052),CVSS评分9.8。该漏洞源于decode_array_index_from_pointer函数逻辑错误,攻击者可构造畸形JSON指针绕过数组边界检查,导致内存越界访问、段错误或拒绝服务攻击。修复方案已发布。 2025-9-7 16:4:33 Author: www.freebuf.com(查看原文) 阅读量:18 收藏

freeBuf

主站

分类

云安全 AI安全 开发安全 终端安全 数据安全 Web安全 基础安全 企业安全 关基安全 移动安全 系统安全 其他安全

特色

热点 工具 漏洞 人物志 活动 安全招聘 攻防演练 政策法规

官方公众号企业安全新浪微博

FreeBuf.COM网络安全行业门户,每日发布专业的安全资讯、技术剖析。

FreeBuf+小程序

FreeBuf+小程序

漏洞概述

安全研究员Salah Chafai(漏洞利用开发与安全专家)近日披露,轻量级C语言JSON解析库cJSON存在一个高危漏洞(编号CVE-2025-57052,CVSS评分9.8)。攻击者可构造畸形JSON指针绕过数组边界检查,导致内存越界访问、段错误、权限提升或拒绝服务攻击。

cJSON漏洞示意图

技术细节

该漏洞源于cJSON_Utils.c文件中的decode_array_index_from_pointer函数。研究报告指出:"循环错误地检查pointer[0]而非pointer[position],导致非数字字符被当作数组索引处理。"

这种逻辑错误意味着类似"0A"的输入会被解析为索引10,即使数组仅包含三个元素。此类越界访问可能导致应用程序崩溃,或在特定场景下允许攻击者读取/篡改预期范围外的内存。

漏洞验证

Chafai发布了一个简易C程序演示漏洞利用过程:当使用cJSON解析用户JSON数组时,合法索引"0"和"1"能正确返回Alice和Bob的数据,但精心构造的索引"0A"会使cJSON尝试访问不存在的第10个元素。

报告强调:"提供索引0A将导致cJSON访问越界的索引10,可能引发段错误(崩溃)。"

影响范围

由于cJSON被嵌入到无数项目中,受影响软件包括:

  • 处理JSON指针的Web API
  • 依赖轻量级解析器的嵌入式/IoT设备
  • 需要结构化JSON输入的桌面/服务器应用

报告警告:"任何使用cJSON解析JSON指针的软件...都可能遭受拒绝服务攻击。在可向JSON指针API提供畸形输入的环境中,风险尤为严重。"

攻击场景

攻击者可利用CVE-2025-57052实现:

  • 通过段错误使服务崩溃
  • 利用cJSON与atoi函数解析差异绕过应用层检查
  • 通过读取已分配内存区域外的数据实现权限提升或访问敏感信息

修复方案

修复方法简单直接:修正循环条件判断。

漏洞代码:

for (position = 0; (pointer[position] >= '0') && (pointer[0] <= '9'); position++)

修复后代码:

for (position = 0; (pointer[position] >= '0') && (pointer[position] <= '9'); position++)

该修复确保指针字符串中的每个字符在被解析为数组索引前都经过正确验证。

参考来源:

CVE-2025-57052: Critical JSON Parsing Flaw in cJSON With CVSS 9.8, PoC Available

本文为 独立观点,未经授权禁止转载。
如需授权、对文章有疑问或需删除稿件,请联系 FreeBuf 客服小蜜蜂(微信:freebee1024)


文章来源: https://www.freebuf.com/articles/network/447590.html
如有侵权请联系:admin#unsafe.sh