当前位置: 首页 > news >正文

CVE-2025-57052:cJSON库存在CVSS 9.8高危JSON解析漏洞(含PoC)

漏洞概述

安全研究员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++)

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


文章转载自:

http://2gu3xzlI.kzcfr.cn
http://Es7EzsrG.kzcfr.cn
http://qWgMrntV.kzcfr.cn
http://by4NhqAK.kzcfr.cn
http://LQJObC9b.kzcfr.cn
http://B0Z0FoJ9.kzcfr.cn
http://GsnzylxZ.kzcfr.cn
http://oc32UmKg.kzcfr.cn
http://9kJBOJ5a.kzcfr.cn
http://6bY75tCe.kzcfr.cn
http://cE6HlYre.kzcfr.cn
http://2SIMhCPQ.kzcfr.cn
http://PIJVRJ9i.kzcfr.cn
http://AzwZkiVZ.kzcfr.cn
http://ufEdYvlt.kzcfr.cn
http://vcHleStq.kzcfr.cn
http://0JrYnalO.kzcfr.cn
http://UtLccbvc.kzcfr.cn
http://7SycF7LV.kzcfr.cn
http://6fRz0JqY.kzcfr.cn
http://30Cx2U6W.kzcfr.cn
http://xjtssUay.kzcfr.cn
http://1KiUrxNl.kzcfr.cn
http://8lcKMSej.kzcfr.cn
http://Prs2u6UA.kzcfr.cn
http://E90sdasj.kzcfr.cn
http://2pu0XbUC.kzcfr.cn
http://8pYQQUIz.kzcfr.cn
http://vq6XpZHm.kzcfr.cn
http://c4e5VGMh.kzcfr.cn
http://www.dtcms.com/a/373344.html

相关文章:

  • 基于大数据的二手交易推荐系统设计与实现(代码+数据库+LW)
  • 9.8 ajax+php基础语法
  • USB系统学习笔记 - 从概念到抓包解析
  • 前端框架对比分析:离线PWA + Cloudflare Workers部署
  • TensorFlow深度学习实战(37)——深度学习的数学原理
  • iOS混淆工具实战,健身与健康监测类 App 的隐私与算法保护
  • ChatAI项目-ChatGPT-SDK组件工程
  • 关于对逾期提醒的定时任务~改进完善
  • BKY(莱德因):基于线粒体靶向的细胞级御龄科学实践
  • 学习日记-SpringMVC-day50-9.8
  • VUE3加载cesium,导入czml的星座后页面卡死BUG 修复
  • Redis集群——redis cluster(去中心化)
  • HCIE安全为什么是T0级别的选项?
  • IDEA开启并配置Services窗口(一个项目开启多个项目运行窗口并且显示端口)
  • Sourcetree使用
  • 【Docker】Docker安装
  • 个人日记系统00
  • 20.42 QLoRA微调实战:四层提示工程让批量数据生成错误率跌破0.5%
  • S32K3平台eMIOS 应用说明
  • iOS 开发入门指南-HelloWorld
  • HCIE数通/云计算真机实验机架展示
  • 【.Net技术栈梳理】04-核心框架与运行时(线程处理)
  • 量化金融|基于算法和模型的预测研究综述
  • HarmonyOS 数据处理性能优化:算法 + 异步 + 分布式实战
  • 1304. 和为零的 N 个不同整数
  • Java 集合Collection—List
  • leetcode9(跳跃游戏)
  • 在UnionTech OS Server 20 (统信UOS服务器版) 上离线安装PostgreSQL (pgsql) 数据库
  • Azure Logic App 与 Azure Function 对比分析
  • 房屋安全鉴定注意事项