全球近70%酒店存在用户信息泄露,订房信息、个人资料无一幸免
最近在研究酒店网站的安全性时,我偶然发现了一个可能泄漏顾客个人数据的问题。为了确定该漏洞是否普遍,我的调查对象包括54个国家和地区在内的1500多家酒店网站。结果显示,这些网站中有三分之二(约67%)无意中将顾客的订房信息和个人资料泄露给第三方网站,如广告客户和分析公司。这些酒店网站均有隐私政策,但他们并未明确提及这种行为。
虽然广告商跟踪用户的浏览记录已经是公开的秘密,但在这种情况下,被共享信息允许这些第三方服务商获取登录权限,查看顾客订单的详细信息,甚至完全取消订单。
欧洲《通用数据保护条例》(General Data Protection Regulation,简称GDPR)生效已近一年,但受此问题影响的许多酒店的响应速度非常迟缓,更不用说落实这一条例。
我调查的酒店档次不同,包括乡村二星级酒店至豪华五星级度假村。旅游景点的选择基本上是随机的,随后我在搜索引擎上匹配最佳的酒店搜索结果。我也测试了一部分知名连锁酒店的分店,这就意味着其结果可以反映该连锁酒店的普遍情况。
部分酒店预订系统比较完善,只显示了一些数字和订单日期,并没有透露任何个人信息。但大多数系统泄露了个人数据,例如顾客姓名、电子邮件地址、邮寄地址、手机号码、信用卡的最后四位数字、卡类型、到期日、护照号码等。
信息泄漏的原因
在被测试的网站中,超过一半(57%)向客户发送内含可直接访问其预订链接的确认邮件。酒店为使服务更便利,顾客无需登录,只需点击链接即可直接进入预订页面。
由于电子邮件内含静态链接,因此HTTP POST Web请求实际上不是一个选项,这意味着预订号码和电子邮件将作为URL本身的参数传递。就其本身而言,这不矛盾。但是,许多站点直接在同一网站上加载其他内容,例如广告。这意味着便利顾客预订的同时,可以直接与其他资源共享,也可以通过HTTP请求中的referrer字段间接共享。该测试表明,每次预订平均生成176个请求,但并非所有请求都包含订单的详细信息。这一数字也表明订单信息可以被广泛共享。
作为演示,我们假设酒店确认邮件包含以下订单链接:
https://booking.the-hotel.tld/retrieve.php?prn=1234567&mail=john_smith@myMail.tld
所加载的页面(在此示例中为retrieve.php网站)可以调用许多远程资源。为这些外部资源发出的一些Web请求会直接将完整URL(包括凭据)作为URL参数发送。
以下是分析请求的示例,其中包含完整的原始URL以及将完整URL作为单个参数发送的参数。
如上所述,相同的数据也存在于referrer字段中,后者在大多数情况下由浏览器发送。这使预订号码被30多个不同的服务提供商共享,包括知名的社交网络、搜索引擎以及广告和分析服务。这些信息允许这些第三方服务商获取登录权限,查看顾客订单的详细信息,甚至完全取消订单。
值得注意的是,这种情况并不是服务提供商的错。
其他情况下,订单信息也可能泄露。部分网站信息泄露会发生在预订过程中,另一些会发生在客户手动登录网站时。其他网站则生成一个访问令牌,以URL而非凭据的形式传递信息(这种做法本身有待商榷)。
在大多数情况下,我发现即使订单被取消,订单信息仍然可见,从而为心怀不轨的人提供了窃取个人信息的可趁之机。
酒店比价网站和预订引擎相对而言比较安全。在五个被测试的服务网站中,有两个网站泄露了凭据,一个发送了未加密的登录链接。
应当注意的是,在测试过程中,我检测到一些配置良好的网站首先消化凭证,然后在设置cookie后重新定向,从而确保数据安全。
未加密的链接
由于数据仅与网站信任的第三方提供商共享,因此可以认为该问题的隐私风险较低。然而,令人头疼的是,超过四分之一(29%)的酒店网站未对包含该ID的电子邮件中附有的初始链接进行加密。因此,客户在点击邮件中的HTTP链接时,潜在黑客可以拦截其凭证,例如,查看或修改该客户的订单。这种情况可能发生在机场或酒店等公共热点环境下,除非用户使用VPN软件保护其连接。我还发现,其中一个预订系统在连接被重定向到HTTPS之前,就在预订过程中将数据泄露给了服务器。
遗憾的是,这种做法并非只出现在酒店行业。通过URL参数或在referrer字段中意外泄露敏感信息的现象屡见不鲜。在过去的几年里,多家航空公司、度假区和其他网站发生类似问题。2019年2月,其他研究人员也报告了类似的问题,其中未加密的链接广泛应用于多家航空公司服务提供商。
深层次问题
我还发现,多个网站允许暴力破解预订号码以及枚举攻击。在许多情况下,预订号码只能简单地逐个递增。这意味着,如果黑客获得客户的电子邮件或姓氏,他们就可以猜出该客户的预订号并登录。暴力破解预订号码是旅游行业一个的普遍问题,我之前也曾在博客中提到。
这种攻击手段或许无法很好地大规模应用,但是当黑客具有特定目标或已知目标位置时,的确可以奏效,例如会议酒店。而某些网站后台甚至不需要客户的电子邮件或姓名,仅利用有效的预订号码即可获取个人信息。编码错误的例子数不胜数,这使黑客不仅可以访问大型连锁酒店所有有效订单,还可以查看国际航空公司任何一张有效机票。
其中一个比较智能的预订系统可以为顾客创建一个随机的PIN码,该码需与预订号同时使用。遗憾的是,登录后并没有与可访问的实际订单绑定。因此,黑客只使用有效的凭据即可登录,并仍可访问任何订单。当时,对于后台是否有任何可以防止此类攻击的速率限制,我并没有发现任何证据。
风险
近日发布的《2018年诺顿LifeLock网络安全调查报告》(2018 Norton LifeLock Cybersecurity Insights Report)显示,83%的消费者对他们的隐私感到担忧,但大多数人(61%)表示如果能使生活更加便利,他们愿意承担某些风险。
通过在社交网络上分享照片,许多人定期泄露他们旅行的细节。有些人甚至光明正大地直接分享门票预订号码。这些人也许对隐私漫不经心,实际上也可能希望他们的追随者知道自己的行踪,但我相当肯定,如果他们到达酒店并发现自己的预订被取消时,他们一定会耿耿于怀。黑客可能会因为取乐或报复取消某些预订,或者是作为勒索计划以及恶性竞争的一部分,来达到损害酒店声誉的目的。
酒店业的数据泄露和由数据配置不当引起的云数据桶泄露也是家常便饭。这些信息可能随后便在黑市上出售或用于身份欺诈。收集的数据集越完整,其价值就越高。
通过这种方式,黑客还可以利用收集的数据发送真假难辨的个性化垃圾邮件或展开其他社交工程攻击。就像那些声称用户被黑客攻击的邮件一样,提供个人信息会大大提高勒索邮件的可信度。
不仅如此,有针对性的黑客组织也可能对商业专家和政府雇员的行程充满兴趣。众所周知,诸如DarkHotel/Armyworm,OceanLotus/Destroyer,Swallowtail和Whitefly等一些APT团体已经对酒店业产生影响。这些团伙对这一领域感兴趣的原因,包括监视目标、跟踪行程、识别随行人员,或者了解某人在某一地点停留了多久,同时还允许他们实地访问目标的位置。
解决方法
根据《通用数据保护条例》,欧盟的个人数据必须得到更好的保护。然而,数据泄露的酒店对我调查结果的回应令人失望。
我联系了这些酒店的DPO(data privacy officer,数据隐私官)并告知他们我的调查结果。令人惊讶的是,25%的DPO在六周内没有回复。其中一封电子邮件被退回,因为隐私政策中的电子邮件地址已失效。而给予回复的DPO则平均花了10天才做出回应,他们主要表示确认收到了我的询问,并承诺调查该问题以及采取任何必要的行动。一些DPO认为,这些数据并非个人数据,正如隐私政策中所述,这些数据必须与广告公司共享。
一些DPO则承认他们仍在更新系统以完全符合《通用数据保护条例》标准。其他使用外部服务来支持预订系统的酒店开始担心他们的服务提供商是否符合该条例的标准,这表明酒店可能没有根据该标准的要求对其预订服务的合作伙伴进行适当的审查。
如何缓解
预订网站应当使用加密链接(HTTPS)并确保无凭据以URL参数的形式泄露。用户可以检查链接是否已加密,或者个人数据(如电子邮件地址)是否作为URL中的可见数据进行传递。用户还可以使用VPN服务来最大限度地减少他们在公共热点上的曝光。遗憾的是,对于普通的酒店顾客来说,察觉信息泄漏并非易事,如果他们想要预订特定的酒店,选择的余地非常有限。
尽管《通用数据保护条例》在欧洲已生效约一年,但这个问题存在的事实表明,这一条例的实施还没有完全解决如何应对数据泄漏的问题。到目前为止,投诉、违反该条例以及数据泄露的案件已超过20万起,用户的个人数据仍然四面楚歌。