我们的 AI 引擎 Neutron 在加州大学伯克利分校的 CyberGym 基准测试中取得了 97.1% 的成绩。 了解更多

深度解析

深度解析

Magento 和 Adobe Commerce PolyShell RCE 已遭在野利用(CVE-2026-48356)

PolyShell(CVE-2026-48356)是 Magento REST API 中无需身份验证的文件上传漏洞,自 2026 年 3 月起遭到大规模利用;Adobe 的 2026 年 7 月补丁版本已修复。

要点速览

  • CVE-2026-48356 由发现它的 Sansec 研究团队命名为 PolyShell,是 Magento 和 Adobe Commerce REST API 中的无限制文件上传漏洞:未经身份验证的调用方可通过访客购物车商品路由,将可执行文件写入服务器。Adobe 的 CVE 记录将其评为 CVSS v3.1 9.3(AV:N/AC:L/PR:N/UI:R/S:C/C:H/I:H/A:N)。
  • 所有生产版本分支都受影响:Adobe Commerce 2.4.4 至 2.4.9、Magento Open Source 2.4.6 至 2.4.9 在安装 2026 年 7 月补丁之前的版本,以及 Commerce B2B 和 Adobe Commerce Events。2026 年 7 月的补丁版本(2.4.9-2026-jul、2.4.8-2026-jul 等)修复了受支持的版本线。
  • 该漏洞已遭大规模在野利用。Sansec 从 2026 年 3 月 19 日起记录到自动化大规模扫描;截至 4 月 14 日,其监测的商店中有 82% 已被上传恶意 PHP;在后续加载器攻击活动影响的 953 家商店中,Sansec 估计有 471 家通过 PolyShell 被注入。CISA 于 2026 年 10 月 27 日将 CVE-2026-48356 加入已知遭利用漏洞目录,联邦机构的修复截止日期为 2026 年 11 月 10 日。
  • 立即为您使用的分支安装 2026 年 7 月补丁。如果今天无法打补丁,请阻止对 pub/media/custom_options/ 的 Web 访问,并在 WAF 上过滤访客购物车 API 路由,然后使用下文的检查方法排查上传的 Web Shell 和 accesson.php 后门。

我是否受影响?

如果您运行的 Adobe Commerce、Magento Open Source、Adobe Commerce B2B 或 Adobe Commerce Events 属于下表中的版本,且 REST API(包括访客购物车路由)可通过网络访问,您就受影响。

Adobe 的 CVE 记录与 Sansec 对 2.4.9 正式发布版的判断存在分歧:CVE 记录将 2.4.9 标记为在安装 7 月补丁之前受影响,而 Sansec 报告称,2026 年 5 月 12 日发布的 2.4.9 正式版已包含修复。

Sansec 补充说明,7 月发布的版本将修复回移到了较旧的受支持版本线。在认定自己安全之前,请核实您的构建版本属于哪一种情况。

分支 受影响版本 修复版本
Adobe Commerce 2.4.9 版本线 安装 2026 年 7 月补丁之前的 2.4.9 据 Adobe 的 CVE 记录为 2.4.9-2026-jul;据 Sansec 为 2.4.9 GA(2026 年 5 月 12 日)
Adobe Commerce 2.4.8 版本线 2.4.8-p5 及更早版本 2.4.8-2026-jul
Adobe Commerce 2.4.7 版本线 2.4.7-p10 及更早版本 2.4.7-2026-jul
Adobe Commerce 2.4.6 版本线 2.4.6-p15 及更早版本 2.4.6-2026-jul
Adobe Commerce 2.4.5 版本线 2.4.5-p17 及更早版本 2.4.5-2026-jul
Adobe Commerce 2.4.4 版本线 2.4.4-p18 及更早版本 2.4.4-2026-jul
Adobe Commerce B2B 1.5.3;1.5.2-p5 及更早版本;1.4.2-p10 及更早版本;1.3.4-p17 及更早版本;1.3.3-p18 及更早版本 1.5.3-2026-jul, 1.5.2-2026-jul, 1.4.2-2026-jul, 1.3.4-2026-jul, 1.3.3-2026-jul
Magento Open Source 2.4.9 版本线 安装 2026 年 7 月补丁之前的 2.4.9 据 Adobe 的 CVE 记录为 2.4.9-2026-jul;据 Sansec 为 2.4.9 GA(2026 年 5 月 12 日)
Magento Open Source 2.4.8 版本线 2.4.8-p5 及更早版本 2.4.8-2026-jul
Magento Open Source 2.4.7 版本线 2.4.7-p10 及更早版本 2.4.7-2026-jul
Magento Open Source 2.4.6 版本线 2.4.6-p15 及更早版本 2.4.6-2026-jul
Adobe Commerce Events 1.20.0 及更早版本 1.21.0

请检查正在运行的实例上的版本,而非新镜像中的版本:

# From the Magento root directory
php bin/magento --version

# From the composer lock file
grep -A1 '"name": "magento/product-community-edition"' composer.lock   # Open Source
grep -A1 '"name": "magento/product-enterprise-edition"' composer.lock   # Adobe Commerce

# In a container
docker exec <container> php bin/magento --version

如何修复?

通过您通常使用的 Composer 或命令行升级流程,为所在分支安装 2026 年 7 月补丁版本(APSB26-73),然后验证 php bin/magento --version 是否报告已修复的版本。Adobe 公告提供了修复版本的权威列表。Sansec 将 2026 年 7 月的回移修复归于 APSB26-73,而将 2.4.9 正式发布版中的修复追溯到此前 2.4.9 预发布分支中的 APSB25-94 修复。

如果今天无法打补丁,可采用两项措施降低风险。两者均改编自 Sansec 公告:

  • 阻止对上传目录的 Web 访问。对于 nginx,在服务器配置中任何 \.php$ location 块之前加入以下配置块,避免 PHP 处理器优先匹配:
location ~* ^/pub/media/custom_options/ {
    return 403;
}

对于 Apache,请验证 pub/media/custom_options/.htaccess 存在且包含以下内容:

<IfModule mod_php.c>
    php_flag engine 0
</IfModule>
Deny from all

Sansec 指出,大多数商店使用托管服务商自定义的 Web 服务器配置,而非 Adobe 的示例配置。 - 在 WAF 上阻止访客购物车 API 路由。这是唯一能阻止上传本身的控制措施,因为目录访问封锁仍保留了写入路径。

局限性:阻止访问并不能阻止上传。攻击者仍可通过 API 将文件写入磁盘,而之后的配置更改、迁移或 Web 服务器更换可能使这些文件变得可执行。根据 Sansec 的版本分析,即使配置已阻止在上传目录执行 PHP,此漏洞的存储型 XSS 变体(将文件作为内容提供)仍然存在。

根本原因是什么?

Magento 的 REST API 将购物车商品请求中的文件写入磁盘,却不验证选项、选项类型或文件扩展名。 Sansec 于 2026 年 3 月 17 日发布的技术分析描述了其机制:当产品选项类型为 file 时,Magento 会处理嵌入的 file_info 对象,其中包含 base64 编码的文件数据、MIME 类型和文件名,并将文件写入服务器上的 pub/media/custom_options/quote/。

根据 Sansec 的分析,缺失了三项检查:

  1. 没有验证选项 ID。提交的选项 ID 从未与产品的实际选项进行核对。
  2. 没有按选项类型限制处理逻辑。无论产品是否确实具有文件类型选项,文件上传逻辑都会触发。
  3. 没有限制文件扩展名。.php、.phtml 和 .phar 等扩展名均未被阻止;唯一的验证是图像头检查(getimagesizefromstring),而同时兼具有效图像和可执行 PHP 的多格式文件可以轻松通过该检查。

最危险的端点是匿名访客购物车路由,它们无需任何凭据:

方法 端点 身份验证
POST /V1/guest-carts/:cartId/items 无
PUT /V1/guest-carts/:cartId/items/:itemId 无

根据 Sansec 的说明,GraphQL mutation 使用不同的代码路径,不受此漏洞影响。Adobe 尚未发布 CVE-2026-48356 的官方补丁差异或修复分析,因此这里无法引用确切的补丁逻辑;修复首先随 2.4.9 预发布分支(APSB25-94)推出,随后进入 2026 年 5 月 12 日发布的 2.4.9 正式版,以及 2026 年 7 月为所有受支持版本线提供的回移补丁。

如何利用?

根据 Sansec 已发布的载荷分析,攻击路径从单个未经身份验证的请求开始,最终形成持久化后门:

  1. 攻击者向 /V1/guest-carts/:cartId/items 发送 POST 请求,携带 file_info 对象,其中的 base64 载荷是一个多格式文件:既是有效的 GIF 或 PNG 图像,又嵌入了可执行 PHP,因此能够满足图像头检查。
  2. 文件被写入 pub/media/custom_options/quote/,通常使用 index.php 等文件名,或者在文件名前加上选项 ID,例如 780index.php。
  3. 如果配置将上传目录及其子目录中的 .php 文件交给 PHP 处理器处理,那么在请求该上传文件时,它就会以 Web 服务器用户身份执行。Sansec 的版本分析将此问题与以下配置关联:Magento 2.0.0 至 2.2.x 随附的标准 nginx 示例配置(通过 index.php 文件名触发);任何使用非标准 nginx 配置、将所有 .php 都传给 fastcgi 的 Magento 版本;以及 2.3.5 之前的 Magento 版本上未设置 php_flag engine 0 的 Apache。
  4. Sansec 捕获的最常见载荷是 GIF89a 多格式 index.php Web Shell:它使用硬编码哈希 a17028468cb2a870d460676d6d6da3ad63706778e3 校验 Cookie d,随后通过 eval(base64_decode()) 执行任意 PHP,还包含一个由 $_POST["up"] 触发的文件上传功能。第二种变体使用 hash_equals() 和硬编码 MD5 4009d3fa8132195a2dab4dfa3affc8d2,并将命令直接传给 system()。
  5. 为实现持久化,攻击者部署了名为 accesson.php 的第二阶段后门,将其放在每个可写顶层目录中的 <top-level directory>/assets/images/accesson.php。Sansec 在一家商店中列出了十个此类路径,包括 var/assets/images/accesson.php、app/assets/images/accesson.php、vendor/assets/images/accesson.php 和 pub/assets/images/accesson.php。该后门会输出信标 8194460,使操作者能够大规模查找存活的 Web Shell,其余行为与第一个载荷相似。
  6. 最后,攻击者向 CMS 页面或内容块中注入经过混淆的 JavaScript 加载器,再向购物者的浏览器提供后续载荷。
flowchart LR A["未经身份验证的 POST
/V1/guest-carts/:cartId/items"] --> B["file_info 包含 base64 编码的
多格式文件(图像 + PHP)"] B --> C["仅检查图像头,
不检查扩展名或选项"] C --> D["文件写入
pub/media/custom_options/quote/"] D --> E["在存在漏洞的配置中
Web 服务器执行 .php"] E --> F["GIF89a Web Shell 运行
eval(base64_decode())"] F --> G["accesson.php 后门 +
CMS 内容块 JS 加载器"] G --> H["购物者浏览器获取
攻击者控制的载荷"]

在野观察到的 PolyShell 文件名包括 index.php、json-shell.php、bypass.phtml、c.php、r.php、rce.php、static.php、test.php、blocked-json.php、bypass-async.php、urlencode-shell.php 和 xx_malicious_file.php,还发现了 Unicode 混淆,例如 \u0062\u0079\u0070\u0061\u0073\u0073.\u0070\u0068\u0070(解码后为 bypass.php)。

攻击很快就达到了相当规模。Sansec 的遥测显示,截至 2026 年 3 月 23 日,其保护的商店中有 23% 成为目标,到 3 月 30 日增至 79.5%。截至 3 月 24 日,56.7% 的商店已被上传恶意 PHP,到 4 月 14 日增至 82%。这些都发生在首个包含修复的正式发布版问世之前。

遭受 PolyShell 攻击的 Sansec 受保护商店占比:截至 2026 年 3 月 23 日有 23% 成为目标,3 月 30 日达到 79.5%,4 月 14 日有 82% 被恶意上传
图 1:从首次探测起的四周内,PolyShell 恶意上传已波及 Sansec 监测商店的 82%。来源:Sansec PolyShell 公告,检查于 2026 年 10 月 28 日

攻击者能做什么?

影响取决于 Web 服务器配置,两种情况都很危险。在允许执行 PHP 的情况下,攻击者能够以 Web 服务器用户身份运行代码:部署 Web Shell、完全控制商店,以及读取和改写数据库。Sansec 已在野外观察到这种情况:伪装成 PNG 图像的 Web Shell 位于 pub/media/custom_options/quote/,同时还存在 CMS 内容块加载器。在禁止执行的情况下,上传文件仍驻留磁盘(后续配置更改可能将其暴露),而存储型 XSS 变体则可能转而接管管理员会话。

评分说明:Adobe 的 CVE 记录将此问题评为 CVSS v3.1 9.3,影响范围发生变化,并指出利用漏洞“可能导致在当前用户上下文中执行任意代码,进而获得更高权限,或控制受害者的账户或会话”。记录中的 UI:R 向量评估的是需要受害者访问特制内容的路径;访客购物车上传本身无需凭据,也无需用户交互。

攻击所需条件:

  • 受影响版本上的 REST API 可被访问,包括匿名访客购物车路由。
  • 要实现代码执行而不仅是放置文件,需要 Web 服务器配置允许从上传路径执行 PHP 文件。Sansec 发现,许多商店都暴露了上传目录中的文件。
  • 无其他要求:上传步骤无需账户、无需身份验证,也无需用户操作。

修复是否已验证?

没有。Adobe 尚未发布官方补丁差异或修复分析,因此无法对照差异核查修复。根据 Sansec 公告和 Adobe 的 CVE 记录,目前公开的信息是:修复最早在 APSB25-94 下进入 2.4.9 预发布分支(2025 年 10 月 14 日,在 2.4.9-alpha3 中修复),随 2026 年 5 月 12 日的 2.4.9 正式版发布,并在 2026 年 7 月补丁版本(APSB26-73)中回移到所有受支持的版本线。

要完整修复 Sansec 描述的行为,必须堵住全部三个缺口:根据产品验证提交的选项 ID;仅在产品确实声明了文件类型选项时接受 file_info;限制可写入的文件名和扩展名。

截至 4 月 14 日,Sansec 遥测中遭恶意上传的受监测商店占比达到了 82% 的峰值,当时 5 月 12 日的正式版尚未发布,旧版本线也尚未获得任何回移补丁。10 月 27 日进入 KEV 目录表明,尚未打补丁的商店仍在遭受攻击。

如何检查是否已被入侵?

以下检查方法和指标改编自 Sansec 公告。对每家处于受影响版本级别或更低版本的商店,从 Magento 根目录运行这些命令:

# Executable files in the custom options upload directory are a strong indicator.
find pub/media/custom_options/ -type f \( -name '*.php' -o -name '*.phtml' -o -name '*.phar' \)

# Stores that never offered file-type product options: any file other than
# .htaccess is suspicious. Legitimate customer file-option uploads land under
# pub/media/custom_options/quote/ and order/, so skip this on stores that use them.
find pub/media/custom_options/ -type f ! -name '.htaccess'

# The post-exploitation backdoor, placed under assets/images/ in top-level directories.
find . -name 'accesson.php' -type f
  • pub/media/custom_options/ 下的任何 .php、.phtml 或 .phar 文件都是很强的入侵指标。也要检查其中的 GIF 和 PNG 文件:多格式 Web Shell 带有 GIF89a 或 PNG 文件头,内部却包含 PHP。
  • 在 CMS 页面和静态内容块(cms_block 和 cms_page 表)中搜索该攻击活动使用的加载器域名(见下表)。Sansec 在较早的 PolyShell 研究中还列出了 jslibrary[.]net 和 canevaslab[.]com。
  • 审计管理员账户:Sansec 记录过一家已完全打补丁的 2.4.7-p10 商店,其唯一的入侵迹象是一个被用于注入加载器的恶意管理员账户。该案例不是通过 PolyShell 入侵的,但属于同一攻击活动。
  • Sansec 公告列出了自 2026 年 3 月起在 PolyShell 扫描中观察到的 50 多个源 IP,可用于审查边界日志。
加载器域名 首次发现时间
manulfie[.]click 2025 年 7 月
neswnsssn[.]click 2025 年 12 月
lanhd6549tdhse[.]top 2026 年 3 月
additionalver[.]com 2026 年 6 月
deepveindrilling[.]com 注册于 2026 年 10 月 6 日;截至 10 月 24 日已出现在 83 家商店的 CMS 内容块中

时间线

  • 2025-07:加载器攻击活动开始;整个活动期间有 953 家商店感染,其中大多数使用 Magento(Sansec,发布于 2026 年 10 月)。
  • 2025-10-14:Adobe 的 APSB25-94 更新发布 2.4.9-alpha3,Sansec 称修复最早进入这一 2.4.9 预发布版本(APSB25-94、Sansec)。
  • 2026-03-16:UTC 时间 12:00 首次观察到 PolyShell 探测;Sansec 当天增加 Shield 防护(Sansec)。
  • 2026-03-17:Sansec 发布公开警告和技术分析(Sansec)。
  • 2026-03-19:自动化大规模扫描开始;随后出现 50 多个扫描器 IP(Sansec)。
  • 2026-03-23:Sansec 保护的商店中有 23% 成为目标。
  • 2026-03-24:56.7% 的商店被上传恶意 PHP(Sansec)。
  • 2026-03-30:79.5% 的商店成为目标(Sansec)。
  • 2026-04-14:82% 的商店被上传恶意 PHP(Sansec)。
  • 2026-05-12:Adobe 发布包含修复的 Magento 2.4.9;较旧的受支持版本线尚无回移补丁(Sansec)。
  • 2026-07-14:Adobe 的 CVE 记录发布,2026 年 7 月补丁版本将修复回移至受支持的版本线(CVE 记录、APSB26-73)。
  • 2026-10-06:deepveindrilling[.]com 注册;10 月 7 日上线;截至 10 月 24 日已出现在 83 家商店的 CMS 内容块中(Sansec)。
  • 2026-10-27:CISA 将 CVE-2026-48356 加入已知遭利用漏洞目录;联邦机构的截止日期为 2026 年 11 月 10 日(CISA KEV)。
  • 2026-10-28:本文发布。

从公开警告到进入 KEV 目录相隔 224 天,而较旧的受支持版本线直到警告发出 119 天后才获得修复。

PolyShell 从 3 月探测到 10 月进入 KEV 目录的补丁竞速
图 2:从 Sansec 于 3 月 17 日发布公开警告,到 10 月 27 日进入 CISA KEV,历时 224 天;较旧受支持版本线的回移补丁于 7 月 14 日发布。来源:Sansec 公告、Adobe CVE 记录和 CISA KEV,检查于 2026 年 10 月 28 日

常见问题

PolyShell 与 Sansec 跟踪的加载器攻击活动是同一个 CVE 吗?

两者有关联,但并不相同。CVE-2026-48356(PolyShell)是 REST API 中的上传漏洞。Sansec 跟踪的加载器攻击活动(自 2025 年 7 月以来涉及 953 家商店、五个域名)是一项犯罪行动,将 PolyShell 作为其入口向量之一:Sansec 估计有 471 家商店通过 PolyShell 被注入,另有 102 家通过 PolyShell 或更早的 SessionReaper 漏洞(CVE-2025-54236)被注入。至少有一家商店是通过恶意管理员账户被入侵的。

我的 Web 服务器禁止在上传目录执行 PHP,是否就安全了?

并不完全安全。禁止执行可以阻止远程代码执行变体,但 API 仍会将攻击者文件写入磁盘,Sansec 描述的存储型 XSS 变体在某些配置中仍然存在,而且未来的服务器迁移或配置更改可能使驻留文件变成可用的 Web Shell。打补丁才是完整修复;Web 服务器上的封锁只是临时措施。

为什么 CISA 到 10 月才将一个 7 月已修复的漏洞加入 KEV?

因为利用仍在持续,未打补丁的商店数量仍然很大。该漏洞在 3 月披露后几天内就遭到大规模扫描,较旧的受支持版本线直到 7 月才获得修复,而 Sansec 在 10 月仍在商店 CMS 内容块中发现新的加载器域名。CISA 的 KEV 条目日期为 2026 年 10 月 27 日,规定联邦机构的修复截止日期为 2026 年 11 月 10 日。

打补丁后还需要 WAF 规则吗?

打补丁会消除漏洞,因此之后可选择是否使用 WAF 规则。在打补丁之前,Sansec 明确指出,只有阻止存在漏洞的 API 调用的 WAF 规则才能阻止上传,因为目录封锁仍保留了写入路径。Sansec 公告还指出,在其最近一次更新时,Cloudflare 尚未发布覆盖 PolyShell 的 WAF 规则,因此在确认云 WAF 已提供匹配规则之前,不应依赖它阻止 PolyShell。

这影响 Magento Open Source,还是只影响 Adobe Commerce?

两者都受影响。Adobe 的 CVE 记录列出了 Adobe Commerce、Adobe Commerce B2B、Magento Open Source(2.4.6 至 2.4.9 版本线)和 Adobe Commerce Events 的受影响版本,并将 2026 年 7 月补丁版本列为各自的修复版本。

使用 Ostorlab 查找暴露的 Adobe Commerce 和 Magento 商店

对每个店面运行 Ostorlab Web 扫描:它会识别各商店运行的 Adobe Commerce 或 Magento 版本及补丁级别,以及访客购物车上传路由是否暴露,帮助您在 KEV 规定的 11 月 10 日截止日期之前,确认每家商店都运行了上表中的修复版本。

参考资料

  • CISA 关于 CVE-2026-48356 的 KEV 条目,加入日期为 2026 年 10 月 27 日,截止日期为 2026 年 11 月 10 日:https://www.cisa.gov/known-exploited-vulnerabilities-catalog (检查于 2026 年 10 月 28 日)
  • CVE 记录,CVSS v3.1 9.3,受影响及修复版本矩阵:https://cveawg.mitre.org/api/cve/CVE-2026-48356 (检查于 2026 年 10 月 28 日)
  • Adobe 安全公告 APSB26-73(2026 年 7 月补丁版本):https://helpx.adobe.com/security/products/magento/apsb26-73.html
  • Sansec,《PolyShell:Magento 和 Adobe Commerce 中的无限制文件上传》,2026 年 3 月 17 日,持续更新至 2026 年 10 月(技术分析、载荷分析、扫描器 IP、缓解措施):https://sansec.io/research/magento-polyshell (检查于 2026 年 10 月 28 日)
  • Sansec,《deepveindrilling.com:Magento CMS 内容块加载器波及 953 家商店》,2026 年 10 月(攻击活动归因:471 家通过 PolyShell,102 家通过 PolyShell 或 SessionReaper,83 家商店包含 10 月出现的加载器域名):https://sansec.io/research/magento-cms-block-loader-deepveindrilling (检查于 2026 年 10 月 28 日)
  • Sansec,《SessionReaper:Magento 与 Adobe Commerce 中无需身份验证的 RCE(CVE-2025-54236)》,介绍相关漏洞:https://sansec.io/research/sessionreaper
  • The Hacker News,《Adobe Commerce PolyShell 攻击攻陷数百家商店,同时出现 Brotli 漏洞利用流量》,2026 年 10 月 28 日:https://thehackernews.com/2026/10/adobe-commerce-polyshell-attacks-breach.html
  • The Hacker News,《黑客使用躲避扫描器的 JavaScript 感染 953 家在线商店,多数使用 Magento》,2026 年 10 月 26 日:https://thehackernews.com/2026/10/hackers-infect-953-online-stores-with.html
  • The Hacker News,《Magento PolyShell 漏洞允许未经身份验证的上传、RCE 和账户接管》,2026 年 3 月 20 日,3 月 23 日更新了正在遭利用的记录:https://thehackernews.com/2026/03/magento-polyshell-flaw-enables.html