2015年04月30日,綠盟科技發(fā)布2014年互聯(lián)網金融安全報告。報告收集了在2014年互聯(lián)網金融行業(yè)中的134份安全漏洞,對互聯(lián)網金融常見的安全漏洞進行了統(tǒng)計及深入分析,并從業(yè)務設計角度給出了防護方案,包括越權漏洞代碼防護、任意用戶密碼修改、惡意注冊代碼防護、惡意短信代碼防護等。報告對于互聯(lián)網金融組織及從業(yè)人員具有參考價值。以下是報告全文。
互聯(lián)網金融安全狀況堪憂。據(jù)不完全統(tǒng)計,截至2014年底,已有近165家P2P平臺由于黑客攻擊造成系統(tǒng)癱瘓、數(shù)據(jù)被惡意篡改、資金被洗劫一空等。目前很多P2P平臺整體安全技術水平跟其業(yè)務的風險性不相匹配,缺乏專業(yè)、核心的防范黑客攻擊技術,給了黑客乘虛而入的機會,如何提升平臺安全能力成為亟待解決的問題。中國人民銀行原副行長、著名經濟學家吳曉靈表示:“根據(jù)世界反黑客組織的最新通報,中國P2P已經成為全世界黑客宰割的羔羊” 。
互聯(lián)網金融異軍突起。2015年3月5日,十二屆全國人大三次會議盛大召開。李克強總理在《政府工作報告》中多次提到互聯(lián)網金融,明確指出“互聯(lián)網金融異軍突起 ”,并提出要“促進互聯(lián)網金融健康發(fā)展”。 民建中央向全國政協(xié)提交的關于進一步規(guī)范與發(fā)展我國互聯(lián)網金融的提案,列出互聯(lián)網金融行業(yè)存在的六大突出問題,其中安全性是其中一個重要方面。
近幾年互聯(lián)網金融行業(yè)新上線的系統(tǒng)非常多,綠盟科技NSTRT安全團隊收集了在2014年互聯(lián)網金融行業(yè)中的134份安全漏洞報告,并對漏洞類型和數(shù)量做了統(tǒng)計,報告中的主要觀點如下:
觀點1:互聯(lián)網金融安全敲詐事件攀升,利益驅動明顯。
觀點2:安全漏洞呈現(xiàn)部分集中化,個別漏洞非常普遍。
觀點3:互聯(lián)網金融行業(yè)入行門檻過低,安全開發(fā)重視不足。
觀點4:開發(fā)安全管理落后導致漏洞修復成本過高。
安全漏洞
按照漏洞類型的分類和數(shù)量統(tǒng)計,我們得出了最常見的12種漏洞類型,漏洞類型按照數(shù)量和風險值進行疊加后排序,得出如下漏洞數(shù)據(jù)分布:
安全漏洞分析
從上面的圖表中可以看到,在漏洞統(tǒng)計結果中,除了常見的一些如注入、跨站、CSRF、惡意上傳等Web漏洞外,部分金融平臺在業(yè)務功能設計上存在著嚴重的風險,如任意用戶密碼重置、交易參數(shù)惡意篡改等,與常見的注入、惡意上傳不同,這些業(yè)務邏輯的漏洞不會直接影響服務器的安全,但卻會直接影響用戶的資金、賬號的安全,其風險程度有過之而無不及,若被黑客所利用或被曝光,將嚴重影響業(yè)務數(shù)據(jù)安全和平臺公信力。下面報告就常見的幾種情況做簡要分析解讀:
業(yè)務設計缺陷造成的風險最高
所謂業(yè)務設計缺陷造成的風險,是為區(qū)別于那些通用的常規(guī)安全漏洞。常規(guī)漏洞包括SQL注入、XSS跨站腳本漏洞、系統(tǒng)命令執(zhí)行漏洞、溢出漏洞等。業(yè)務設計缺陷造成的漏洞一般與系統(tǒng)業(yè)務掛鉤,在漏洞的利用代碼上無明顯的攻擊特征,也就難以用通用的Web應用防護設備(例如WAF)來進行防護。在所有漏洞類型中,因業(yè)務設計缺陷造成的安全風險占的比重高達27%。常規(guī)的安全漏洞大多數(shù)能夠用Web應用防火墻等防護設施去進行防護,但是因業(yè)務設計缺陷造成的風險非常難以進行通用而全面的安全防護。因此對業(yè)務設計缺陷造成的安全風險防范和檢測尤為重要。
業(yè)務設計缺陷分類統(tǒng)計
NSTRT安全團隊根據(jù)統(tǒng)計的類型和數(shù)量,列出了在互聯(lián)網金融行業(yè)中比較常見的業(yè)務設計缺陷,并做了專門的典型案例介紹。值得一提的是,由于各個系統(tǒng)的業(yè)務有所差別,加上業(yè)務本身的復雜性,業(yè)務設計缺陷造成的漏洞可能是其它地方沒有遇到過的,這些非常少見的漏洞也難以進行分類。最常見的一些業(yè)務設計缺陷分類統(tǒng)計如下表格:
平行越權是常見的業(yè)務設計缺陷
平行越權問題是指相同權限等級的不同用戶之間可以越權獲取或操作他人的數(shù)據(jù)。根據(jù)漏洞數(shù)量的統(tǒng)計結果,在所有業(yè)務設計造成的缺陷中,平行越權問題幾乎占到了一半。平行越權問題主要包括平行越權查詢、平行越權下載、平行越權修改這三種。
以越權查詢?yōu)槔?,在很多的場景下,開發(fā)人員在設計用戶查看本人信息的功能時,服務端會檢查用戶是否為登錄狀態(tài),進而判斷用戶是否具有查看信息的權限。在這樣的設計下,開發(fā)人員只考慮了用戶是否具有查詢權限或是否為登錄狀態(tài),但沒有考慮用戶查詢的具體內容是否與用戶的權限匹配,由此造成了用戶可能查詢到其它人員的信息。
平行越權問題雖然原理上并不復雜,但是金融行業(yè)中非常常見。此類風險如此常見,安全開發(fā)意識不足是一個原因,另一方面原因是這種業(yè)務邏輯問題無法使用Web應用防火墻等設備來進行防護。要解決這類安全風險,還要從業(yè)務安全設計和安全編碼兩個方面抓起。
XSS是最常見的安全漏洞
在每年的OWASP TOP 10中,跨站腳本漏洞(即XSS)多年來一直名列前茅。在互聯(lián)網金融行業(yè)中也不例外,在各種常規(guī)漏洞中,XSS是出現(xiàn)頻率最多的漏洞類型,占到了13%。其中主要包括反射型XSS和存儲型XSS。
跨站腳本漏洞可能會導致網頁掛馬、用戶權限被盜用、釣魚攻擊等多種安全風險。
值得一提的是,CSRF(跨站點請求偽造漏洞)也比較常見,在所有漏洞數(shù)量中占了6%。在真實的攻擊中,CSRF往往會結合XSS來一起利用,進而形成巨大的威力。在很多情況下,利用一個存儲型XSS加上一個CSRF漏洞,能夠在短時間內對大量用戶進行攻擊,攻擊效果非常明顯。
短信驗證是最易受攻擊的安全功能
在統(tǒng)計中高風險漏洞中,與手機短信相關的漏洞占比高達13%。在所有安全功能中風險最高。手機短信驗證功能是一個系統(tǒng)為了驗證用戶身份而增加的安全功能,但是這個安全功能本身卻帶來了一些直接的安全風險。在手機短信驗證功能出現(xiàn)的風險類型中,最常見的有手機短信炸彈、手機短信驗證流程繞過、手機短信破解、手機短信重復利用這幾個問題。
用戶登錄功能也是安全重災區(qū)
在互聯(lián)網金融系統(tǒng)中,用戶登錄功能是一項重要的系統(tǒng)安全功能之一,也是賬號安全的第一道防線。遺憾的是,這一防線在很多地方都不夠強大,導致攻擊者往往能夠有機會突破這一防線,形成各種各樣的攻擊。
用戶登錄功能處常見的安全風險主要包括暴力破解、登錄流程繞過、用戶信息泄露、批量賬號鎖定等。
大多數(shù)地方的用戶登錄功能都有各種類型的驗證碼校驗,但是根據(jù)統(tǒng)計發(fā)現(xiàn),很大一部分的登錄驗證碼校驗存在安全缺陷,導致攻擊者可以繞過驗證碼進而執(zhí)行暴力破解。
在大量用戶信息被泄露的今天,賬號的安全非常重要。在之前大量用戶數(shù)據(jù)泄露之后,暴力破解用戶賬號密碼的成功率越來越高。因此,賬號和登錄的安全值得我們重視。
互聯(lián)網金融安全領域還不成熟
考慮到互聯(lián)網金融行業(yè)的門檻低,效益高的特點,互聯(lián)網金融行業(yè)在近幾年呈大幅度的增長態(tài)勢。在金融行業(yè),銀行使用的各種網銀系統(tǒng)都已經經過了多年的安全檢測,在安全性上已經有了明顯的進步。但是互聯(lián)網金融的各個平臺都還比較年輕,很多企業(yè)還沒有對自己的安全風險有足夠的認識。例如:2014年上半年, 國內互聯(lián)網安全問題反饋平臺烏云曝出某p2p平臺系統(tǒng)存在嚴重安全漏洞,稱“系統(tǒng)任意上傳漏洞涉及涉及金錢交易數(shù)千萬”,據(jù)統(tǒng)計,該漏洞涉及的國內網貸平臺不少于15家。
互聯(lián)網金融的研發(fā)團隊大多都是新建立的團隊,開發(fā)規(guī)范不夠健全,開發(fā)人員的經驗和安全意識也大多參差不齊。
緊急項目增加安全風險
有很多企業(yè)在進入互聯(lián)網金融行業(yè)的時候,沒有給系統(tǒng)的開發(fā)預留足夠多的時間,導致出現(xiàn)了大量的快速開發(fā)現(xiàn)象。安全分析是一項需要耐心而又細致的工作??焖匍_發(fā)可能會導致開發(fā)人員為了進度而放棄安全上的考慮。同時,在進度的壓力下,測試人員更多的會考慮系統(tǒng)的可用性,在安全上的測試則難以顧及。
互聯(lián)網金融安全開發(fā)保障
我們不僅希望自己更少遇到風險,更希望自己遇到風險之后能夠有足夠強的能力應對。針對一個企業(yè)來說,開發(fā)人員應該通過安全培訓來具備足夠強的安全風險意識和安全開發(fā)能力。對于企業(yè)的安全管理,應該要具備一套健全的安全開發(fā)規(guī)范制度和系統(tǒng)上線運營安全流程。在一個互聯(lián)網金融的項目上線之前,應該做好完善的安全準備,建立各個層面的安全防線,從項目的各個階段引入安全控制,從源頭上來避免安全風險。一個完善的開發(fā)項目應該引入SDL(Security Development Lifecycle,安全開發(fā)生命周期)流程,從安全風險管理的視角來避免安全風險。
SDL從需求階段、設計階段、實施階段、測試階段和發(fā)布響應階段來引入安全管理。SDL的各個階段相關內容可參考下圖:
在各種類型的安全漏洞中,大多數(shù)常規(guī)的安全漏洞(例如XSS、SQL注入等)能夠使用Web應用防護設備等措施來進行通用的防護,但是業(yè)務設計缺陷造成的漏洞無法用這些措施來進行通用的防護,唯一解決方案就是從設計上避免它、在代碼上修復它。
為了讓互聯(lián)網金融的研發(fā)團隊能夠避免重蹈覆轍,綠盟科技NSTRT報告曾經對最常見的一些業(yè)務設計缺陷做了詳細的介紹 ,并一一給出了對應的防護方案,這里提要如下:
越權漏洞代碼防護
針對平行越權漏洞,我們建議讓訪問和操作的對象增加用戶屬性,當對目標對象進行訪問和操作時,服務端對會話和對象的用戶屬性進行校驗,通過校驗后再執(zhí)行讀取和操作。
針對垂直越權漏洞,我們建議使用默認拒絕所有的訪問機制,然后對于每個功能的訪問,-明確授予特定角色的訪問權限,同時用戶在使用該功能時,系統(tǒng)應該對該用戶的權限與訪問控制機制進行校對。
任意用戶密碼修改
針對重置密碼功能中的任意用戶密碼重置問題,首先要保證短信驗證碼校驗功能本身的安全,給隨機驗證碼的認證次數(shù)設定限制,當認證超過次數(shù)限制則使當前驗證碼失效。其次,要保證短信驗證碼的驗證流程不會被繞過,在短信驗證通過之后重置密碼操作時,需要從服務端會話信息來判斷用戶是否經過了短信驗證碼的校驗。最后,要保證重置密碼功能不能被換位使用,重置密碼的目標賬號不能從客戶端參數(shù)中獲得,而應該從服務端會話信息中獲得。
惡意注冊代碼防護
惡意注冊漏洞一般是由于手機短信或郵箱認證功能存在缺陷或能被惡意利用導致。在設計注冊功能時,要注意對手機短信或郵件的錯誤認證次數(shù)設置限制。尤其要注意郵箱認證內容要具備不可預測性。在經過手機或郵箱認證后,要保證注冊的目標賬號為會話中保存的認證的手機或郵箱。
惡意短信代碼防護
針對惡意短信類的安全問題,我們建議可以通過以下3種方式進行防護:
1、 從服務端限制每個號碼的發(fā)送頻率和每天的發(fā)送次數(shù),防止攻擊者利用短信接口進行惡意轟炸。
2、 在發(fā)送短信之前要求經過圖形驗證碼的認證,防止攻擊者遍歷手機號來發(fā)送短信。
3、 發(fā)送短信的內容應直接由系統(tǒng)內部進行定義,客戶端可通過數(shù)字或字符的方式,對所需要發(fā)送的內容進行選擇,如messagetype=1 為密碼找回,messtype=2為注冊,然后通過數(shù)字來索引要發(fā)送的內容。
在曾經很長一段時間,金融行業(yè)中最典型的網銀系統(tǒng)經歷了多年的安全教訓和考驗。如今,我們欣然看到多年前那些常見的高危漏洞在網銀系統(tǒng)中已經很難被發(fā)現(xiàn)。
曾幾何時,互聯(lián)網金融浪潮給金融行業(yè)帶來了一輪新的風雨。它比網銀系統(tǒng)更加開放和多樣化,自身風險更高,防護起來更加復雜。2014年的各大安全事件讓我們認識到,在商業(yè)利益驅動下,風險來得比大家想的還要快。
捻亂止于河防。在2014年對互聯(lián)網金融行業(yè)的信息安全領域依然缺乏足夠的監(jiān)管,但我們相信,在各方的努力下,互聯(lián)網金融行業(yè)一定能夠變得安全、健康。