金融行業(yè)安全漏洞分析報告
報告介紹
互聯(lián)網(wǎng)+時代的到來,人們充分享受新時代科技創(chuàng)新成果的便利同時,萬物互聯(lián)帶來的信息安全風險也日漸提高,信息泄密事件層出不窮,在資金體量龐大、用戶信息集中、安全隱患影響深遠的金融領(lǐng)域,所面臨的安全問題尤為凸顯。
人們真切地感知到,原有的金融服務模式被顛覆,網(wǎng)銀、第三方支付、互聯(lián)網(wǎng)金融等新興模式異軍突起。用戶也在這些新的業(yè)務模式下,將自身姓名、身份證號碼、手機號碼等身份認證信息與業(yè)務緊密綁定關(guān)聯(lián)。所以說,互聯(lián)網(wǎng)的發(fā)展為傳統(tǒng)的信息防御體系劃開了一道口子,打破看似牢不可破的安全防護狀態(tài),直逼用戶核心數(shù)據(jù)。在這樣的背景下,本次安華金和數(shù)據(jù)庫攻防實驗室選擇以近三個月金融行業(yè)數(shù)據(jù)安全高危漏洞為分析樣本,就金融行業(yè)安全漏洞的分布狀態(tài)、原因分析及對應的安全防御辦法詳盡描述。
本次報告核心觀點
1. 金融行業(yè)漏洞細分狀況分析 2. 金融數(shù)據(jù)泄露原因分析 3. 金融行業(yè)漏洞入侵防御建議
報告正文
2015年9月至11月三個月的時間里,安華金和在烏云漏洞平臺上匯總金融行業(yè)已被客戶確認的安全漏洞共206個。其中高危漏洞195個,中危漏洞9個,低危漏洞2個。而這206個漏洞中,直接與數(shù)據(jù)泄露相關(guān)的漏洞110個,占漏洞總量的的53%。
金融行業(yè)漏洞細分狀況分析
近幾年來隨著行業(yè)政策和市場需求的推動,金融行業(yè)已經(jīng)開始嘗試服務互聯(lián)網(wǎng)化,普通業(yè)務以及更深層次的業(yè)務也會逐漸互聯(lián)網(wǎng)化,逐漸促進整個金融行業(yè)向互聯(lián)網(wǎng)全面遷移。由于金融業(yè)多金的本質(zhì),各類不法分子一直對這個行業(yè)虎視眈眈;一些內(nèi)部從業(yè)人員,也會因為利益的驅(qū)使,放下道德底線,從內(nèi)部竊取數(shù)據(jù),導致安全堡壘從內(nèi)部被攻破,內(nèi)外安全問題集中,使得金融業(yè)的安全更加危機四伏。金融行業(yè)多年沉淀的邊界安全防御機制應面對互聯(lián)網(wǎng)帶來的新問題往往顯得力不從心。
安華金和本次將金融行業(yè)安全漏洞進行了細分,以銀行、保險、互聯(lián)網(wǎng)金融、金融機構(gòu)(包括證券、基金、期貨、支付和與金融相關(guān)的其他機構(gòu))四類進行漏洞劃分。近三個月時間在烏云已經(jīng)確認的金融行業(yè)206個漏洞中,其中銀行42個,保險和互聯(lián)網(wǎng)金融各47個,其余來自證券、基金、期貨、支付等金融機構(gòu)。平均每月各細分領(lǐng)域曝出的漏洞在10個到20個之間。
2015年9至11月金融細分行業(yè)漏洞分布
金融機構(gòu)由于包含業(yè)務種類繁多,漏洞數(shù)量最高、新興互聯(lián)網(wǎng)金融,由于對業(yè)務的追趕速度和要求遠高于安全需求,雖然業(yè)務發(fā)展不長,但暴露的安全數(shù)量和威脅卻名列前茅。截至2015年11月底,全國范圍內(nèi)近100家互聯(lián)網(wǎng)金融平臺被爆出存在漏洞。
金融數(shù)據(jù)泄露原因分析
安華金和通過對大量金融行業(yè)安全漏洞進行統(tǒng)計分析,發(fā)現(xiàn)SQL注入依然是金融業(yè)最大威脅。命令執(zhí)行(框架漏洞)緊隨其后占據(jù)了13%的比例。而其中越權(quán)類漏洞數(shù)量占比明顯高于其他行業(yè)。
2015年9至11月金融行業(yè)安全漏洞類型
按照各行業(yè)深入探查不難發(fā)現(xiàn):
1.銀行行業(yè)中民營銀行安全漏洞數(shù)量明顯高于國有銀行。
2.金融業(yè)漏洞威脅大,高危漏洞占到總漏洞數(shù)的94.56%
3.銀行的APP業(yè)務成為隱含漏洞的重災區(qū)
4.應用系統(tǒng)權(quán)限繞過漏洞五花八門
5.雖然有WAF,但SQl注入依然強勁。
整個金融行業(yè)中漏洞種類最全的就是互聯(lián)網(wǎng)金融。下面我們著重介紹一下互聯(lián)網(wǎng)金融業(yè)中的漏洞。
互聯(lián)網(wǎng)金融安全漏洞類型
互聯(lián)網(wǎng)金融業(yè)的漏洞數(shù)量雖然不是最多,但種類最全,分布也較為平衡。因為簡單易用,用戶對互聯(lián)網(wǎng)金融的接受度普遍比較高。從各種寶到名目繁雜的P2P,互聯(lián)網(wǎng)金融是金融業(yè)界的新寵兒。但由于該行業(yè)缺乏嚴格的政策管理和代碼審計,業(yè)務發(fā)展的速度又遠超安全可提供的支撐能力,前臺代碼質(zhì)量較低,導致出現(xiàn)大量設計邏輯錯誤、SQL注入、跨站腳本攻擊;從業(yè)人員安全意識低,管理不到位,導致出現(xiàn)大量弱口令、框架漏洞、配置錯誤、敏感信息泄露;軟件更新緩慢,導致框架錯誤。
其中最為嚴重的是系統(tǒng)設計邏輯安全威脅。這些設計錯誤多體現(xiàn)在失敗的權(quán)限約束上,形成一系列越權(quán)漏洞和SQL注入。越權(quán)本質(zhì)并不復雜,例如平行越權(quán)查詢、平行越權(quán)修改、垂直越權(quán)操作、批量注冊、人以用戶密碼修改、密碼暴力破解、平行越權(quán)下載、身份偽造漏洞、退出功能失效、任意郵箱注冊漏洞、郵箱激活功能漏洞、刷積分漏洞、邀請碼暴力破解、一號多戶問題等等。
其中越權(quán)類查詢在設計錯誤中占到了29%左右。舉個簡單的例子比如A用戶的訂單是111。B用戶的訂單號是112。A原本不能查詢B的訂單,但A用戶可以通過修改訂單號來越權(quán)查詢B的訂單,這就是一個平行越權(quán)漏洞。這類問題主要就是程序代碼自身邏輯錯誤導致。這和很多互聯(lián)網(wǎng)企業(yè)過度注重擴展速度,不關(guān)注自身安全的行為很相似,需要加強代碼審計來規(guī)避這種風險。
例如烏云上爆出的 wuyun-2015-147026漏洞是一個標準的因為設計權(quán)限導致可充值任意用戶密碼的漏洞。按照流程在網(wǎng)站上注冊一個用戶,選擇忘記密碼。去郵箱打開鏈接。重新輸入密碼和確認密碼。點擊發(fā)送,劫持客戶端的網(wǎng)絡包。
在包中把當前用戶名替換成目標用戶名再發(fā)送給服務器,達到修改目標用戶密碼的目的。至此入侵者獲得一組被人的賬號,為入侵者可進一步實施入侵奠定基礎。
面對SQL注入雖然有WAF的輔助,但WAF難免有關(guān)鍵字過濾不到的時候。于是在金融業(yè)界出現(xiàn)了大量的SQL注入漏洞。由于WAF采用的是正則匹配的方式,于是出現(xiàn)了以下3種常見繞過WAF的手段:
(1)編碼繞過
在大小寫繞過的基礎上開始出現(xiàn)編碼繞過,主要出現(xiàn)了三種:URL編碼、十六進制編碼、Unicode編碼。在瀏覽器中輸入URL會進行一次URL編碼,黑客會通過多次編碼來進行WAF繞過,例如:Id.php?id=1%2520union/**/select ,數(shù)據(jù)庫得到的Id.php?id=1 union/**/select。如果只解碼一次得到的是Id.php?id=1%20union/**/select,很有可能繞過WAF入侵數(shù)據(jù)庫。針對這一問題可以采用多次循環(huán)解碼來應對。其中Unicode編碼種類很多,如果只是基于黑名單過濾,無法處理全部情況,其中UTF-32曾經(jīng)實現(xiàn)過對GOOGLE的繞過。
(2)注釋繞過
不但可以采用編碼改寫關(guān)鍵字,還可以采用注釋改寫關(guān)鍵字,避免正則匹配。例如z.com/index.php?page_id=-15 %55nION/**/%53ElecT1,2,3,4 'union%a0select pass from users# 。就是用符號編碼代替一部分字母和判定的空格來逃避正則匹配。(selectxxx不會被攔截,因為可能是函數(shù)名等。select 空格xxx則一定會被攔截,去掉空格成為繞過的關(guān)鍵)。同樣還有針對MYSQL版本的/*!5000union*/系列。
(3)等價替換
等價替換是個比較大的分類,主要可以分為等價函數(shù)、等價符號、特殊符號、比較符號等4類。
等價函數(shù),就是同功能函數(shù)替換。WAF禁止了一些函數(shù),但對另外一些函數(shù)沒有禁止例如 Substring()可以用mid(),substr()這些函數(shù)來替換。還將可以采用生僻函數(shù)迂回完成原函數(shù)的功能,進行WAF關(guān)鍵字繞過。and or 這種關(guān)鍵字在PHP中可以用|| 和&&代替。于是語句id=1 or 1=1就可以寫成id=1 || 1=來進行繞過。同樣!= 、>、<等都可以代替等號進行繞過。
除去繞過關(guān)鍵字和關(guān)鍵符號外,最關(guān)鍵的是繞過空格。想各種方式避免空格出現(xiàn)。
例如原句 id=1 or 1=1
可以寫成 id=1+or+1=1
id=1%0bor%0b1=1
id=1--s%0aor--s%0a1=1
id=1/*!or*/1=1
id=1()or(1=1) 等多種形式進行嘗試繞過
金融行業(yè)漏洞入侵防御建議
金融行業(yè)除去人為因素造成的漏洞外,最主要的兩大類漏洞分別是SQL注入和程序邏輯錯誤。
1.解決人為因素
人為因素會造成弱口令、錯誤配置等。人為因素只能從人的角度進行規(guī)范。通過加強安全團隊建設、人員安全意識培訓等方式應該可以解決人為因素造成的問題。
2.解決SQL注入
SQL注入是金融行業(yè)數(shù)據(jù)安全面臨的最大威脅。只依賴WAF不足以完全保障程序免收SQL注入的困擾。這是由于WAF擅長解析過濾http協(xié)議,不能對SQL進行解析過濾。針對這個缺陷,可以在WEB應用和數(shù)據(jù)庫之間加入數(shù)據(jù)庫防火墻進行SQL部分的解析和過濾。數(shù)據(jù)庫防火墻對從WEB應用發(fā)向數(shù)據(jù)庫的SQL語句進行語法解析,可以理解SQL語句的真實含義,并做以下四點判斷:
語句是否含有明顯的SQL注入特征;
語句訪問的對象是否屬于該用戶訪問權(quán)限;
語句的關(guān)鍵謂詞是否被禁用;
限制語句的返回行數(shù),把危險控制在最低限。
加入數(shù)據(jù)庫防火墻后,數(shù)據(jù)庫防火墻會在WEB應用和數(shù)據(jù)庫之間獲取WEB應用發(fā)送給數(shù)據(jù)庫的SQL語句。通過拿到的SQL語句,按照不同數(shù)據(jù)庫進行SQL協(xié)議解析,通過協(xié)議解析把應用發(fā)送的SQL語句還原成標準模式(去掉各種加入的符號,轉(zhuǎn)譯碼等),防止黑客利用上述繞過WAF的手法繞過數(shù)據(jù)庫防火墻進行SQL注入。
首先還原后的SQL語句和黑名單中的禁止語句結(jié)構(gòu)進行匹配,如果認為是威脅語句,則禁止該語句發(fā)送到數(shù)據(jù)庫端,并通過發(fā)送短信、郵件等方式及時通知管理員進行處理;語句結(jié)構(gòu)判斷沒有問題后防火墻接下來會對語句中的操作對象和謂詞進行判斷,如果對象或謂詞有控制,則依舊禁止該語句發(fā)送到數(shù)據(jù)庫端;最后即便規(guī)則全部符合,SQL語句被發(fā)送到數(shù)據(jù)庫端,數(shù)據(jù)庫防火墻還可以通過行數(shù)控制來限制數(shù)據(jù)庫每次的返回行數(shù)把威脅減到最小。
3.解決程序邏輯錯誤
程序邏輯錯誤主要指每個用戶權(quán)限的劃分時存在邏輯問題。這需要對業(yè)務系統(tǒng)中邏輯錯誤進行代碼修改,并加強關(guān)鍵部分的邏輯防守。特別需要注意加強防守的功能點有購物車、支付功能、提現(xiàn)功能、用戶數(shù)據(jù)查詢、訂單數(shù)據(jù)查詢、API接口、密碼設置/重置等。同時要注重重要業(yè)務系統(tǒng)的運維管理、遵循安全開發(fā)最佳實踐、對密碼本身進行可靠的存儲(數(shù)據(jù)庫中只存儲加鹽的HASH而不是密碼本身)、使用加密的傳輸協(xié)議。
安全其實就是這樣一種形態(tài),平時不出狀況看不到安全的效果,一旦爆發(fā)數(shù)據(jù)泄露事件,無論對于企業(yè)還是用戶本身,甚至國家信息安全,其損失不可估量。業(yè)務在發(fā)展,安全領(lǐng)域攻與防的對抗將長期持續(xù)。