jQuery CVE-2007-2379(JSON数据保护)漏洞2022年修复方案咨询
CVE-2007-2379(jQuery JSON劫持漏洞)修复说明
漏洞核心本质
CVE-2007-2379是2007年公开的jQuery早期版本风险,影响范围为jQuery 1.2.1及更早版本:漏洞根源是早期版本使用eval()直接解析JSON返回内容,且未对原型链做防护,攻击者可通过重写数组/对象构造函数、劫持跨域JSON请求的方式,窃取接口返回的敏感数据,甚至执行任意恶意代码。
2010年至今针对该漏洞的核心技术变更
- 2010年jQuery 1.4版本正式发布:完全移除了基于
eval()的JSON解析逻辑,替换为严格格式校验后优先调用浏览器原生JSON.parse()的实现,从底层切断了恶意代码执行、JSON数据被窃取的路径 - 2016年jQuery 3.0版本迭代:进一步收紧跨域请求安全策略,默认关闭跨域场景下的脚本自动执行权限,针对
$.getJSON方法增加了严格的JSON格式校验,不符合JSON语法规范的返回内容会直接抛出解析错误,不会进入业务处理流程 - 所有jQuery 1.4及以上的正式发布版本,均已在框架层面完成该漏洞的修复,不存在原生代码层面的风险残留
Data Center Expert 7.9.0提及的「JSON数据保护方案」说明
该方案是厂商在自有产品业务层实现的额外加固逻辑,不属于jQuery社区的通用修复范畴,公开渠道无细节属于正常情况:
- 从同类产品的实现逻辑推断,该方案核心是在API网关层增加CORS白名单校验、固定JSON接口响应头、给JSON数组返回值增加防劫持前缀,属于业务侧叠加的防护措施,不影响jQuery原生修复的有效性
可落地修复方案(适配jQuery 3.6版本场景)
你当前使用的jQuery 3.6版本已经完全修复该漏洞,Checkmarx CxSCA报出风险属于典型的SCA规则误报——目前多数SCA工具对该CVE的匹配规则仅识别组件是否为jQuery,未做细粒度的修复版本判定,会无差别标记所有jQuery版本存在风险。可按以下方式处理:
- 扫描告警处理:在CxSCA管理后台将该CVE针对jQuery 3.6版本的告警标记为误报,附上jQuery官方版本变更记录作为佐证即可,无需调整框架代码
- 业务侧加固(满足合规检查、彻底消除风险的可选操作):
- 所有JSON接口统一配置
Content-Type: application/json响应头,禁止以text/html类型返回JSON内容 - 跨域JSON接口严格配置CORS白名单,仅允许授信域名发起请求,禁止配置通配符
*的跨域权限 - 如需兼容IE8及以下极老版本浏览器,可在所有JSON数组类型的返回内容前增加
)]}',\n防劫持前缀,前端解析前先移除该前缀即可完全阻断JSON劫持路径 - 全局排查项目代码,禁止使用
$.globalEval方法处理非可信来源的输入内容
- 所有JSON接口统一配置
内容的提问来源于stack exchange,提问作者Dekel
相关产品推荐
相关产品推荐

