外媒報導稱,全球近半數國際航空公司所使用的 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是什麼?
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
- 維基百科
更多資訊: