百度360必应搜狗淘宝本站头条
当前位置:网站首页 > 热门文章 > 正文

22行代码的JS脚本导致英国航空公司38万乘客数据泄露

bigegpt 2024-08-09 11:17 2 浏览

9月6日,英国航空公司( British Airways,以下简称英航)发布声明称因遭黑客攻击从而导致其乘客数据被盗。在BBC的采访中,英航指出,经初步调查,约有38万乘客数据在此交数据泄露事件中受到影响,这些被盗数据信息包括个人基本信息和付款记录,但不包括个人护照信息。

随后,英航在其网站上发表了一篇文章,解释了该事件的相关细节和一些乘客担心的问题,该篇文章涉及的技术细节较少,但包括了以下信息:

通过英航官网进行付款操作的乘客相关信息受到影响

通过英航手机APP应用进行付款操作的乘客相关信息受到影响

受影响的付款乘客时间段大约为2018年8月21日晚22:58至2018年9月5日晚21:45

英航在文中表明,攻击者从其官网和移动应用程序中窃取了以上乘客数据信息,但并未提及更多数据库或服务器被入侵的有价值线索。因为英航的被盗信息仅与乘客的付款记录相关,考虑到信用卡数据窃取的前科,我们对臭名昭著的网络犯罪集团Magecart有了怀疑。

在此之前,英国老牌票务网站Ticketmaster就报告过一起与英航类似的数据泄露事件,之后,我们RiskIQ调查清楚了整个事件。因为我们可以对涉事方官网进行网页抓取和互联网行为分析,因此我们团队可以扩展涉事时间段,发现比一些公开报告更多的被攻击网站。本文中,我们将对9月6日公开的英航数据被盗事件,进行前后15天的时间线扩展调查。

Magecart: 一个臭名昭著的网络犯罪集团

自2016年以来,RiskIQ对进行网络信用卡窃取的组织Magecart进行了多次报道。传统上来说,犯罪份子会使用一种卡片读取器的东西,隐藏附加在我们平时用到的ATM机、加油站和其它刷卡设备中,以此来窃取用户信用卡信息,并进行卡片盗刷或个人信息转卖。而现在,Magecart使用的是各种在线电子窃取方式来实现用户信息盗取。

Magecart会对一些在线用户支付网站注入脚本,或入侵一些支付相关的第三方供应商网站,以此来窃取用户数据。近期,Magecart攻击者就通过入侵了一个第三方功能应用,然后在英国票务网站Ticketmaster上植入了一个在线的信用卡读取脚本,从而导致了Ticketmaster大量数据泄露。证据表明,在Ticketmaster之后,Magecart把攻击目标转向了英国航空公司(British Airways)。

英航数据泄露事件调查

网站用户信息窃取

调查刚开始,利用我们自己的Magecart检测模式,我们把Magecart和英航数据泄露事件进行了适配关联。对我们来说,Magecart的攻击非常常见,以至于在调查刚开始,几乎每小时都能响应到Magecart向英航网站植入的卡片读取代码。

对RiskIQ的分析后端来说,其页面抓取规模是一项值得肯定的能力,我们每天的网页抓取量会达到20亿页,并能自动累积,另外由于很多现代网站倾向于使用JavaScript来实现架站服务,所以,我们只需加载英航公司网站的20个左右脚本和30个左右的预订子页面就可以了。30个页面虽然不多,但其中大多都是缩小的有数千行代码的脚本页面。

在该事件分析中,我们决定集中精力识别英航公司网站上的每个脚本,验证网站上的所有独特脚本,并在该过程中检查脚本的各种变化行为。最终,我们捕获到了其中一个脚本modernizr-2.6.2.min.js的变化行为,根据抓取记录显示,该脚本是Modernizr JavaScript库2.6.2的一个更改版文件,英航公司网站的乘客行李认领页面会加载该脚本。modernizr-2.6.2.min.js的加载流程如下:

该脚本明显的变化在其底部代码,这是攻击者惯用的修改JavaScript文件,实现功能破坏目的的技术。其中一些小的脚本标签引起了我们的注意(红框部分):

之后,我们在英航公司网站服务器发送的“服务器头信息”中发现了更多证据,其中的 ‘Last-Modified’ 表明了文件静态内容的最近一次修改时间。根据我们的抓取记录显示,正常的英航公司网站modernizr-2.6.2.min.js文件的头信息中,‘Last-Modified’日期为2012年12月18日。

但在英航公司当前网站的,经过修改的恶意modernizr-2.6.2.min.js文件中,其头信息中的 ‘Last-Modified’ 时间戳与英航调查后给出的数据泄露时间点一致-2018年8月21日:

以下是恶意的modernizr-2.6.2.min.js脚本文件图示,它只有22行JavaScript代码,但却让38万乘客数据遭到窃取:

实际来说,该脚本非常简单实用,文件中的每个元素加载完成之后,将会进行以下操作:

用以下回调代码把mouseup和touchend事件捆绑到submitButton按钮上:

用id为paymentForm的形式将数据序列化到一个字典中

用id为personPaying的形式把页面条目序列化,并归类为paymentForm信息,并归入之前的同一个字典中

用这些序列化数据制作出一个文本字符串文件

用JSON形式把文件数据发送到攻击者架设的baways.com网站

在实际操作中,mouseup和touchend事件代表了在线用户在网页或手机APP中,点击或提交了某个按钮操作,然后放开鼠标或离开手机屏幕之后的操作。也就是说,一旦用户点击了英航公司网站或APP进行付款按钮提交之后,其付款表单中的信息将会被恶意代码提取,会复制一份发送到攻击者的架设服务器baways.com中。

与我们过去对Magecart组织的行为分析相比,这种攻击是一种简单极具针对性的操作。其中植入的信用卡窃取器代码能完全与英航公司网站付款页面适配生效,可以看出,Magecart没有采用常规的植入代码,对该网站的入侵攻击完全有着精心的考虑。

经调查发现,攻击者在此次攻击中使用的网络架构,完全是为英航公司独身打造部署的,它把恶意脚本与付款功能进行了完美融合,大大避免了被发现怀疑的可能。我们在攻击者架设的服务器 baways.com上发现了一些证据和废弃路径,该服务器托管在罗马尼亚IP地址89.47.162.248上。但实际上,该IP属于立陶宛VPS供应商Time4VPS所有,攻击者使用SSL证书进行服务器登录。更有意思的是,为了看起来像个合法的服务器,攻击者未用免费的LetsEncrypt 证书,而是使用了一个付费的Comodo证书。

这个Magecart使用的付费证书是8月15日颁发的,间接表明了,Magecart攻击者可能在8月21日前的很长时间范围内就能入侵控制英航公司网站了。由于对自身网络资产没有明确的识别判断,英航公司最终没能检测到这种网站入侵攻击。

移动APP的用户数据窃取

在英航公司的安全公告中,它强调网站渠道和移动应用APP渠道的付款用户都受到了信息泄露影响。我们识别出了攻击者对网站用户数据的窃取方式,那么对移动端的窃取方式又是什么呢?我们先来看看英航公司的官方Android应用APP:

通常,开发者在开发一个移动APP时,会预留一个空白的shell区以便从其它地方把内容加载进来。在这里的英航APP中,有一部份APP组件是原生的,但大部份功能都是从英航官网加载过来的。该移动APP中应用了一组不同的通讯主机与英航官网服务交流:

www.britishairways.com (英航官网)

api4-prl.baplc.com (英航的一个API服务端)

api4.baplc.com (英航的另一个API服务端)

使用API的目的在于,APP为了在UI上进行快速的数据更新,但要进行一些搜索、预订和管理航班操作,APP就得调用英航官网服务了,比如调用英航官网的一个路径如下:

http://www.britishairways.com/travel/ba_vsg17.jsp/seccharge/public/en_gb

该调用页面功能为,乘客选择了不同国家不同机场之后的费用请求,它显示的页面如下:

现在,我们来认真看看这个页面的源代码,可以发现一个非常有意思的地方-该页面和英航官网的组成一样,都是由CSS和JavaScript组件构成的,也就是其设计和功能与英航官网完全类似。关键是这里仍然被植入了之前我们分析的恶意脚本modernizr-2.6.2.min.js,攻击者就是利用这个脚本再次实施了对移动APP用户的数据窃取:

值得注意的一点是,Magecart攻击者利用了之前的 touchend 回调事件实现了数据窃取,所以,本质上来讲,这种攻击简单高效也非常实用。

总结

正如在以上攻击事件分析中所看到的那样,Magecart通过订制的,有目的的网络架构资源,与英国航空公司网站功能完美融合,伪装得尽乎天衣无缝。目前,我们无法得知攻击者在英国航空公司网站服务器上的所窃取的具体内容,但他们具备网站资源文件的修改权限是相当可怕的,而且攻击者在真正数据窃取之前就可能已经对网站形成了入侵,这对英航存在漏洞的网络资产来说是个警惕。

自2015年以来,RiskIQ就一直对Magecart组织的攻击和发起了预警,也将继续跟踪报道其可能的攻击事件。Magecart对英航的攻击不像对票务网站Ticketmaster那样的第三方攻击,但却引发了对当前一些支付安全问题的质疑。收集应用个人敏感财务数据的公司应该好好考虑一下自身的信息安全形式,当然还要对用户提交的支付信息进行严格控制。

*参考来源:https://www.trustauth.cn/news/security-news/26620.html

相关推荐

10w qps缓存数据库——Redis(redis缓存调优)

一、Redis数据库介绍:Redis:非关系型缓存数据库nosql:非关系型数据库没有表,没有表与表之间的关系,更不存在外键存储数据的形式为key:values的形式c语言写的服务(监听端口),用来存...

Redis系列专题4--Redis配置参数详解

本文基于windowsX64,3.2.100版本讲解,不同版本默认配置参数不同在Redis中,Redis的根目录中有一个配置文件(redis.conf,windows下为redis.windows....

开源一夏 | 23 张图,4500 字从入门到精通解释 Redis

redis是目前出场率最高的NoSQL数据库,同时也是一个开源的数据结构存储系统,在缓存、数据库、消息处理等场景使用的非常多,本文瑞哥就带着大家用一篇文章入门这个强大的开源数据库——Redis。...

redis的简单与集群搭建(redis建立集群)

Redis是什么?是开源免费用c语言编写的单线程高性能的(key-value形式)内存数据库,基于内存运行并支持持久化的nosql数据库作用主要用来做缓存,单不仅仅是做缓存,比如:redis的计数器生...

推荐几个好用Redis图形化客户端工具

RedisPlushttps://gitee.com/MaxBill/RedisPlusRedisPlus是为Redis可视化管理开发的一款开源免费的桌面客户端软件,支持Windows、Linux...

关于Redis在windows上运行及fork函数问题

Redis在将数据库进行持久化操作时,需要fork一个进程,但是windows并不支持fork,导致在持久化操作期间,Redis必须阻塞所有的客户端直至持久化操作完成。微软的一些工程师花费时间在解决在...

你必须懂的Redis十大应用场景(redis常见应用场景)

Redis作为一款高性能的键值存储数据库,在互联网业务中有着广泛的应用。今天,我们就来详细盘点一下Redis的十大常用业务场景,并附上Golang的示例代码和简图,帮助大家更好地理解和应用Redis。...

极简Redis配置(redis的配置)

一、概述Redis的配置文件位于Redis安装目录下,文件名为redis.conf(Windows名为redis.windows.conf,linux下的是redis.conf)你可以通过C...

什么是redis,怎么启动及如何压测

从今天起咱们一起来学习一下关于“redis监控与调优”的内容。一、Redis介绍Redis是一种高级key-value数据库。它跟memcached类似,不过数据可以持久化,而且支持的数据类型很丰富。...

一款全新Redis UI可视化管理工具,支持WebUI和桌面——P3X Redis UI

介绍P3XRedisUI这是一个非常实用的RedisGUI,提供响应式WebUI访问或作为桌面应用程序使用,桌面端是跨平台的,而且完美支持中文界面。Githubhttps://github....

windows系统的服务器快速部署java项目环境地址

1、mysql:https://dev.mysql.com/downloads/mysql/(msi安装包)2、redis:https://github.com/tporadowski/redis/r...

window11 下 redis 下载与安装(windows安装redis客户端)

#热爱编程是一种怎样的体验#window11下redis下载与安装1)各个版本redis下载(windows)https://github.com/MicrosoftArchive/r...

一款轻量级的Redis客户端工具,贼好用!

使用命令行来操作Redis是一件非常麻烦的事情,我们一般会选用客户端工具来操作Redis。今天给大家分享一款好用的Redis客户端工具TinyRDM,它的界面清新又优雅,希望对大家有所帮助!简介Ti...

一个.NET开发且功能强大的Windows远程控制系统

我们致力于探索、分享和推荐最新的实用技术栈、开源项目、框架和实用工具。每天都有新鲜的开源资讯等待你的发现!项目介绍SiMayRemoteMonitorOS是一个基于Windows的远程控制系统,完...

Redis客户端工具详解(4款主流工具)

大家好,我是mikechen。Redis是大型架构的基石,也是大厂最爱考察内容,今天就给大家重点详解4款Redis工具@mikechen本篇已收于mikechen原创超30万字《阿里架构师进阶专题合集...