两个人的电影免费视频_国产精品久久久久久久久成人_97视频在线观看播放_久久这里只有精品777_亚洲熟女少妇二三区_4438x8成人网亚洲av_内谢国产内射夫妻免费视频_人妻精品久久久久中国字幕

一種安卓應用中基于代碼庫安全規(guī)約的應用程序漏洞檢測分析方法

文檔序號:9304763閱讀:503來源:國知局
一種安卓應用中基于代碼庫安全規(guī)約的應用程序漏洞檢測分析方法
【技術領域】
[0001]本發(fā)明屬于程序信息安全監(jiān)測技術領域,具體涉及安卓應用中安全漏洞檢測分析方法。
【背景技術】
[0002]安全規(guī)約是由代碼庫設計人員提供的代碼庫安全使用建議,例如Google為安卓系統(tǒng)內(nèi)置函數(shù)庫提供了詳細的安全提示列表。在這些提示中,代碼庫設計人員會告知程序員如何使用代碼庫是正確的,而如何使用代碼庫會帶來軟件安全缺陷。在形式上,代碼庫安全提示類似于其他代碼庫使用指南:它們沒有統(tǒng)一的格式,并且大多數(shù)代碼庫安全提示都由代碼庫設計人員通過其母語進行書寫。因此,在實際使用中,開發(fā)者可能由于語言問題而誤解安全規(guī)約的語義。
[0003]在眾多移動平臺中,由Google設計的安卓智能手機操作系統(tǒng)以其出眾的開放性受到廣大用戶和手機廠商的青睞。安卓應用程序采用應用商城模式進行發(fā)布,開發(fā)者將開發(fā)好的應用程序提交給應用商城,用戶通過應用商城獲取經(jīng)商城驗證后的第三方應用。通過與應用商城模式相結(jié)合,安卓目前擁有海量的應用程序。
[0004]但是許多安卓應用,包括一些比較流行的應用,都包含大量的安全漏洞,而產(chǎn)生這些安全漏洞的一個重要原因就是開發(fā)者在使用代碼庫時未遵守相應的安全規(guī)約。許多公司和組織針對其代碼庫的正確使用方法提出了很多安全規(guī)約,但是,這些安全規(guī)約本身的質(zhì)量以及在實際開發(fā)中的表現(xiàn)都還有很多問題,例如,安全規(guī)約缺乏強制力、安全規(guī)約的自然語言屬性帶來的語義誤解問題、安全規(guī)約比較分散導致難以統(tǒng)一管理、以及誤導性代碼片段帶來的影響等等。
[0005]因為開發(fā)者通常不會有意去違反代碼庫安全規(guī)約,所以在這種情況下,應用程序中可能存在的安全漏洞也不可能被開發(fā)者自發(fā)修復。因此,如何檢測出由于未遵守代碼庫安全規(guī)約而引起的應用程序安全漏洞就成了一個亟待解決的問題。

【發(fā)明內(nèi)容】

[0006]本發(fā)明的目的在于提供一種安卓應用中能夠方便地檢測分析由于未遵守代碼庫安全規(guī)約而引起的應用程序安全漏洞的方法。
[0007]本發(fā)明提供的應用程序安全漏洞的檢測分析方法,包括:建立安全規(guī)約模型,即用形式化的規(guī)則語言描述代碼庫安全規(guī)約;基于安全規(guī)約模型,設計靜態(tài)程序分析器(TipSticker分析器),以用于進行自動化驗證;將該靜態(tài)程序分析器分別用于應用程序編譯階段和應用市場審查應用程序階段,以進行安全漏洞檢測,防范程序中的安全性風險。
[0008]本發(fā)明主要針對于以下幾個問題:
(I)代碼庫設計者期望設計并實現(xiàn)安全的代碼庫,并以開發(fā)者能理解的方式給出安全規(guī)約,使得開發(fā)者知曉怎樣才能安全的使用其開放接口。
[0009](2)設計和編寫應用軟件時,軟件開發(fā)人員可能出錯。開發(fā)人員可能會誤解代碼庫安全規(guī)約,也可能在不知曉的情況下違反安全規(guī)約,但是他們希望有工具能幫助他們開發(fā)安全的應用軟件。
[0010](3)應用商城在發(fā)布應用之前希望對該應用進行安全漏洞檢測,從而保證商城中的應用質(zhì)量。
[0011]本發(fā)明提供的應用程序安全漏洞的檢測分析方法,其中,建立的安全規(guī)約模型和設計的靜態(tài)程序分析器,如附圖1所示;將靜態(tài)程序分析器用于應用程序編譯和應用市場對應用程序?qū)彶閮蓚€階段進行安全漏洞檢測,如圖2所示。本發(fā)明的具體步驟為:
一、建立安全規(guī)約模型
通常,安全規(guī)約由代碼庫設計者以自然語言形式編寫,由于代碼庫使用者可能與設計者存在著不同的語言習慣,因此,安全規(guī)約本身就存在著語義誤解問題。因而,本發(fā)明提出采用統(tǒng)一的安全規(guī)約模型規(guī)范代碼庫的安全規(guī)約。
[0012]安全規(guī)約描述了代碼庫接口的正確和安全的使用方法,因此它們通常以方法為粒度出現(xiàn)。在通常情況下,安全規(guī)約會受描述方法調(diào)用間的時間順序或數(shù)據(jù)依賴限制。本發(fā)明深入探究了安全規(guī)約在大多數(shù)應用程序中不被遵守的情形,主要如下:
1.不安全接口調(diào)用順序,不安全接口調(diào)用順序描述了以不正確的順序調(diào)用敏感代碼庫接口的情形。例如,一個應用在調(diào)用了一個敏感方法前未調(diào)用用于保護該敏感方法的另一代碼庫接口。
[0013]2.不安全的數(shù)據(jù)傳播,不安全的數(shù)據(jù)傳播描述了不正確的數(shù)據(jù)流。某些代碼庫接口會由于安全原因?qū)ζ鋮?shù)的來源加以限制。例如,SQLCipher用于對數(shù)據(jù)庫進行加密。在SQLCipher得安全提示中,代碼庫設計者強調(diào)將密鑰存儲在本地是不安全的,因此開發(fā)者需要將密鑰置于應用程序外部而不是嵌入在應用程序中,并在程序運行時動態(tài)載入。因此,若沒有外部數(shù)據(jù)被傳播到SQLCipher的密鑰參數(shù)中,則應用程序違反了相應的安全規(guī)約。
[0014]3.不安全參數(shù)值,不安全參數(shù)值描述了給代碼庫接口傳遞的不安全參數(shù)。例如,將一個包含ECB的字符串傳遞到Cipher, getlnstance O的第2個參數(shù)中時會導致應用程序使用弱密鑰,該行為即違反了代碼庫的安全參數(shù)規(guī)約。
[0015]基于上述代碼庫不安全使用情形,本發(fā)明設計出一套規(guī)格化的安全規(guī)約語言。本發(fā)明的安全規(guī)約模型主要包含以下幾個部分:
1、安全規(guī)約的基本元素
在定義安全規(guī)約之前,本發(fā)明首先定義用于構(gòu)成安全規(guī)約的基本元素:執(zhí)行點,數(shù)據(jù)點。每一條安全規(guī)約都包含了多個執(zhí)行點或數(shù)據(jù)點。
[0016](I)執(zhí)行點(Execut1n Point, EP)。執(zhí)行點表示某一個方法的調(diào)用點。由于在Android應用中,方法的簽名(signature)和方法之間存在--對應的關系,因此,對于在應用程序中存在的大量的方法調(diào)用,安全規(guī)約可以使用每個方法的簽名(signature)將其表述為一個執(zhí)行點。例如,可以使用EP( “android, content.Context.getSharedPreferences”)表不對 getSharedPreferences 這個方法的調(diào)用點。因為Android應用本身的特性,應用程序并沒有一個入口方法或出口方法作為整個程序的起始執(zhí)行點或終止執(zhí)行點,因此,本發(fā)明使用兩個特殊的虛擬執(zhí)行點ProgramEntry和ProgramExit來表示整個應用程序的入口和出口。
[0017]有時需要表示滿足某個條件的執(zhí)行點的全體,這時可采用執(zhí)行點集合057?)語法。如 EPS( “android, content.Context.getSharedPreferences”)表不所有對getSharedPreferences 方法的調(diào)用點。
[0018](2)數(shù)據(jù)點(Data Point, DP)。安全規(guī)約中的數(shù)據(jù)點表示了一次方法調(diào)用的參數(shù)或返回值。由于安全規(guī)約以方法為粒度出現(xiàn),因此用戶只可以將方法調(diào)用的參數(shù)或返回值指定為程序數(shù)據(jù)點。類似于執(zhí)行點集合(EPS),安全規(guī)約制定者也可以通過數(shù)據(jù)點集合(DPS)表示所有同類數(shù)據(jù)點的集合。
[0019]2、安全規(guī)約的語法邏輯
使用上述的基本元素,本發(fā)明可以通過規(guī)則邏輯組合出需要實現(xiàn)的各種安全規(guī)約。
[0020]時序規(guī)則。時序規(guī)則限制了指令之間的時序關系。在本系統(tǒng)中使用四元組的方法來表示時序規(guī)則,語法是:
Rule:: Temporal (EPSs, EPS1, EPSe, mode)
其中EPSs,EPS1, EPSe分別為時序規(guī)則中的起始執(zhí)行點集,經(jīng)過執(zhí)行點集,和匯集執(zhí)行點集,mode 可以取 PR0P_SKIP 或 PR0P_PASS_THR0UGH。如果 mode 為 PR0P_PASS_THR0UGH,則表示如果在從
當前第1頁1 2 3 4 
網(wǎng)友詢問留言 已有0條留言
  • 還沒有人留言評論。精彩留言會獲得點贊!
1
柳河县| 贺兰县| 日土县| 乐陵市| 阿瓦提县| 铜陵市| 丹阳市| 陆丰市| 成安县| 桦川县| 沅陵县| 金湖县| 汽车| 祁门县| 延边| 绥芬河市| 大城县| 商水县| 利津县| 南宁市| 林周县| 襄汾县| 青神县| 屯门区| 牙克石市| 广平县| 江山市| 海伦市| 洪泽县| 安阳县| 綦江县| 新民市| 个旧市| 承德县| 裕民县| 兴安县| 乌审旗| 礼泉县| 韶关市| 壶关县| 石柱|