專訪沃頓在線執(zhí)行總裁朱磊:談?wù)勀切┎话踩腁PI
原創(chuàng)在今年7月底舉行的WOT2015移動互聯(lián)網(wǎng)開發(fā)者大會上,北京沃頓在線信息技術(shù)有限公司執(zhí)行總裁、安全專家朱磊先生帶來了關(guān)于《APP中那些不安分的小接口》的精彩演講,并在會后接受了51CTO記者的采訪。
在本次采訪中,朱磊向我們介紹了那些不安全的API,并解釋API為何會給企業(yè)構(gòu)成重大風(fēng)險,以及企業(yè)應(yīng)如何確保API在企業(yè)環(huán)境中的安全性。
【受訪者簡介】
朱磊是專注運維安全的北京沃頓在線信息技術(shù)有限公司創(chuàng)始人,《暗戰(zhàn):數(shù)字世界之戰(zhàn)》一書作者。他曾任京東研發(fā)系統(tǒng)安全經(jīng)理,具有多年的互聯(lián)網(wǎng)信息安全管理經(jīng)驗,豐富的信息安全理念和多個安全系統(tǒng)架構(gòu)經(jīng)驗。
那些不安全的API
2015年1月,Moonpig因安全漏洞泄露了約300萬名客戶的信用卡信息,隨后該網(wǎng)站關(guān)閉了移動app。研究發(fā)現(xiàn)該漏洞出現(xiàn)在MoonPig移動app可與其服務(wù)器通訊的部分,即API。API發(fā)送的信息并不是受單個用戶名及密碼保護(hù)的信息,而是受到同一憑證保護(hù)的信息,不管登錄的用戶是誰。因此,攻擊者可訪問網(wǎng)站任何一名用戶的詳細(xì)資料、查看之前的訂單并對任何用戶下訂單。
2014年1月,Snapchat數(shù)據(jù)泄露事故導(dǎo)致約460萬用戶受影響,而該事故的根源就是不安全的API。雖然API并不是直接攻擊目標(biāo),但API允許攻擊者大規(guī)模匹配Snapchat用戶的手機(jī)號碼、昵稱與用戶名等個人資料。
朱磊透露,據(jù)國內(nèi)某安全機(jī)構(gòu)最新移動安全報告指出,截至2015年第一季度,安卓設(shè)備的病毒感染量高達(dá)2406.6萬,平均7.6臺安卓設(shè)備就有1臺被感染。在安卓移動應(yīng)用平臺,16個行業(yè)的top10應(yīng)用共有4,775個漏洞,平均每個應(yīng)用有30個漏洞。4,775個風(fēng)險漏洞中,44%屬于高危漏洞、56%屬于中危漏洞。他表示,很多APP存在的安全漏洞大多與API有關(guān),也許在我們使用的眾多APP中,也許就有那么一個甚至兩個或多個存在著風(fēng)險,只是我們不知道。
為什么API會給企業(yè)帶來重大風(fēng)險?
API一直是信息安全界比較關(guān)注的一個問題,很多的安全泄露事件都是跟API有關(guān)。從近兩年曝出的多起安全事件分析來看,利用網(wǎng)站服務(wù)器與手機(jī)APP之間的接口存在的漏洞對網(wǎng)站服務(wù)器發(fā)起攻擊,已經(jīng)成為一種流行趨勢。很多網(wǎng)站在APP的接口的訪問管理和訪問控制機(jī)制要弱很多。這些APP背后的服務(wù)器,通常處于一個盲區(qū)(一般沒訪問入口),很少有人會去關(guān)注這些服務(wù)器安全情況。但對于攻擊者來說,只需簡單利用,便能得到這一系列的APP背后的服務(wù)器地址以及API接口信息,然后通過挖掘這一系列的API接口的漏洞,就能直接獲取到云端所有信息。
為什么API會給企業(yè)帶來信息泄露等安全風(fēng)險呢?對此,朱磊給出了他的看法。
他認(rèn)為,因為API其實是網(wǎng)站的一個衍生體。對于網(wǎng)站來說它背后有很多接口,雖然對于用戶的感官來看,它是一個完整的頁面,展示所有的商品與網(wǎng)站內(nèi)容。但對于網(wǎng)站后臺來說,更多的是一個一個接口去組成這些數(shù)據(jù),形成一個完整的頁面。而接口涉及到很多信息,這時如果API各種接口在權(quán)限控制上不夠嚴(yán)格,就會造成較嚴(yán)重的信息泄密事件。針對手機(jī)APP,其實它本身存在的安全問題不像外部產(chǎn)生的那么多那么直接。所以開發(fā)人員會把很多精力放在API的接口和測試上,來驗證每一個API的接口,嚴(yán)格控制權(quán)限,檢驗信息查詢功能,確保按需投放數(shù)據(jù)。因為如果沒有任何控制,當(dāng)查詢一個手機(jī)號碼時,API的端口會把人員的姓名,手機(jī)號家庭住址以及其他的相關(guān)信息全部展示出來。經(jīng)統(tǒng)計調(diào)查發(fā)現(xiàn),注入、越權(quán)、暴力破解密碼等問題歸根到底其實很多都與接口相關(guān)。
如何確保API在企業(yè)環(huán)境中的安全性?
據(jù)了解,安全問題通常不在于API背后的概念,而在于它的編碼方式。很多應(yīng)用開發(fā)人員在編寫或使用API時沒有考慮安全因素,使得應(yīng)用和數(shù)據(jù)處于危險之中。當(dāng)涉及API時,糟糕編寫的代碼很快就會變成危險代碼。
因此,企業(yè)及其開發(fā)人員必須采取一些措施來加強和確保API在企業(yè)環(huán)境的安全性。朱磊建議企業(yè)加強安全防護(hù)確保API的安全性時需做好“權(quán)限審核”。他認(rèn)為,安全性對于企業(yè)內(nèi)部來說,更多的是每個企業(yè)部門和部門之間相互的配合。其實就跟API每一個之間的配合是一樣的,每個部門負(fù)責(zé)一個業(yè)務(wù)線的API的開發(fā)、測試,功能性安全的檢查。當(dāng)將這些API全部都拼在一起,合成一個網(wǎng)站或者APP界面的時候,其實更多的還是權(quán)限問題。
朱磊表示,對于服務(wù)器來說,服務(wù)器環(huán)境是整個API或者程序運行的基礎(chǔ)。我們早期的安全主要是面向于服務(wù)器,尤其是服務(wù)器的補丁,用戶權(quán)限,包括一些文件權(quán)限、應(yīng)用權(quán)限等。但是隨著現(xiàn)在業(yè)務(wù)的這些發(fā)展,API的應(yīng)用越來越多。服務(wù)器運維要控制一部分自己服務(wù)器的權(quán)限,產(chǎn)品開發(fā)團(tuán)隊要負(fù)責(zé)一部分API權(quán)限,兩個相互之間對接時要實現(xiàn)很好的控制。這個層面不光是要程序代碼當(dāng)中實現(xiàn),在相互調(diào)動之間去做身份的審核,更多的是在流程設(shè)置的時候,要盡量去做一些標(biāo)準(zhǔn)化的接口的對應(yīng)和平臺的對接。
寫在最后
針對API的安全防護(hù)問題,筆者也談?wù)勛约旱慕ㄗh,希望企業(yè)能夠重視以下幾點,盡量避免因API的安全問題導(dǎo)致信息泄露事件的發(fā)生。
授權(quán)用戶和認(rèn)證程序:Web應(yīng)用程序中通常只有對最終用戶進(jìn)行身份驗證,其實API世界也必須驗證應(yīng)用程序。使用身份驗證和授權(quán)的標(biāo)準(zhǔn)化協(xié)議,可以更安全地使用API。
加密傳輸:總是對敏感數(shù)據(jù)進(jìn)行加密,避免純文本的傳輸。開發(fā)人員應(yīng)該使用SSL證書,保證web api端點項目和web服務(wù)接口間敏感數(shù)據(jù)的傳輸安全,防止黑客嗅到這些數(shù)據(jù)。
保護(hù)證書:在特定類型的業(yè)務(wù)場景中管理應(yīng)用程序,可以采用SSL VPN、數(shù)字簽名的令牌多種安全機(jī)制。令牌是唯一地標(biāo)識一個用戶的字符串,你可以將這些字符串存儲在一個數(shù)據(jù)庫,如果用戶輸入正確的用戶名和密碼就可以訪問,然后使用API用戶訪問一個API的方法。
避免靜態(tài)或嵌入式密碼:當(dāng)你想要改變政策或更新安全時,將所有的邏輯構(gòu)建到移動應(yīng)用程序并不是一件好事。有時有些開發(fā)人員走捷徑,使用簡單的密碼或者讓手機(jī)應(yīng)用程序在本地緩存ID和密碼。從安全的角度來說,這是一個巨大的問題,所以必須要避免靜態(tài)密碼。
只公開必要的信息:開發(fā)人員通常會把用戶的所有信息給API,因為他們不知道哪些數(shù)據(jù)是必需的。為確保隱私安全,應(yīng)該只提供需要的數(shù)據(jù)。