本發(fā)明涉及一種android平臺(tái)下手機(jī)應(yīng)用程序的安全漏洞挖掘方法,屬于源代碼檢測(cè)領(lǐng)域技術(shù)領(lǐng)域。
背景技術(shù):
android是一種以linux為基礎(chǔ)的開放源碼操作系統(tǒng),主要使用于便攜設(shè)備。目前尚未有統(tǒng)一中文名稱,中國(guó)大陸地區(qū)較多人使用android。android操作系統(tǒng)最初由andyrubin開發(fā),最初主要支持手機(jī)。2005年由google收購(gòu)注資,并聯(lián)合多家制造商組成開放手機(jī)聯(lián)盟開發(fā)改良,逐漸擴(kuò)展到平板電腦及其他領(lǐng)域上。2010年末數(shù)據(jù)顯示,僅正式推出兩年的android操作系統(tǒng)已經(jīng)超越稱霸十年的諾基亞symbian系統(tǒng),躍居全球最受歡迎的智能手機(jī)平臺(tái)。android的主要競(jìng)爭(zhēng)對(duì)手是蘋果的ios,微軟的wp7以及rim的blackberryos。
面對(duì)移動(dòng)智能終端市場(chǎng)日新月異的發(fā)展,隨之而來(lái)的移動(dòng)智能終端信息安全問(wèn)題卻日益凸顯,給國(guó)家安全、社會(huì)穩(wěn)定和用戶隱私保護(hù)等帶來(lái)新的安全隱患。android是目前最流行的智能終端開發(fā)平以,依靠google的強(qiáng)大開發(fā)和媒體資源,android成為眾多移動(dòng)智能終端廠商競(jìng)相追逐的對(duì)象。隨意android平臺(tái)在智能終端操作系統(tǒng)市場(chǎng)份額的日益增加,android平臺(tái)下應(yīng)用軟件的安全性成為了智能終端安全研究的緊要任務(wù)。
由于受到移動(dòng)智能終端較低的硬件處理能力的限制,移動(dòng)智能終端上的應(yīng)用有著體積小、升級(jí)快、功能專一等特點(diǎn),移動(dòng)智能終端與傳統(tǒng)終端如pc機(jī)存在較大區(qū)別,pc機(jī)上的安全漏洞挖掘技術(shù)不能直接應(yīng)用于智能終端上。目前,android平臺(tái)下手機(jī)應(yīng)用程序的漏洞發(fā)掘還是個(gè)新的領(lǐng)域,開發(fā)者一般基于junit框架和androidsdk中android.test等命名空間下對(duì)android平臺(tái)下手機(jī)應(yīng)用程序的進(jìn)行測(cè)試,專門針對(duì)android平臺(tái)下手機(jī)應(yīng)用程序的安全漏洞發(fā)掘自動(dòng)化工具還很少。
技術(shù)實(shí)現(xiàn)要素:
本發(fā)明要解決的技術(shù)問(wèn)題在于,提供一種針對(duì)android平臺(tái)下應(yīng)用軟件的安全漏洞挖掘自動(dòng)化方法。
本發(fā)明的技術(shù)方案如下:一種android平臺(tái)下手機(jī)應(yīng)用程序的安全漏洞挖掘方法,包括漏洞規(guī)則庫(kù)生成單元、字節(jié)碼生成文件單元、控制流圖構(gòu)建單元、數(shù)據(jù)流圖構(gòu)建單元、漏洞檢測(cè)單元和漏洞報(bào)告生成單元,所述的方法包括以下步驟:
步驟一、利用漏洞規(guī)則庫(kù)生成單元提取多種android平臺(tái)下手機(jī)應(yīng)用程序源代碼的漏洞規(guī)則,形成漏洞規(guī)則庫(kù);
步驟二、利用字節(jié)碼生成文件單元針對(duì)android平臺(tái)下手機(jī)應(yīng)用程序的源代碼構(gòu)建ant腳本,對(duì)步驟(一)所述的源代碼進(jìn)行編譯,形成字節(jié)碼文件;
步驟三、利用控制流圖構(gòu)建單元責(zé)解析所述的字節(jié)碼文件,根據(jù)所述的字節(jié)碼文件中的指令信息構(gòu)建控制流圖,為不安全方法的定位提供基礎(chǔ);
步驟四、利用數(shù)據(jù)流圖構(gòu)建單元在控件流圖的基礎(chǔ)上,分析變量中數(shù)據(jù)的傳遞過(guò)程,構(gòu)建數(shù)據(jù)流圖,為逆向動(dòng)態(tài)追蹤數(shù)據(jù)提供基礎(chǔ);
步驟五、利用漏洞檢測(cè)單元根據(jù)漏洞規(guī)則庫(kù)中的規(guī)則,調(diào)用控制流引擎和數(shù)據(jù)流引擎,分析不安全方法的調(diào)用位置,逆向動(dòng)態(tài)追蹤變量中的數(shù)據(jù)傳遞過(guò)程,進(jìn)行漏洞檢測(cè);
步驟六、利用漏洞報(bào)告生成單元將挖掘的安全漏洞過(guò)程及相關(guān)數(shù)據(jù)信息生成報(bào)告。
方法所述的步驟(二)與步驟(三)之間還包括:判斷編譯是否成功,若編譯成功,則進(jìn)入步驟(三),并將編譯后的字節(jié)碼文件存放在與源代碼同級(jí)目錄下;若編譯不成功,則通過(guò)漏洞報(bào)告部件編譯不成功原因。
方法所述的步驟(五)與步驟(六)之間還包括:判斷逆向動(dòng)態(tài)追蹤變量中的數(shù)據(jù)是否進(jìn)行過(guò)安全驗(yàn)證操作,如果進(jìn)行過(guò)安全驗(yàn)證操作,放棄追蹤,如果未進(jìn)行過(guò)安全驗(yàn)證操作,則判斷該數(shù)據(jù)的方法調(diào)用處存在安全漏洞,隨即進(jìn)入步驟(六)。
所述的控制流引擎至少有一個(gè)。
所述的數(shù)據(jù)流引擎至少有一個(gè)。
所述的字節(jié)碼生成文件單元與控制流圖構(gòu)建單元之間包括編譯判斷單元。
所述的漏洞檢測(cè)單元與漏洞報(bào)告生成單元之間包括安全驗(yàn)證單元。
實(shí)施本發(fā)明的一種android平臺(tái)下手機(jī)應(yīng)用程序的安全漏洞挖掘方法和裝,具有以下有益的技術(shù)效果:
該技術(shù)從android平臺(tái)下手機(jī)應(yīng)用程序的源代碼入手,分析安全漏洞產(chǎn)生的機(jī)理,挖掘軟件中存在的安全漏洞。本發(fā)明方法關(guān)注android平臺(tái)下手機(jī)應(yīng)用程序源代碼中的不安全方法的使用和程序外部輸入的數(shù)據(jù),通過(guò)構(gòu)建android平臺(tái)下手機(jī)程序的源代碼中方法的控制流圖、數(shù)據(jù)流圖,逆向追蹤程序外部數(shù)據(jù)的輸入,挖掘android平臺(tái)下應(yīng)用軟件的安全漏洞。
從問(wèn)題的源頭開始關(guān)注android平臺(tái)下手機(jī)應(yīng)用程序的安全,及早發(fā)現(xiàn)軟件中存在的安全漏洞,有利于android平臺(tái)下應(yīng)用軟件的安全開發(fā)。
附圖說(shuō)明:
圖1是本發(fā)明流程圖;
圖2是本發(fā)明各部件結(jié)構(gòu)圖;
圖3是本發(fā)明模塊方框圖。
具體實(shí)施方式
下面結(jié)合附圖對(duì)本發(fā)明作進(jìn)一步詳述。
為詳細(xì)說(shuō)明本發(fā)明的技術(shù)內(nèi)容、構(gòu)造特征、所實(shí)現(xiàn)目的及效果,以下結(jié)合實(shí)施方式并配合附圖1-3作詳細(xì)說(shuō)明。
請(qǐng)參閱圖1,本發(fā)明實(shí)施例一種android平臺(tái)下手機(jī)應(yīng)用程序的安全漏洞挖掘方法,包括:
s1.提取多種android平臺(tái)下應(yīng)用軟件源代碼的漏洞方法,形成漏洞規(guī)則庫(kù);
漏洞規(guī)則庫(kù)部件:本發(fā)明針對(duì)androidsdk進(jìn)行深入研究,提取出大量可能產(chǎn)生的漏洞的方法,進(jìn)行整理最終形成漏洞規(guī)則庫(kù),為檢測(cè)器部件進(jìn)行漏洞分析提供基礎(chǔ)。
s2.針對(duì)android平臺(tái)下手機(jī)應(yīng)用程序的源代碼構(gòu)建ant腳本,以所述的源代碼進(jìn)行編譯,形成字節(jié)碼文件;
s21.判斷編譯是否成功,若是,進(jìn)入步驟s22,將編譯后的字節(jié)碼文件存放在與源代碼同級(jí)目錄下,為后續(xù)的分析、檢測(cè)提供便利:若否,進(jìn)入步驟s23,通過(guò)漏洞報(bào)告部件報(bào)告編譯不成功原因。
步驟s2及s21屬于安全漏洞挖掘的預(yù)處理部件完成的步驟。
s3.控制流分析引擎負(fù)責(zé)解析經(jīng)過(guò)所述的字節(jié)碼文件,根據(jù)所述的字節(jié)碼文件中的指令信息構(gòu)建控制流圖,為不安全方法的定位提供基礎(chǔ);
對(duì)android平臺(tái)下手機(jī)應(yīng)用程序的字節(jié)碼進(jìn)行安全漏洞模式掃描,并確定代碼中不安全方法調(diào)用的位置。
s4.數(shù)據(jù)流分析引擎是在所述的控制流圖的基礎(chǔ)上,分析變量中的傳遞過(guò)程,構(gòu)建數(shù)據(jù)流圖,為逆向動(dòng)態(tài)追蹤數(shù)據(jù)提供基礎(chǔ);
步驟s3及s4中控制流分析引擎及數(shù)據(jù)流分析引擎共同組成分析引擎部件。
對(duì)掃描后不安全方法中的變量進(jìn)行逆向數(shù)據(jù)流分析。
s5.根據(jù)所述漏洞規(guī)則庫(kù)中的規(guī)則,調(diào)用所述的控制流引擎和數(shù)據(jù)流引擎,分析不安全方法的調(diào)用位置,逆向追蹤變量中數(shù)據(jù)的傳遞過(guò)程,進(jìn)行漏洞檢測(cè);
步驟s5為檢測(cè)器部件完成的動(dòng)作。
s51.判斷逆向追蹤變量中的數(shù)據(jù)是否進(jìn)行過(guò)安全驗(yàn)證操作,如果是,進(jìn)入步驟s52:放棄追蹤,如果否,進(jìn)入步驟s53:該數(shù)據(jù)的方法調(diào)用處存在安全漏洞,進(jìn)入步驟s6。
s6.將挖掘的安全漏洞過(guò)程及相關(guān)數(shù)據(jù)信息生成報(bào)告。
所述的控制流分析引擎具有多個(gè)。所述的數(shù)據(jù)流分析引擎具有多個(gè)。
請(qǐng)參閱圖2,本發(fā)明實(shí)施例一種android平臺(tái)下手機(jī)應(yīng)用程序的安全漏洞挖掘各部件結(jié)構(gòu)圖。android平臺(tái)下手機(jī)程序源代碼經(jīng)過(guò)預(yù)處理器后進(jìn)入多個(gè)分析引擎多個(gè)檢測(cè)器進(jìn)行數(shù)據(jù)交換,以挖掘漏洞,并從android平臺(tái)下手機(jī)應(yīng)用程序漏洞規(guī)則調(diào)用規(guī)則,形成檢測(cè)結(jié)果加以顯示。
請(qǐng)參閱圖3、一種android平臺(tái)下手機(jī)應(yīng)用軟件的安全漏洞挖掘模塊,用于實(shí)現(xiàn)上述的方法,包括:漏洞規(guī)則庫(kù)生成單元10、字節(jié)碼生成單元20、編譯判斷單元25、控制流圖構(gòu)建單元30、數(shù)據(jù)填充圖構(gòu)建單元40、漏洞檢測(cè)單元50、安全驗(yàn)證單元55、漏洞報(bào)告生成單元60。
漏洞規(guī)則庫(kù)生成單元10:提取多種android平臺(tái)下手機(jī)應(yīng)用程序的漏洞規(guī)則,形成漏洞規(guī)則庫(kù);
字節(jié)碼生成文件單元20:針對(duì)android平臺(tái)下手機(jī)應(yīng)用程序的源代碼構(gòu)建ant腳本,對(duì)所述的源代碼進(jìn)行編譯,形成字節(jié)碼文件;
控制流圖構(gòu)建單元30:與字節(jié)碼生成文件單元20相連,用于控制流分析引擎負(fù)責(zé)解析經(jīng)過(guò)所述的字節(jié)碼文件,根據(jù)所述的字節(jié)碼文件中的指令信息構(gòu)建控制流圖,為不安全方法的定位提供基礎(chǔ);
數(shù)據(jù)流圖構(gòu)建單元40:數(shù)據(jù)流分析引擎是在所述的控制流圖的基礎(chǔ)上,分析變量中數(shù)據(jù)的傳遞過(guò)程,構(gòu)建數(shù)據(jù)流圖,為逆向動(dòng)態(tài)追蹤數(shù)據(jù)提供基礎(chǔ);
漏洞檢測(cè)單元50:與數(shù)據(jù)流圖構(gòu)建單元40相連,用于根據(jù)所述漏洞規(guī)則庫(kù)中的規(guī)則,調(diào)用所述的控制流引擎和數(shù)據(jù)流引擎,分析不安全方法的調(diào)用位置,逆向追蹤變量中數(shù)據(jù)的傳遞過(guò)程,進(jìn)行漏洞檢測(cè);
漏洞報(bào)告生成單元60:將挖掘的安全漏洞過(guò)程及相關(guān)數(shù)據(jù)信息生成報(bào)告。
還包括設(shè)置于字節(jié)碼生成文件單元與控制流圖構(gòu)建單元間的用于判斷編譯是否成功的編譯判斷單元25,還包括設(shè)置于漏洞檢測(cè)單元與漏洞報(bào)告生成單元間的安全驗(yàn)證單元55。
進(jìn)一步地,所述的數(shù)據(jù)流分析引擎及控制流分析引擎均具有多個(gè),且安置于多具分析引擎中。
由此,可以看出,本發(fā)明的目的是提供一種采用源代碼靜態(tài)分析技術(shù)挖掘android平臺(tái)下手機(jī)應(yīng)用程序的安全漏洞的技術(shù),該技術(shù)從android平臺(tái)下手機(jī)應(yīng)用程序的源代碼入手,分析安全漏洞產(chǎn)生的機(jī)理,挖掘軟件中存在的安全漏洞。本發(fā)明方法關(guān)注android平臺(tái)下手機(jī)應(yīng)用程序源代碼中的不安全方法的使用和程序外部輸入的數(shù)據(jù),通過(guò)構(gòu)建android平臺(tái)下手機(jī)程序的源代碼中方法的控制流圖、數(shù)據(jù)流圖,逆向追蹤程序外部數(shù)據(jù)的輸入,挖掘android平臺(tái)下應(yīng)用軟件的安全漏洞。
實(shí)施本發(fā)明的一種android平臺(tái)下應(yīng)用軟件的安全漏洞挖掘方法和裝置,具有以下有益的技術(shù)效果:
從問(wèn)題的源頭開始關(guān)注android平臺(tái)下手機(jī)應(yīng)用程序的安全,及早發(fā)現(xiàn)軟件中存在的安全漏洞,有利于android平臺(tái)下應(yīng)用軟件的安全開發(fā)。
上面結(jié)合附圖對(duì)本發(fā)明的實(shí)施例進(jìn)行了描述,但是本發(fā)明并不局限于上述的具體實(shí)施方式,上述的具體實(shí)施方式僅僅是示意性的,而不是限制性的,本領(lǐng)域的普通技術(shù)人員在本發(fā)明的啟示下,在不脫離本發(fā)明宗旨和權(quán)利要求所保護(hù)的范圍情況下,還可做出很多形式,這些均屬于本發(fā)明的保護(hù)范圍之內(nèi)。