Magento会话劫持与RCE严重漏洞CVE-2025-54236
Adobe Commerce 是一款组合式电子商务解决方案,该组合式商务平台可用于通过单一云原生平台快速创建全球多品牌 B2C 和 B2B 体验。
运用它来营造个性化、高性能的店面体验,有效提高流量、转化率和 GMV,借助灵活的组合式商务平台缩短上市时间并降低持续维护成本。
一、基本情况
Adobe Commerce是个以体验为导向的平台,以独一无二的方式在技术灵活性和易用性间提供平衡,满足企业对性能、规模和安全性要求。

Adobe Commerce 采用一种现代化实施方法,该方法会使用Adobe最新的可组合商务解决方案,这对于企业企业的成功来说可谓至关重要。
栋科技漏洞库关注到 Adobe Commerce 多个版本中存在不当输入验证漏洞,漏洞现已被追踪为CVE-2025-54236,漏洞CVSS 3.X评分9.1。
二、漏洞分析
CVE-2025-54236漏洞是位于Adobe Commerce 2.4.9-alpha2、2.4.8-p2、2.4.7-p7、2.4.6-p12、2.4.5-p14和更早版本的不当输入验证漏洞。
攻击者成功利用该漏洞可接管用户会话,并在特定条件下实现对易受攻击服务器的未授权远程代码执行(RCE),漏洞利用无需用户交互。
阿卡迈安全情报集团(Akamai Security Intelligence Group)指出,已观察到SessionReaper(CVE-2025-54236)漏洞在野外被主动利用。
阿卡迈研究报告:自2025年10月22日起48小时内,针对超过130个不同主机的攻击尝试超过300次。这些攻击尝试来自11个不同的IP地址。
追踪编号为CVE-2025-54236的高危安全漏洞被称为“SessionReaper”,是一个影响Adobe Commerce和Magento开源平台的重要安全漏洞。
具体来说,CVE-2025-54236漏洞是Magento会话处理逻辑中的输入验证不当漏洞。成功利用SessionReaper可能导致未授权远程代码执行。
该漏洞最初被描述为会话劫持漏洞,不过,安全人员进一步分析后显示,攻击者可通过漏洞链,在未打补丁的服务器上执行任意PHP代码。
CVE-2025-54236突显了在API驱动系统中进行严格输入验证的重要性。
作为基于反序列化的漏洞,它呼应了过去类似问题,如CosmicSting(2024年),强调了在Magento的Web API框架中处理复杂对象的风险。
对于未打补丁的系统,立即应用热修复,并部署WAF和对恶意软件进行扫描。
开发人员必须审查自定义模块以检查构造函数注入风险,并进行定期安全审计。这个漏洞提醒了电子商务平台不断变化的威胁环境。
三、根本原因和技术细节
1、根本原因
该漏洞源于 Magento\Framework\Webapi\ServiceInputProcessor类中输入验证不充分,getConstructorData()方法中具体存在该问题。
该方法处理API有效负载,将其转换为对象实例化的构造函数参数。
它支持标量类型(字符串、整数、浮点数、布尔值)和API数据接口(*\Api\Data\*Interface),但未能充分验证复杂的嵌套对象,导致不安全的反序列化。
2、易受攻击的代码路径
核心问题在于反序列化过程中对嵌套对象的处理。
当 REST API 请求(例如,/rest/V1/customers/{id})包含一个复杂对象时,
ServiceInputProcessor 会尝试在没有严格类型检查的情况下进行反序列化,从而实现对象注入。
这可以操纵存储在var/session/sess_*文件中的会话数据,特别是在基于文件的会话存储中,
可能通过 PHP 的unserialize()函数(例如,通过__wakeup()或 gadget chains)触发 RCE。
3、易受攻击的简化伪代码getConstructorData()方法:
// Vulnerable: ServiceInputProcessor::getConstructorData() - Pseudocode
function getConstructorData(array $inputData, string $className): object {
$params = [];
foreach ($inputData as $key => $value) {
if (is_scalar($value) || $this->isApiDataInterface($className, $key)) {
$params[$key] = $value; // Scalar types or interfaces accepted
} elseif (is_array($value) || is_object($value)) {
// Insufficient validation: Nested objects deserialized
$nestedClass = $this->resolveNestedClass($key);
$params[$key] = $this->processNestedData($value, $nestedClass); // Attack vector
} else {
throw new \Magento\Framework\Webapi\Exception("Invalid input type for {$key}");
}
}
// Object instantiation, potentially with malicious session
return $this->objectManager->create($className, $params);
}
该processNestedData()调用(在此简化)触发了攻击者控制的数据的反序列化,可能覆盖会话文件或在基于文件存储场景中执行恶意代码。
这种行为类似于过去的反序列化漏洞,例如CosmicSting(2024)。
4、利用机制
(1)剥削包括两个主要部分:
构建恶意会话:攻击者创建一个包含恶意代码的序列化PHP对象(例如,通过system()调用__destruct())。
触发嵌套反序列化:精心构造的JSON有效负载被发送到一个API端点,利用反序列化漏洞操纵会话数据或执行代码。
(2)详细利用步骤:
步骤 1:生成一个序列化的有效负载(例如,一个包含恶意 __wakeup() 或 __destruct() 方法的 PHP 对象)。
步骤 2:将有效负载嵌入 API 请求中的嵌套对象内(例如,客户更新端点)。
步骤 3:发送请求,触发 ServiceInputProcessor中的反序列化。
步骤 4:实现会话劫持(账户劫持)或 RCE(在基于文件的存储中)。
伪代码说明了利用流程(服务器端模拟):
// Exploitation Flow Pseudocode - Attacker Side
$maliciousPayload = serialize(new MaliciousObject('system("whoami")')); // RCE-capable serialized object
$apiRequest = [
'customer' => [
'details' => [
'nested' => unserialize($maliciousPayload) // Triggers deserialization
]
]
];
// Simulate API call (e.g., via cURL)
$ch = curl_init('https://target/rest/V1/customers/update');
curl_setopt($ch, CURLOPT_POSTFIELDS, json_encode($apiRequest));
curl_setopt($ch, CURLOPT_HTTPHEADER, ['Content-Type: application/json']);
curl_exec($ch);
// Result: Session file corrupted, potential RCE
对于基于非文件的存储(Redis,数据库),可能需要额外的向量,如键操作,但会话接管仍然可行。
攻击是可自动化的,使其可以针对多个电子商务网站进行扩展。
四、PoC概念验证
以下 PoC 是一个用于教育目的的高级伪代码模拟。由于出于伦理原因需要隐瞒具体细节,它不是一个功能性漏洞利用。
管理员已设置登录后刷新可查看这个 PoC 模拟将恶意序列化对象注入到嵌套的 API 数据包中以触发反序列化。
在真实场景中,数据包将是一个针对特定端点的 PHP 序列化对象。修补后的系统将拒绝此类请求。
五、影响范围
Adobe Commerce (all deployment methods):
2.4.9-alpha2 and earlier
2.4.8-p2 and earlier
2.4.7-p7 and earlier
2.4.6-p12 and earlier
2.4.5-p14 and earlier
2.4.4-p15 and earlier
Adobe Commerce B2B:
1.5.3-alpha2 and earlier
1.5.2-p2 and earlier
1.4.2-p7 and earlier
1.3.4-p14 and earlier
1.3.3-p15 and earlier
Magento Open Source:
2.4.9-alpha2 and earlier
2.4.8-p2 and earlier
2.4.7-p7 and earlier
2.4.6-p12 and earlier
2.4.5-p14 and earlier
Custom Attributes Serializable module:
versions 0.1.0 to 0.4.0
六、修复建议
For Adobe Commerce versions:
2.4.9-alpha1, 2.4.9-alpha2
2.4.8, 2.4.8-p1, 2.4.8-p2
2.4.7, 2.4.7-p1, 2.4.7-p2, 2.4.7-p3, 2.4.7-p4, 2.4.7-p5, 2.4.7-p6, 2.4.7-p7
2.4.6, 2.4.6-p1, 2.4.6-p2, 2.4.6-p3, 2.4.6-p4, 2.4.6-p5, 2.4.6-p6, 2.4.6-p7, 2.4.6-p8, 2.4.6-p9 2.4.6-p10, 2.4.6-p11, 2.4.6-p12
2.4.5, 2.4.5-p1, 2.4.5-p2, 2.4.5-p3, 2.4.5-p4, 2.4.5-p5, 2.4.5-p6, 2.4.5-p7, 2.4.5-p8, 2.4.5-p9, 2.4.5-p10, 2.4.5-p11, 2.4.5-p12,
2.4.5-p13, 2.4.5-p14
2.4.4, 2.4.4-p1, 2.4.4-p2, 2.4.4-p3, 2.4.4-p4, 2.4.4-p5, 2.4.4-p6, 2.4.4-p7, 2.4.4-p8, 2.4.4-p9, 2.4.4-p10, 2.4.4-p11, 2.4.4-p12, 2.4.4-p13,
2.4.4-p14, 2.4.4-p15
For Adobe Commerce B2B versions:
1.5.3-alpha1, 1.5.3-alpha2
1.5.2, 1.5.2-p1, 1.5.2-p2
1.5.1
1.5.0
1.4.2, 1.4.2-p1, 1.4.2-p2, 1.4.2-p3, 1.4.2-p4, 1.4.2-p5, 1.4.2-p6, 1.4.2-p7
1.4.1
1.4.0
1.3.5, 1.3.5-p1, 1.3.5-p2, 1.3.5-p3, 1.3.5-p4, 1.3.5-p5, 1.3.5-p6, 1.3.5-p7, 1.3.5-p8,1.3.5-p9, 1.3.5-p10, 1.3.5-p12
1.3.4, 1.3.4-p1, 1.3.4-p2, 1.3.4-p3, 1.3.4-p4, 1.3.4-p5, 1.3.4-p6, 1.3.4-p7, 1.3.4-p8, 1.3.4-p9, 1.3.4-p10, 1.3.4-p11, 1.3.4-p12, 1.3.4-p13,
1.3.4-p14
1.3.3, 1.3.3-p1, 1.3.3-p2, 1.3.3-p3, 1.3.3-p4, 1.3.3-p5, 1.3.3-p6, 1.3.3-p7, 1.3.3-p8, 1.3.3-p9, 1.3.3-p10, 1.3.3-p11, 1.3.3-p12, 1.3.3-p13,
1.3.3-p14, 1.3.3-p15
For Magento Open Source versions:
2.4.9-alpha1, 2.4.9-alpha2
2.4.8, 2.4.8-p1, 2.4.8-p2
2.4.7, 2.4.7-p1, 2.4.7-p2, 2.4.7-p3, 2.4.7-p4, 2.4.7-p5, 2.4.7-p6, 2.4.7-p7
2.4.6, 2.4.6-p1, 2.4.6-p2, 2.4.6-p3, 2.4.6-p4, 2.4.6-p5, 2.4.6-p6, 2.4.6-p7, 2.4.6-p8, 2.4.6-p9 2.4.6-p10, 2.4.6-p11, 2.4.6-p12
2.4.5, 2.4.5-p1, 2.4.5-p2, 2.4.5-p3, 2.4.5-p4, 2.4.5-p5, 2.4.5-p6, 2.4.5-p7, 2.4.5-p8, 2.4.5-p9, 2.4.5-p10, 2.4.5-p11, 2.4.5-p12, 2.4.5-p13,
2.4.5-p14
七、参考链接
管理员已设置登录后刷新可查看