机票预订系统沦陷,用户隐私岌岌可危
外媒报道称,全球近半数国际航空公司所使用的 Amadeus 机票预订系统,近日被曝存在一个严重的安全漏洞,使得黑客能够轻松查看和更改旅客信息。比如将其他常旅客的里程兑换到黑客指定的个人账户,或更改联系人信息、将客户机票退订。
据悉,该漏洞由 Noam Rotem 与安全侦探研究实验室发现,影响全球 141 家国际航空公司(占比44%)。
Rotem 展示可通过 PNR 代码更改任何乘客的航班信息
Noam Rotem 解释称:漏洞与乘客姓名记录(PNR)系统有关,PNR 用于给航班上的每位乘客指定唯一标识符。
PNR:是旅客订座记录,即PASSAGER NAME RECORD的缩写,它反映了旅客的航程,航班座位占用的数量,及旅客信息。适用民航订座系统。
通过刷新机票预订网页的特定元素(RULE_SOURCE_1_ID),Rotem 发现能够看到 Amadeus 所记录的客户的 PNR 名称和航班详情,甚至包括他自己的信息。
拿到 PNR 和姓名之后,攻击者能够登陆任何受影响的航空公司门户网站,并可能造成严重的破坏。
虽然不会造成安全或财务数据上的威胁,但该漏洞依然能够轻易毁掉许多人的出行安排。此外,黑客可以窃取常旅客的航空里程、冒充用户取消航班,变更座位、甚至用餐计划。
综上所述,问题的关键,在于 PNR 代码上。
遗憾的是,航空公司及其客户并没有受到完全的保护。航空公司会将这些信息通过非加密的形式传输,因此特别容易受到中间人攻击。此外,许多无心的旅客,有在社交网络上主动曝光自己登机牌的坏习惯。
PNR到底在哪里?
下面这家使用Amadeus作为PNR平台的航空公司,机票上的PNR是向右打印的前六个字母数字字符,如下图所示。
但是PNR并没有统一的格式,各家航空公司的预订系统都有各自一套登录凭证。有的PNR代码并未直接印在登机牌上,但仍然可以查询到。比如一些航空公司登机卡(boardingcard)上面是有一个条形码或者二维码,其实里面就包含了你的PNR信息了,扫描就可以看到。
而如果你使用信用卡支付机票款,PNR还包含了票价信息以及支付信息(例如:信用卡号,有效期和CCV码)。有时候PNR内还存有如下信息:乘客电话号码、目的国的住宿信息、出生日期以及护照资料。
一个PNR就是一次航班行程的信息合集,暴露它就是暴露自己的隐私。
此外,通过手机应用获取的预定确认以及电邮确认信息也同样印在了机票上。就算你没有在社交网站上公开炫耀自己的旅行计划,但如果习惯使用简单密码的话,不法分子也能通过偷看你的邮件内容来访问这些数据。
另外票号也是一个重要的信息,通过票号同样是可以查到你的PNR的。
所以,为了你的安全,请妥善处理你的登机牌,实在要晒,关键部位打个码吧(名字、二维码、票号等主要信息),晒票需谨慎!
再回到本次新闻事件,Rotem 还发现 Amadeus 缺乏应对穷举攻击(Brute-force attack)的有效措施。他编写了一个简单的脚本,能够生成随机的 PNR 代码,并成功访问了许多客户的账户。
Rotem 脚本示例
Rotem 及时将该问题反馈给了以色列航空公司 EL AL,后者又转告了 Amadeus 安全团队。万幸的是,他们后来修补了这方面的漏洞。
Amadeus 在声明中称:“我司一直将安全放在首位,并持续监控和更新我们的系统。在获知该问题后,安全团队迅速采取了行动,当前问题已经得到解决”。
不过为了进一步加强安全性,Amadeus 增加了一个 Recovery PTR,以防止恶意用户访问旅行者的个人信息。
最后,Rotem 给出了更进一步的建议,希望 Amadeus 能够引入验证机制(比如用密码取代 6 位 PNR 代码),以应对穷举攻击(Brute-force attack)。
对于Amadeus这样的机票预订系统而言,最重要的手段是在构建系统时要将系统设计目标定为即便受到暴力破解的攻击也难以被攻破。以下列举了一些常用的防护手段:
增加密码的长度与复杂度;
在系统中限制密码试错的次数;
密码验证时,将验证结果不是立即返回而是延时若干秒后返回;
限制允许发起请求的客户端的范围;
禁止密码输入频率过高的请求;
将密码设置为类似安全令牌那样每隔一定时间就发生变化的形式;
当同一来源的密码输入出错次数超过一定阈值,立即通过邮件或短信等方式通知系统管理员;
人为监视系统,确认有无异常的密码试错。
参考来源:
cnBeta.COM
emirates
Kaspersky
维基百科
- End -
往期热门资讯:
公众号ID:ikanxue
官方微博:看雪安全
商务合作:wsc@kanxue.com