打开网易新闻 查看精彩图片

4月7日,安全公司Sansec披露了一起波及99家Magento电商的Magecart攻击。攻击者用了一个相当刁钻的伎俩——把整套信用卡窃取代码塞进一个肉眼看不见的1×1像素SVG图片里。

这种"双击式"盗刷器会先弹出一个伪造的支付页面,等用户填完卡号后,再悄无声息地把人送回真正的结账流程。受害者从头到尾毫无察觉,钱已经被刷走了。

为什么传统扫描器会漏掉它

为什么传统扫描器会漏掉它

问题的关键在于"内联执行"。攻击者不再外链恶意脚本,而是直接把代码写进SVG的onload属性里,用base64编码,再用setTimeout延迟触发。

整段恶意载荷就是一串字符串,藏在HTML标签内部。安全工具扫描时看不到外部脚本引用,自然也不会报警。这就像把违禁品缝进衣服内衬,安检仪扫外壳是扫不出来的。

Sansec的安全专家推测,这次大规模感染的入口是持续肆虐的PolyShell漏洞。这个老漏洞至今仍在未打补丁的Magento和Adobe Commerce环境里游荡。

盗刷流程拆解:从点击到加密只需3秒

盗刷流程拆解:从点击到加密只需3秒

用户点击"确认支付"的瞬间,恶意代码就开始运作。它用JavaScript的useCapture(捕获阶段事件监听)拦截所有结账按钮的点击事件,抢在商店合法代码响应之前接管页面。

随后弹出一个全屏模态框,标题写着"Secure Checkout",带锁形图标,还有实时的信用卡号格式验证——做得比很多真支付页面还像真的。

用户提交账单信息后,脚本立即用XOR加密,密钥是明文"script",再转一层base64。加密后的数据被发往6个攻击者控制的域名之一。

为了进一步伪装,外联地址被命名为/fb_metrics.php,流量看起来就像是普通的Facebook数据分析请求。

攻击者的"用户体验"设计

攻击者的"用户体验"设计

完成窃取后,脚本会在浏览器里埋一个标记,然后把用户导向真正的结账页面完成交易。整个流程顺滑得不像犯罪——用户只会觉得页面闪了一下,或者网络有点卡。

Sansec在报告中列出了管理员自查的感染特征,但核心建议很直接:先把PolyShell漏洞补上。这个2024年就被公开的漏洞,至今仍是Magecart团伙的万能钥匙。

这次攻击的精妙之处在于对"可见性"的操控。攻击者把恶意代码做得足够小、足够内联、足够像正常业务请求,安全工具和用户双双失明。当防御方还在扫描外链脚本时,战场已经转移到了HTML属性的字符串里——这种技术迭代的速度,比很多企业的补丁周期快得多。你的结账页面最后一次安全审计是什么时候?