1像素能干什么?在黑客手里,够偷走你整张信用卡。
安全公司Sansec最近抓到一个大规模攻击:近100家Magento电商网站被植入盗刷代码。攻击者把恶意程序塞进一张1×1像素的SVG图片里——小到肉眼看不见,却能在用户结账时弹出伪造的支付页面,实时验证卡号并加密传走。
攻击链还原:从PolyShell漏洞到像素级隐藏
时间线要倒回今年3月中旬。Adobe披露了Magento的PolyShell漏洞,影响所有Magento Open Source和Adobe Commerce 2.x稳定版,允许未认证用户执行代码、接管账户。
Sansec预警称,超过半数存在该漏洞的商店已遭攻击。部分案例中,黑客甚至用WebRTC技术外传数据——这种点对点通信不走传统HTTP,能绕过常规流量监控。
最新这波攻击换了更隐蔽的路子。恶意代码被注入成一个1×1像素的SVG元素,带一个`onload`事件处理器。Sansec的技术描述很直白:处理器里藏着完整的盗刷载荷,用base64编码塞进`atob()`函数,再通过`setTimeout`延迟执行。
整套操作 inline 完成,没有外部脚本引用。安全扫描器通常靠抓外链特征来识别威胁,这招直接让它们在源代码里"失明"。
用户点击结账按钮时,恶意脚本拦截事件,弹出一个伪造的"Secure Checkout"覆盖层。页面做得足够像,包含卡号、有效期、CVV、账单地址全套字段。输入的数据先过Luhn算法实时校验卡号有效性,再用XOR加密、base64混淆成JSON格式,神不知鬼不觉发往黑客服务器。
基础设施画像:6个域名,同一荷兰主机商
Sansec追踪到6个数据外泄域名,全部托管在荷兰IncogNet LLC(AS40663)。每个域名对应10到15个确认受害的商店,算下来单点覆盖的商户密度不低。
攻击者的基础设施选择有讲究。IncogNet以"隐私友好"著称,对滥用投诉响应慢,给追踪和下架争取了时间窗口。IP地址23.137.249.67被锁定为关键节点,Sansec建议直接屏蔽。
更有趣的是持久化痕迹。Sansec发现攻击者在浏览器localStorage里写入`_mgx_cv`键值,用于标记"已收割"状态。这个细节成了事后取证的关键指标——如果你的浏览器存了这个键,说明支付数据可能已经被偷。
Adobe的补丁僵局:生产环境仍在裸奔
漏洞披露近一个月,Adobe至今未向生产版本推送PolyShell的安全更新。目前唯一的修复只在2.4.9-alpha3+预发布版本里,稳定版用户要么升级测试版,要么自求多福。
Sansec表示多次联系Adobe置评,未获回应。这种沉默在供应链安全事件里不算罕见,但对守着支付流水的电商站长来说,每多等一天都是赌局。
缓解措施倒是不复杂:扫描隐藏SVG标签、检查`atob()`和`onload`的组合、监控`/fb_metrics.php`等伪装路径、封禁已知IP。问题是,这些动作需要技术能力或第三方服务,小商户往往两头不沾。
技术演进的侧面:为什么SVG成了新宠
SVG作为矢量格式,天生适合"代码即图像"的玩法。它是XML文本,可以内嵌脚本事件;浏览器渲染时执行,不触发传统图片加载的防护规则;体积小到1像素也能合法存在,不会引起布局异常。
把恶意代码塞进`onload`属性,再用base64套一层,安全工具想静态分析就得先解两层编码。更关键的是,整个载荷不落地为独立文件,内存取证都难抓现行。
这种" living off the land "的思路,和高级持续性威胁(APT)常用的技巧同源——不用自定义工具,全靠平台原生功能组装攻击链。电商防护体系要应对的,不再是笨重的木马,而是寄生在合法技术栈里的幽灵。
Sansec的检测建议里有一条值得玩味:留意`fb_metrics.php`这种伪装成Facebook分析的路径。攻击者深谙商户心理——Facebook Pixel是电商标配,看到类似域名本能地以为是正常埋点,白名单都懒得审。
社交工程的颗粒度已经细化到URL命名习惯。这场对抗的下半场,可能是比谁更懂对方的日常操作。
截至发稿,那6个外泄域名仍在活跃,受影响的商店数量还在统计中。如果你的网站跑Magento 2.x,现在检查localStorage里有没有`_mgx_cv`还来得及——但问题是,有多少站长会去看浏览器的存储面板?
热门跟贴