隐藏在网站CSS中的窃密脚本
在过去的两年里,网络犯罪分子使用了各种各样的方法来在网上商城的各个地方隐藏针对Credit Card的信息窃取代码,以防止被安全检测方案所发现,而这些信息窃取代码也被称之为Web Skimmer或Magecart脚本。
在此之前,研究人员曾在网站Logo、缩略图标、内部图像、实时聊天窗口、社交媒体分享按钮以及热门JavaScript库中发现过Web Skimmer的身影。但是,最近发现的恶意代码宿主已经涉及到了CSS文件了。
CSS文件代表层叠样式表,在浏览器内使用CSS文件可以加载各种规则以对网页元素进行样式化定义。这些CSS文件通常包含描述各种页面元素的颜色、文本大小、各种元素之间的填充、字体设置等的相关代码。
然而,现在的CSS已经不是21世纪初的样子了。在在过去的十年里,CSS语言已经发展成为了一种强大的实用工具,Web开发人员现在正在使用它来创建强大的动画,而很少甚至几乎没有人会选择使用JavaScript。
CSS语言最近增加的一个功能,即添加CSS变量,这种变量可以用于存储某些之后需要复用或调用的内容。
荷兰安全公司Sanguine Security(SanSec)的创始人Willem de Groot表示,目前至少有一个网络犯罪团伙正在使用CSS变量来进行攻击。Web skimmer团伙首先会获取一个在线商店的访问权限,然后修改其CSS和JavaScript文件,并向其中注入恶意代码。
在CSS代码中,他们会添加一个CSS变量,这个变量中存储的是他们需要在被攻击商店中加载Web Skimmer代码的URL地址,而这个CSS变量会通过一个看似无害的JavaScript代码(注入到在线商店中的其他地方)中进行调用。
下图显示的是CSS文件中的CSS变量:
下图显示的是JavaScript代码调用CSS变量的代码段:
Web安全工具通常只扫描JavaScript代码,而不会扫描CSS文件。除此之外,它们只会扫描JavaScript代码的静态版本,而并不会实际执行这些JavaScript脚本。
这样做是为了避免在网上商店里制造空的购物车或影响在线商店的分析平台。这也就意味着,隐藏在CSS变量中的恶意代码在大多数平台上都不会被发现,即使这些网站使用了功能强大的Web应用程序防火墙和Web安全扫描器。
Willem de Groot表示,他们在最新发现的Web Skimmer代码之中,发现了一个标准的键盘记录程序。自从通过Twitter发布了相关报告之后,它似乎在一个小时之后就被下线了。他说到:“我们还发现了一些其他受此技术感染的在线商店,然而这些基础设施自今年9月份以来貌似就已经上线了,因为此前还有十多次传统攻击也使用过这些基础设施。由此我们推断,这些CSS文件貌似是攻击者进行新技术实验的一个部分。”
尽管这种通过使用CSS规则作为代理来加载Web Skimmer代码的技术无疑是一种创新,但Willem de Groot也表示在线商店的店主或者在线购物用户其实并不用过多的担心。他表示:“虽然大多数研究都涉及到了JavaScript Skimming攻击,但大部分的Skimming都发生在服务器上,而我们是无法在服务器上观察到相关攻击行为的。在今年我们所进行的取证调查活动中,我们发现在65%的攻击情况下,服务器端Skimmer代码隐藏在数据库、PHP代码或Linux系统进程之中。”
正如ZDNet周一在一篇关于SanSec另一项调查结果的文章中所解释的那样,购物者保护自己免受Web Skimmer攻击的最简单方法就是使用为一次性付款设计的虚拟支付卡。这些卡片由一些银行或在线支付服务商提供,允许购物者在虚拟卡片中存入一笔固定金额的钱,该卡在一次交易或一小段时间后将会到期。如果卡片的详细信息被攻击者窃取,那么一旦虚拟卡过期,卡片数据将不再有效。