CVE-2025-61924CVE-2025-61924是PrestaShop官方与PayPal合作推出的支付模块PrestaShop Checkout中存在的一个安全漏洞。该漏洞源于后端代码中对PHP array_search()函数的错误使用,导致经过身份验证的高权限用户(如后台管理员)可以通过操纵请求参数,将目标PayPal商户账户劫持到攻击者控制的PayPal账户上。
该漏洞的CVSS 3.1评分为3.8分,属于低危级别。攻击向量为网络攻击(AV:N),攻击复杂度低(AC:L),但需要高权限(PR:H)才能利用,无需用户交互(UI:N)。成功利用该漏洞后,攻击者可以对目标商户的PayPal账户进行未授权的修改或劫持操作,导致商户的支付资金流向发生改变,造成财务损失。
该漏洞影响PrestaShop Checkout模块4.4.1之前的所有4.x版本以及5.0.5之前的所有5.x版本。官方已在4.4.1和5.0.5版本中修复了该漏洞,建议所有使用受影响版本的用户尽快升级到修复版本以保护其在线商店的支付安全。
该漏洞的核心问题在于PHP array_search()函数的错误使用。array_search()函数用于在数组中搜索指定的值,并返回对应的键名。在PHP中,当array_search()未使用严格比较(strict mode,即第三个参数未设置为true)时,会进行松散比较(loose comparison),这可能导致类型混淆问题。
在PrestaShop Checkout模块的后台管理功能中,代码使用array_search()来验证或匹配某些与PayPal商户账户相关的标识符(如PayPal Merchant ID)。由于缺少严格比较,攻击者可以构造特殊的输入值(例如,将整数0或空字符串作为参数传递),使得array_search()函数返回非预期的匹配结果,从而绕过身份验证或授权检查。
具体利用方式为:具有后台管理员权限的攻击者通过精心构造的HTTP请求,向PrestaShop Checkout模块的后台接口发送包含恶意PayPal Merchant ID参数的请求。由于array_search()的松散比较缺陷,模块会将攻击者控制的PayPal账户识别为合法的目标商户账户,并完成账户绑定或切换操作。这样,攻击者就成功劫持了目标商户的PayPal支付账户,后续所有通过该模块处理的支付交易将被路由到攻击者控制的PayPal账户中。