- 相關(guān)推薦
關(guān)于移動(dòng)設(shè)備應(yīng)用的灰盒測試
所謂移動(dòng)設(shè)備應(yīng)用的灰盒測試是指,將傳統(tǒng)的源代碼檢查(白盒測試)與前期測試(黑盒測試)結(jié)合起來的一種技術(shù)。測試人員必須檢查應(yīng)用程序的代碼庫,審查關(guān)鍵功能代碼,審查常見的錯(cuò)誤編碼或非法編碼方法。此外,測試人員還可以執(zhí)行黑盒測試來審查應(yīng)用,并根據(jù)所確認(rèn)的漏洞定位找到代碼庫中的目標(biāo)代碼。
為什么要執(zhí)行移動(dòng)應(yīng)用的灰盒測試與評(píng)估呢?答案很簡單:找到高風(fēng)險(xiǎn)代碼;確認(rèn)漏洞的根本原因。
灰盒測試應(yīng)當(dāng)遵循如下三大步驟:
一 威脅建模
威脅建模可以使測試團(tuán)隊(duì)首先確認(rèn)有可能對(duì)移動(dòng)應(yīng)用產(chǎn)生最大影響的威脅。測試人員在這個(gè)階段的主要目的是區(qū)分特定應(yīng)用組件或代碼的優(yōu)先順序。測試團(tuán)隊(duì)通過理解應(yīng)用程序架構(gòu)的文檔資料,應(yīng)當(dāng)逐漸熟知移動(dòng)應(yīng)用的基本架構(gòu)和使用情況。
收集信息
通過與移動(dòng)應(yīng)用的開發(fā)團(tuán)隊(duì)協(xié)作,測試團(tuán)隊(duì)?wèi)?yīng)當(dāng)獲得有助于幫助其理解移動(dòng)應(yīng)用的設(shè)計(jì)和功能的文檔資料。這些文檔資料中所描述的細(xì)節(jié),可以為威脅建模過程中的所有步驟提供基礎(chǔ)。
執(zhí)行偵察和應(yīng)用映射
理解移動(dòng)應(yīng)用如何實(shí)現(xiàn)其功能對(duì)于創(chuàng)建移動(dòng)應(yīng)用模型至關(guān)重要。在此階段,測試團(tuán)隊(duì)?wèi)?yīng)當(dāng)人工檢查移動(dòng)應(yīng)用的實(shí)例。然后,團(tuán)隊(duì)?wèi)?yīng)當(dāng)檢查移動(dòng)應(yīng)用的匿名部分和認(rèn)證部分,同時(shí)關(guān)注處理敏感數(shù)據(jù)和功能的部分。在此階段,要提供架構(gòu)、配置、過程、用戶、技術(shù)等各方面的證明文件,以利于下一階段的使用。
需要重點(diǎn)關(guān)注并用于下一階段針對(duì)性測試的方面有:管理界面、敏感信息的傳輸、外部或第三方應(yīng)用的接口、移動(dòng)協(xié)議(如SMS、MMS、WAP等)的使用。
測試團(tuán)隊(duì)?wèi)?yīng)當(dāng)記錄在此期間的每一種請(qǐng)求和響應(yīng),以便于使用本地代理工具和網(wǎng)絡(luò)嗅探工具進(jìn)行日后分析。
定義系統(tǒng)和可信邊界
在檢查的下一階段,評(píng)估團(tuán)隊(duì)?wèi)?yīng)當(dāng)構(gòu)建一個(gè)移動(dòng)應(yīng)用及數(shù)據(jù)流程圖中的系列過程的可視化模型。數(shù)據(jù)流程圖要確認(rèn)系統(tǒng)邊界和圍繞移動(dòng)應(yīng)用的每一個(gè)組件的可信邊界。確認(rèn)系統(tǒng)邊界可以使測試團(tuán)隊(duì)初步明確數(shù)據(jù)流入或流出系統(tǒng)或其組件(即數(shù)據(jù)入口和出口點(diǎn))的所有位置。隨后,在代碼檢查階段,測試團(tuán)隊(duì)?wèi)?yīng)當(dāng)檢驗(yàn)在每一個(gè)系統(tǒng)邊界是否執(zhí)行了適當(dāng)?shù)尿?yàn)證和編碼技術(shù)。與此類似,確定可信邊界可以查明測試團(tuán)隊(duì)能夠檢驗(yàn)代碼中的認(rèn)證和授權(quán)部分。
將威脅映射到功能
在定義了所有的流程圖要素后,測試團(tuán)隊(duì)?wèi)?yīng)當(dāng)將所有要素映射到資產(chǎn)威脅,其目的在于定義移動(dòng)應(yīng)用中的“熱點(diǎn)”,進(jìn)而可以構(gòu)建一個(gè)測試計(jì)劃。在針對(duì)性的代碼檢查階段,測試團(tuán)隊(duì)?wèi)?yīng)當(dāng)全面測試計(jì)劃中的每一個(gè)項(xiàng)目。
二 漏洞確認(rèn)
在應(yīng)用程序的評(píng)估過程中,應(yīng)當(dāng)重點(diǎn)檢查前一階段所確認(rèn)的熱點(diǎn)源碼。除了要檢查源代碼檢查不易發(fā)現(xiàn)的應(yīng)用程序漏洞,企業(yè)還應(yīng)當(dāng)執(zhí)行黑盒類的評(píng)估,用以確認(rèn)網(wǎng)絡(luò)或主機(jī)層的漏洞。為了補(bǔ)充應(yīng)用程序組件的人工檢查,這個(gè)測試階段應(yīng)當(dāng)采用自動(dòng)化的掃描。
代碼分析和掃描
自動(dòng)化掃描工具可以分析全部源代碼,從而初步發(fā)現(xiàn)安全問題。在此階段,測試者應(yīng)當(dāng)利用商業(yè)類工具和私有工具來掃描有安全問題征兆的代碼和可導(dǎo)致漏洞的常見編程錯(cuò)誤。源代碼分析階段應(yīng)當(dāng)設(shè)法確認(rèn)可影響到主機(jī)、服務(wù)器和網(wǎng)絡(luò)的漏洞。
人工分析
在此階段,我們建議詳細(xì)檢查應(yīng)用程序的代碼,其目的是為了發(fā)現(xiàn)應(yīng)用程序架構(gòu)所獨(dú)有的安全漏洞。在檢查代碼時(shí),建議將以下幾種技術(shù)結(jié)合使用:
1、許可分析:許多平臺(tái)要求移動(dòng)應(yīng)用聲明在執(zhí)行期間試圖訪問哪些功能。然后,設(shè)備將對(duì)應(yīng)用程序限制使用這些特定的功能。測試人員可以針對(duì)這些功能發(fā)動(dòng)攻擊,并嘗試?yán)@過這些限制,以檢驗(yàn)其效果。
2、控制流分析:該技術(shù)用于分析代碼中的邏輯條件。這種方法可以使測試人員確認(rèn)常見的邏輯漏洞,例如,程序無法處理例外、不適當(dāng)?shù)氖跈?quán)限制等。
3、數(shù)據(jù)流分析:該技術(shù)跟蹤從輸入點(diǎn)到輸出點(diǎn)的數(shù)據(jù),尤其適用于確認(rèn)常見的輸入驗(yàn)證錯(cuò)誤,如SQL注入和跨站腳本利用。
為應(yīng)用這些技術(shù),我們建議企業(yè)將移動(dòng)應(yīng)用分割成不同的功能組件。測試者應(yīng)當(dāng)檢查每一個(gè)組件,以查找常見的不安全的編程方法,這些方法包括:
1、認(rèn)證:弱口令要求、用戶名窮舉、賬戶停用、cookie重放攻擊、后門等。
2、授權(quán):特權(quán)提升、不適當(dāng)?shù)臋?quán)力分配、機(jī)密數(shù)據(jù)的暴露、數(shù)據(jù)受損等。
3、會(huì)話管理:會(huì)話陷阱、會(huì)話超時(shí)、會(huì)話劫持、不適當(dāng)?shù)臅?huì)話終止、會(huì)話重放、中間人攻擊等。
4、配置管理:對(duì)管理界面的非授權(quán)訪問、對(duì)配置文件的非授權(quán)訪問、配置數(shù)據(jù)的檢索、分配給過程和服務(wù)賬戶的過多特權(quán)。
5、輸入驗(yàn)證:參數(shù)損害、緩沖區(qū)域溢出、跨站腳本攻擊、SQL注入、XPATH劫持、命令劫持等。
6、數(shù)據(jù)保護(hù):對(duì)移動(dòng)應(yīng)用或用戶的私密進(jìn)行硬編碼、網(wǎng)絡(luò)通信嗅探、錯(cuò)誤的密鑰生成或密鑰管理,弱加密等。
7、例外處理:信息泄露、拒絕服務(wù)等。
8、審計(jì)和日志:日志偽造、操縱日志文件、日志文件破壞等。
9、緩存:在移動(dòng)應(yīng)用的生命周期內(nèi),擊鍵、快照、剪貼板內(nèi)容和文件有可能被緩存到設(shè)備的不同存儲(chǔ)位置。
10、發(fā)布通知:將數(shù)據(jù)從服務(wù)器傳輸?shù)綉?yīng)用。
11、基于位置的服務(wù):試圖泄露或欺騙位置數(shù)據(jù)。
此外,還有以明文形式將口令存放到數(shù)據(jù)庫中等。
檢查代碼中的架構(gòu)安全問題
如果應(yīng)用程序使用了特定的安全機(jī)制,或者具備可以減輕某些“臭名昭著”的安全威脅的功能,這一步就相當(dāng)重要了。最后的代碼檢查用于驗(yàn)證應(yīng)用程序架構(gòu)的特定安全功能:
加密:由于定制的加密方案一般都沒有強(qiáng)健的加密機(jī)制,所以企業(yè)應(yīng)當(dāng)檢查方案,以驗(yàn)證其是否可以對(duì)敏感數(shù)據(jù)提供充分的保護(hù)。
協(xié)議:測試人員應(yīng)當(dāng)檢查應(yīng)用通信的私有協(xié)議,用以決定其應(yīng)對(duì)破壞和偵聽的能力。
會(huì)話管理:測試者應(yīng)檢查如下兩方面,一是創(chuàng)建特定會(huì)話標(biāo)識(shí)符的企圖,二是會(huì)話管理進(jìn)程。這樣做的目的是為了衡量其會(huì)話發(fā)生管理錯(cuò)誤時(shí)的保護(hù)能力。
訪問限制:測試者要檢查特定HTTP頭的使用或者其它的特定協(xié)議要素,用以控制訪問,防止未授權(quán)的訪問。
安全代碼:有些代碼是為解決以前所發(fā)現(xiàn)的安全問題而編寫的,對(duì)此測試者要專門檢查,以檢驗(yàn)其功效。
服務(wù)器架構(gòu):測試者要檢查用來支持移動(dòng)應(yīng)用的外部Web服務(wù)和服務(wù)器。
三 漏洞利用
在這個(gè)階段,測試者必須制定測試計(jì)劃,其目的是為了對(duì)源代碼進(jìn)行深入分析,查找是否存在常見的不安全編碼方法。然后,重點(diǎn)檢查移動(dòng)應(yīng)用的特定安全機(jī)制。測試者還要查找、檢查代碼中的架構(gòu)安全問題。
驗(yàn)證所確認(rèn)的問題
測試團(tuán)隊(duì)要分析來自漏洞掃描的結(jié)果,去掉那些似是而非的信息,并著手構(gòu)建可利用漏洞的案例。
利用移動(dòng)應(yīng)用的獨(dú)有功能
灰盒測試方法的主要好處是能夠最大限度地利用漏洞。在此階段中,測試者要嘗試?yán)迷谝苿?dòng)應(yīng)用的實(shí)例中表現(xiàn)不明顯的認(rèn)證漏洞和授權(quán)漏洞。這些漏洞可能會(huì)導(dǎo)致對(duì)功能或數(shù)據(jù)的非法訪問,并給企業(yè)帶來巨大風(fēng)險(xiǎn)。測試者還要利用業(yè)務(wù)邏輯(用于控制用戶如何在移動(dòng)應(yīng)用中執(zhí)行操作)中的缺陷。這些缺陷一般被用于欺詐移動(dòng)應(yīng)用的用戶或公司。
將漏洞利用與源代碼聯(lián)系起來
在測試者證明了可利用的漏洞后,就要將可利用的漏洞與相關(guān)的特定代碼部分聯(lián)系起來。這可以使開發(fā)人員快速地理解問題,并可以評(píng)估進(jìn)行漏洞修復(fù)需要花費(fèi)的工作量。
分析風(fēng)險(xiǎn)
測試者要評(píng)估可利用的漏洞,并根據(jù)每個(gè)漏洞給公司帶來的風(fēng)險(xiǎn),對(duì)漏洞進(jìn)行評(píng)級(jí)。對(duì)于漏洞,測試者還要評(píng)估在漏洞被利用后,它可能對(duì)公司造成的影響。如果測試者能夠利用多個(gè)漏洞并帶來更大的影響,那么這種分析就具有多重意義。
提供具體的技術(shù)建議
在評(píng)估了每個(gè)可利用漏洞的風(fēng)險(xiǎn)后,測試者要給出移動(dòng)應(yīng)用架構(gòu)和代碼編寫的具體建議,如果可能最好包括源代碼。然后,開發(fā)者就可以利用這些建議來減輕或修復(fù)漏洞,從而減少應(yīng)用風(fēng)險(xiǎn)。測試者的建議還可以提供安全的編碼指南,用以解決或修復(fù)移動(dòng)應(yīng)用的漏洞。
在這里提出幾條移動(dòng)安全的建議,供開發(fā)者和測試者參考:把移動(dòng)安全理念納入到開發(fā)項(xiàng)目中;構(gòu)建并實(shí)施一種可以監(jiān)管移動(dòng)應(yīng)用的開發(fā)并確?衫斫庑缘牟呗;培訓(xùn)移動(dòng)應(yīng)用的開發(fā)人員,幫助其實(shí)施安全的編碼;測試是否可以限制傳輸?shù)揭苿?dòng)設(shè)備的敏感數(shù)據(jù);評(píng)估針對(duì)Web應(yīng)用和基礎(chǔ)架構(gòu)的威脅。
【移動(dòng)設(shè)備應(yīng)用的灰盒測試】相關(guān)文章:
移動(dòng)的課堂,移動(dòng)的身體作文10-14
灰貓的睡前故事12-28
小灰兔作文03-08
文具盒03-22
灰太狼迷路作文08-20
灰雀的優(yōu)秀教學(xué)設(shè)計(jì)02-21
灰太狼的苦衷的作文10-21
天空,有點(diǎn)灰寫景作文10-23
自由放飛的灰雀作文10-28