隨著移動互聯(lián)網(wǎng)時代的到來,大力發(fā)展移動金融業(yè)務、不斷提高對傳統(tǒng)服務的替代率已經(jīng)成為商業(yè)銀行等傳統(tǒng)金融機構的重要戰(zhàn)略。傳統(tǒng)金融機構自身在移動領域技術儲備不足的情況下,為了快速占領業(yè)務制高點往往會選擇將系統(tǒng)外包開發(fā)。
以移動銀行系統(tǒng)為例,開通相關業(yè)務的國有商業(yè)銀行、全國性股份制商業(yè)銀行和城市商業(yè)銀行超過80%都是外包開發(fā)的。外包的引入推動了移動金融創(chuàng)新的步伐,快速打造了WAP手機銀行、短信銀行、APP手機銀行、微信銀行等系列產(chǎn)品,為用戶提了豐富的移動金融服務。
需要警惕的是,尚無互聯(lián)網(wǎng)安全經(jīng)驗的商業(yè)銀行還沒有充分認識到:移動金融盛世之下也正在孕育著一個新的巨大的黑產(chǎn)市場。
外包開發(fā)的移動金融應用在安全性方面存在巨大隱患:以筆者多年在安全企業(yè)的從業(yè)經(jīng)驗來看,外包的開發(fā)人員水平參差不齊,大部分外包開發(fā)人員在安全方面的技能和意識幾乎可以忽略不計;外包商的信息安全管理水平也較差,甚至難以保障自身的安全性,更不要說交付的系統(tǒng)。
過去幾年,業(yè)內很多安全團隊都已經(jīng)著手開始移動金融特別是移動銀行方面的安全研究。事實證明,我們看到的安全現(xiàn)狀比想象中的更加糟糕。在今年業(yè)內的幾個安全會議中,筆者也分享過一些漏洞案例和測試結果?,F(xiàn)在筆者把一些外包管理中的典型安全問題整理成文,供業(yè)界參考。同時也希望起到拋磚引玉的作用,請業(yè)內的大牛們不吝賜教。
【案例一:圖形驗證碼邏輯后門可導致大量用戶賬號被竊取】
案例概述
Y公司是一個已經(jīng)上市的信息科技公司,國內多家商業(yè)銀行都是其客戶。我們在分析Y公司的移動銀行產(chǎn)品時,發(fā)現(xiàn)產(chǎn)品的圖形驗證碼機制存在邏輯后門可以被繞過,利用這個缺陷可以竊取大量用戶賬號。由于外包團隊的代碼復用,我們已經(jīng)在至少兩家商業(yè)銀行的移動銀行系統(tǒng)中復現(xiàn)了這個安全問題。
詳細分析
我們來看看客戶端的登錄邏輯,似乎有一點奇怪的東西在里面:
仔細分析一下,這是登錄時輸入圖形驗證碼的功能,開發(fā)人員出于某種需要在這里預留了一個萬能驗證碼(被打了馬賽克的四個字符)。正常的用戶登錄如驗證碼輸入的不正確,系統(tǒng)會給出對應的提示。
如果我們使用預留的萬能驗證碼,情況就不一樣了。如下圖所示,系統(tǒng)并沒有提示登陸驗證碼錯誤,而是直接驗證賬號密碼了。
利用這個缺陷,我們可以針對該商業(yè)銀行所在地的用戶進行大規(guī)模賬號暴力破解攻擊。一般來說,大部分用戶都習慣將移動銀行密碼設置為六位數(shù)字,而且查詢密碼和交易密碼也有很大的概率設置為相同的。攻擊者可以查找該地區(qū)的手機號碼段范圍作為登錄用戶名,以六位數(shù)字組成的密碼字典進行暴力破解,幾十萬移動銀行帳戶信息唾手可得。
【案例二:調試接口未關閉導致用戶敏感信息泄露】
1、案例概述
H公司也是一家上市的科技公司,其金融客戶遍布全國,采用H公司移動銀行方案的客戶包 括至少兩家全國性股份制商業(yè)銀行和多家城市商業(yè)銀行。筆者在分析H公司的移動銀行產(chǎn)品安全性時,發(fā)現(xiàn)沒有關閉服務端的調試接口,造成大量的用戶敏感信息泄露。這種問題其實也比較常見,往往是外包開發(fā)完成后上線過程的疏忽造成的,實際上更常見的例子是Android客戶端通過logcat輸出調試信息的問題。
2、詳細分析
移動銀行作為電子銀行的渠道,動賬操作需要和銀行的核心系統(tǒng)交互。H公司的開發(fā)團隊為了方便開發(fā)和調試,在手機銀行服務端代碼中開放調試接口。該調試接口會將用戶轉賬的詳細信息輸出到web目錄的test.log文件中,如圖5所示。攻擊者可以通過瀏覽器直接訪問到這個log文件,該系統(tǒng)的每一筆轉賬交易都記錄在其中,從中可以獲取大量的用戶賬號、手機號、卡號和交易密碼等信息。
這個案例是否讓你想起了攜程泄露用戶信用卡信息的安全事件?是的,如出一轍,只是在金融行業(yè)內這種安全事件一般是很少被曝光的。
【案例三:開發(fā)商被滲透導致代碼和客戶端簽名證書泄露】
1、案例概述
國內某漏洞平臺曾經(jīng)曝光過這樣一個漏洞:某大型國有銀行的移動銀行ios客戶端中存在一個txt文件,文件中存儲了一個svn服務器的ip地址、用戶名和密碼,黑客解壓出該文件獲取信息后可以直接連上并checkout服務器上的文件。
2、詳細分析
這個漏洞直到被平臺公開細節(jié)后的很長一段時間內都沒有徹底修復。在被曝光后數(shù)月時間內,該svn服務器一直沒有修改泄露的帳戶密碼,也沒有屏蔽互聯(lián)網(wǎng)的訪問。我們分析后發(fā)現(xiàn)這臺服務器是外包開發(fā)商L公司的。L公司號稱是專注于向銀行提供手機銀行全面解決方案和手機支付解決方案的高新技術企業(yè),客戶遍布全國。
該svn服務器上存儲的內容簡直超乎想象,包括該國有銀行移動銀行系統(tǒng)的全部項目文檔、完整的Android和IOS客戶端代碼,甚至還存放了用于客戶端簽名的數(shù)字證書。下圖是當時被曝光的部分數(shù)據(jù)的截圖。利用這些數(shù)據(jù)信息,黑產(chǎn)從業(yè)者可以開發(fā)一個擁有該銀行合法簽名的移動銀行木馬,借助互聯(lián)網(wǎng)資源下載網(wǎng)站、論壇甚至假基站等渠道傳播。
【結束語:路漫漫其修遠】
由于篇幅所限,筆者陳述的三個例子只是從幾個側面揭示了外包開發(fā)中存在的風險。在未來一段時間內,金融機構應該仍將會借助外包公司的力量快速建設和升級移動金融業(yè)務平臺。筆者也贊同業(yè)務優(yōu)先的原則,業(yè)務的停滯不前或倒退才是最大的安全風險,不能因噎廢食。
但是移動金融畢竟涉及廣大用戶的個人隱私和資金安全,我們建議金融機構在外包開發(fā)的過程中關注如下信息安全風險:
1. 外包公司自身的安全管理水平較低、安全運維能力不足,會造成文檔、代碼甚至是簽名證書等重要信息資產(chǎn)的泄露;
2. 外包公司員工安全技能和安全意識不足,開發(fā)的代碼經(jīng)常會存在各種安全漏洞,常見的如服務端任意文件下載、SQL注入、客戶端組件暴漏和敏感信息泄露漏洞等;
3.外包開發(fā)的管理流程不夠正規(guī),投產(chǎn)時未關閉服務端或者客戶端的調試接口,被黑客利用會造成不可估量的損失;
4. 外包開發(fā)人員故意留邏輯后門等。
針對以上的風險,我們建議金融機構強化如下的安全管理措施:
1. 選擇外包商時,應對其安全管理和安全運維狀況進行評估;
2. 規(guī)范外包開發(fā)的管理流程,金融機構的人員也要深度參與到開發(fā)過程中進行全過程的管控;
3. 加強對外包開發(fā)人員的安全意識和技能培訓,將代碼漏洞率等作為項目結項考評的要素;
4. 對外包開發(fā)的代碼進行安全審計,特別是登錄、轉賬等重要業(yè)務場景需要重點審計;
5. 建立針對移動金融業(yè)務系統(tǒng)的安全測試機制,完善和細化安全測試方法、測試用例,投產(chǎn)前進行嚴格的安全測試,上線后進行周期性測試;
6. 加強對異常交易的監(jiān)控和分析。
最后打個小廣告,除了平時對互聯(lián)網(wǎng)金融安全的研究,騰訊安全平臺部也招募互聯(lián)網(wǎng)金融安全方面的崗位,歡迎有志從事互聯(lián)網(wǎng)金融安全的同學加入我們。我們官方微博有發(fā)布相關信息,相信你能找得到。