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