旅行订票系统每天为千万人服务,但其安全性严重滞后,旅行订票系统的安全还停留在90年代,缺乏现代身份验证方法。一组研究人员分析了在线订票生态系统后发现:攻击者可以很容易地修改他人的预订,取消他们的航班,甚至使用退票款来为自己订票。
全球分销系统(GDS)是旅游机构、航空公司、酒店和租车公司广为使用的一套系统。柏林咨询机构安全研究实验室的研究人员,花费数月调查了该系统的安全性。上个月底举行的第33届混沌通信大会上,他们展示了自己的研究结果。
GDS是可追溯到巨型机时代的数据库,有关旅行预订的所有信息都存储其中,比如出行者的姓名、旅行日期、路线、票务详情、手机和邮件联系人、护照信息、信用卡号、座位号和行李信息。所有这些数据组成了所谓的旅客订座记录(PNR)。
世界三大GDS运营商是Sabre、Travelport和Amadeus,他们随时存有数亿旅客的PNR。对订座记录的任何增删改操作都存储在他们的系统中,而访问这些记录所要求的全部凭证,通常仅仅是您的姓氏和一个6字符的预订代码。
可从多个接入点访问这些系统,其中包括航空公司和旅游公司运营的网站,但像CheckMyTrip这样的第三方网站也能访问。即便其中一些接入点要求更多信息以验证用户——比如要求完整姓名而不单单是姓氏,PNR的防护依然是整个链条中最弱的一环。
举个例子,如果一次预订包括多个航线的不同航班,该预订信息便可通过其中任何一家航空公司的网站进行访问和修改。
预订代码本身根本不是什么秘密。大多数人每次落地后即撕掉的行李标签上就印有——即便他们的整个旅程尚未结束。相当多的旅行者有在社交媒体上晒机票车票的习惯,然而,票据上印的二维码中就嵌入了他们的预订代码。
很多航空公司和旅程查询网站对代码输错次数没有任何限制,让暴力猜解攻击得以横行。研究人员采用自动化方法,仅数分钟就找到了大众姓氏的预订代码匹配。
而且,GDS只使用大写字母登记,进一步缩减了暴力拆解预订代码的尝试次数。为避免跟字母I和O混淆,其中一套系统根本不使用数字1和0。另外两套系统则是顺序增加代码,让攻击者可以快速划定需要搜索的代码范围。
旅行机构有自己的GDS主登录凭证,但这些账户往往使用非常弱的口令。一个案例中,该口令以“WS”打头(意指“ Web Service ”),即Web服务,后跟登录当天的日期(DDMMYY格式)。这种口令很容易被暴力破解,但很不幸,这已经是研究人员观察到的最复杂的旅行机构口令了。
除了访问他人预订数据这种明显的隐私侵犯,攻击者还能滥用此类信息牟利。比如,他们可以将自己的常旅客号添加到别人的长途航班中,为自己收获奖励里程。研究人员表示,这种技术在现实中已经在用了。
取消航班这种事,攻击者也可以做到的。如果机票是没有退票限制的,他们还可以使用航空公司的“退款”购买其他机票供自己使用。
他人准确旅行计划信息,还可以助攻网络钓鱼攻击活动。不妨想象一下:如果收到刚刚订了机票的航空公司的邮件,说是支付失败,需要重新录入信用卡信息,你会怎么做?大多数人恐怕就直接遵从要求输入了,连核实一下邮箱真实性都没考虑。
最恐怖的是,GDS数据库根本没有日志。也就是说,根本没办法查出都有谁访问了特定记录,有多少记录滥用存在这些系统中。
对这些系统而言,理想情况就是开始要求访问个人PNR必须持有恰当的口令,但这是个相当长期的目标,因为该生态系统中的所有玩家——旅行机构、航空公司、酒店、车辆租赁公司等等,需要跟上这种变化,同步进行。
短期来看,至少我们可以期待提供旅客个人信息访问的网站具备最低限度的Web安全性,这里面就包括了起码的速度限制。而在口令和其他安全措施成为常态之前,我们有权知道谁访问了我们的记录,也就是,必须要有一定程度的可审计性,尤其是在知道这些系统如此不安全的今天!