Android平臺中的安全編程
CERT安全編程團隊,隸屬于卡內(nèi)基梅隆大學(xué)軟件工程學(xué)院,最近發(fā)布了Android平臺上Java應(yīng)用的安全編程指南。
CERT在該領(lǐng)域已經(jīng)有所積累,并且在2013年發(fā)布CERT Java安全編程規(guī)范,后來出版Java編程指南:可靠安全編程的75條建議一書,該Android指南是對以上工作成果的拓展和延伸。所以,在新版Android編程規(guī)范和指南中,一部分是參照已有的Java規(guī)范指南,當然也少不了與Android相關(guān),致力于解決移動相關(guān)問題的新規(guī)則。
Lori Flynn是發(fā)起CERT Android編程規(guī)范和指南的研究人員之一,據(jù)她所說,“其他地方也存在這樣的Android安全編程建議,但是我們發(fā)現(xiàn)這些建議都不完整并且分散在網(wǎng)絡(luò)的各個角落。”CERT研究人員采用以下三種方式制定了新版Android編程規(guī)范與指南:
挖掘CERT已有的安全編程規(guī)范;
研究已有漏洞數(shù)據(jù)庫,包括國土安全部的國家漏洞數(shù)據(jù)庫等;
研究目前與安全相關(guān)的文獻,比如,研究論文、在線文章以及安全會議演講等。
所有規(guī)范和指南都可以在CERT Wiki上獲取。每條記錄以簡要概述開頭,然后描述此條規(guī)范所要解決的安全問題,并且包括違規(guī)代碼案例。Wiki中還提供了基于嚴重程度的評分、漏洞被惡意使用的可能性,以及如果在代碼中發(fā)現(xiàn)漏洞,修復(fù)漏洞的成本等。
小編聯(lián)系了Lori Flynn,并針對CERT Android安全編程規(guī)范和指南采訪了她。Lori目前在CERT的工作不僅包括完善新版安全編程規(guī)范,還包括對移動應(yīng)用進行組合性靜態(tài)分析,檢查是否符合Android平臺的數(shù)據(jù)流規(guī)則。她工作經(jīng)歷豐富,包括網(wǎng)絡(luò)安全研究,基于標準的安全分析,以及合作開發(fā)了一種檢測多態(tài)程序的新型靜態(tài)分析方法,并且取得了專利。Flynn在圣克魯斯獲得了加利福尼亞大學(xué)的計算機科學(xué)博士學(xué)位,她的研究方向是移動自組網(wǎng)絡(luò)的安全多播路由協(xié)議。
Lori,您能簡要介紹一下Android安全編程規(guī)范和指南的目標受眾有哪些嗎?
我們制定的Android安全編程規(guī)范和指南目前主要面向使用Java語言的Android應(yīng)用開發(fā)人員。但是,我們也在著手制定適用于基于底層(非Java)語言如C和C++所開發(fā)應(yīng)用的安全規(guī)范。我們的目標是幫助開發(fā)人員構(gòu)建可靠安全的系統(tǒng),但是這些規(guī)范和指南對實現(xiàn)其他質(zhì)量特性如可靠性也大有裨益。
所有希望保護客戶系統(tǒng)免受危害的組織或個人,在其開發(fā)人員遵循規(guī)則和指南并產(chǎn)出安全代碼后,都會從中受益。金融、衛(wèi)生和防御系統(tǒng)都必須小心保護其應(yīng)用所處理的信息。有些應(yīng)用處理的數(shù)據(jù)非常敏感——比如,用戶的信用卡信息、位置、短信、聯(lián)系方式和照片。除了對用戶造成潛在傷害外,非安全代碼可能會使處于金融風(fēng)險中的開發(fā)人員走上法庭,也可能使整個公司失去公眾信任(和導(dǎo)致銷售損失),或?qū)е吕щy局面,使給公眾造成不安全印象的單應(yīng)用銷售乏力。
總而言之,知曉Android安全編程規(guī)范和指南,不論對于大型組織還是獨立應(yīng)用開發(fā)者都會有所幫助。軟件開發(fā)管理者、軟件需求方,或者其他軟件開發(fā)和需求專家可以將安全編程規(guī)范作為禁止性需求的參考。教育工作者也可以通過該指南教會學(xué)生安全開發(fā)Android應(yīng)用的方法。
據(jù)您所知,移動相關(guān)人員在碰到應(yīng)用安全問題時面臨的主要挑戰(zhàn)是什么?在移動領(lǐng)域,您是否知道某些特定安全相關(guān)問題?
除了已知的公認安全編程問題以及規(guī)范和指南給出的修復(fù)方法外,無法有效把控應(yīng)用的數(shù)據(jù)去向也是我們面臨的挑戰(zhàn)之一。信息泄露如此泛濫,Android應(yīng)用之間的相互影響是主要原因。我們目前正在研發(fā)靜態(tài)分析工具,用于檢測和消除這些漏洞。有了這些工具,用戶——包括個人和組織——將更有信心解決部分應(yīng)用的數(shù)據(jù)泄露問題。然而,盡管我們目前的工作有效促進了安全分析的發(fā)展,但是還是無法解決底層代碼或反射面臨的安全問題。數(shù)據(jù)流安全問題同樣非常嚴重,所以有許多工業(yè)界和學(xué)術(shù)界的研究人員在這方面傾注心血。
另一個問題是可用性。實際上在我們深入分析數(shù)據(jù)流時,應(yīng)用需要給用戶展現(xiàn)對應(yīng)選項,還得讓用戶(開發(fā)人員用戶排除在外)容易明白這些選項的意義。Adrienne Porter Felt(Google)已經(jīng)發(fā)表了若干非常優(yōu)秀的研究論文,分析了用戶界面安全問題并給出了修復(fù)建議。她的工作涉及面向開發(fā)人員的可用性問題,比如與權(quán)限相關(guān)的不恰當API,可能導(dǎo)致正常開發(fā)人員的權(quán)限過大,進而被惡意應(yīng)用利用。
Android安全還面臨另一個問題,在Google修復(fù)Android暴露的安全問題后,因為各種原因,移動運營商可能在很長時間后才將安全更新推送給用戶。這就導(dǎo)致在這段時間內(nèi),與應(yīng)用相關(guān)的數(shù)據(jù)將面臨巨大的風(fēng)險。
遵循Android安全編程規(guī)范和指南,對應(yīng)用有哪些好處?您有沒有這方面的案例,遵循指南后,應(yīng)用能夠避免以前遇到的安全問題?
如果我們能夠嚴格遵守Android安全編程規(guī)范和指南,數(shù)據(jù)和系統(tǒng)會更安全。舉個例子吧,DRD00-J禁止將敏感數(shù)據(jù)保存到SD卡中,因為其他應(yīng)用可以讀取SD卡,DRD01-J限制內(nèi)容提供者中敏感數(shù)據(jù)的權(quán)限等。Skype的Android應(yīng)用曾經(jīng)出現(xiàn)過一個漏洞,該應(yīng)用將聯(lián)系信息和個人用戶信息保存在未加密數(shù)據(jù)庫中,并且沒有實施權(quán)限控制。如果應(yīng)用遵守DRD01-J就可以避免該問題。
為了改善語言的安全現(xiàn)狀,SCI(Secure Coding Initiative)發(fā)起了開發(fā)編程語言國際規(guī)范的工作。該規(guī)范致力于防范代碼漏洞,并充分利用在研發(fā)CERT安全編碼規(guī)范和一致性測試中所收集的信息。
您對應(yīng)用CERT安全編程規(guī)范和指南有哪些建議方法,工具、流程或其他方法都可以?感興趣的開發(fā)人員或組織要如何開始呢?
我建議開發(fā)人員首先通讀我們的技術(shù)報告,移動源碼安全分析實驗室:Java和Android安全編程規(guī)則和分析,然后瀏覽Android安全編程首頁。我們打算創(chuàng)建單獨的CERT編程規(guī)范,就像其他CERT安全編程規(guī)范一樣可以通過CERT編程規(guī)范Wiki主頁訪問。該首頁概述了我們目前在研發(fā)Android安全編程規(guī)范方面的工作:分析(適用性)和擴展已有Java規(guī)范;分析(適用性)和擴展Java指南,雖然該指南還在制定過程中;制定面向Android的安全編程規(guī)范,但該規(guī)范并不一定只針對Java語言。查看出現(xiàn)在首頁中的三個主題鏈接,這是Android安全編程規(guī)范制定中的主要課題。
接下來,我建議開發(fā)人員瀏覽一遍DRD規(guī)范和指南,并考慮如何將它們應(yīng)用到應(yīng)用編程中。然后,我建議大家閱讀Java CERT Oracle安全編程規(guī)范(Addison-Wesley Professional, 2011)中適用于Android的Java規(guī)范,包括Wiki,關(guān)注該書相關(guān)的主題。這些規(guī)則是安全應(yīng)用必須遵守的,這也是將其放在指南前面的原因。讀完規(guī)則后,以同樣方式閱讀Java編程指南:可靠安全編程的75條建議(Addison-Wesley Professional,2013)。雖然我們不一定能夠立即將書中列出的規(guī)范和指南應(yīng)用到工作中,但是這些知識精華會印入我們的腦海,當開發(fā)應(yīng)用需要用到這些規(guī)范和指南時,我們可以再仔細查看。另外我們值得做的是訂閱安全編程簡報,LinkedIn上的安全編程討論,還有安全編程wiki中的提醒,當增加新規(guī)范和指南時會立即提醒。這些渠道有助于開發(fā)人員及時知曉安全方面的修復(fù)程序。
您在Android安全編程規(guī)范方面的工作完成了嗎?或是您有沒有設(shè)想將來涉及其他領(lǐng)域?
我們在Android安全編程指南方面的工作還在繼續(xù)。另一個我們特別想研究的領(lǐng)域是分析CERT安全編程指南在基于C和C++的Android應(yīng)用中的適用性。我們已經(jīng)有了初步的分析,但是要檢驗Android底層編程接口如何影響已有編程規(guī)則的適用性,還要付出更多努力。同時,我們也會完善應(yīng)用于反射的初步規(guī)則和指南。
你們的團隊還有其他類似的項目嗎?
我們的CERT安全編程倡議(SCI)已經(jīng)為C、C++、Java和Perl制定了安全編程規(guī)范,其中一些規(guī)范已經(jīng)被像Cisco和Oracle這樣的企業(yè)在公司范圍內(nèi)采用。我們鼓勵開發(fā)人員以及其他使用這些語言工作的組織使用我們的安全編程規(guī)范,這將會帶來諸多好處,就像使用Android安全編程規(guī)范和指南一樣。
SCI的目標是將漏洞的數(shù)目降低到某個級別,有效緩解運營環(huán)境中的風(fēng)險應(yīng)用。該目標通過在實現(xiàn)和測試階段預(yù)防編程錯誤或檢測并清除安全缺陷來達成。同時,SCI也在持續(xù)壯大源碼分析實驗室(SCALe),支持根據(jù)我們的編程規(guī)范對系統(tǒng)進行一致性測試,包括針對移動平臺(Mobile SCALe)的一致性測試。移動SCALe目前專注于Android平臺,因為這是我們在制定安全編碼規(guī)范和指南時所面向的首個移動平臺。我們還計劃支持針對Apple iOS和Microsoft Windows 8的安全編程規(guī)范和一致性測試。
posted on 2014-06-30 17:56 順其自然EVO 閱讀(156) 評論(0) 編輯 收藏 所屬分類: android