宋士濤
(1.國(guó)家網(wǎng)絡(luò)軟件產(chǎn)品質(zhì)量監(jiān)督檢驗(yàn)中心(濟(jì)南),濟(jì)南 250014;2.山東政法學(xué)院,濟(jì)南 250014)
隨著移動(dòng)電商的迅速發(fā)展,移動(dòng)支付在人們的生活中越來(lái)越普及,逐漸從網(wǎng)絡(luò)購(gòu)物延伸到了生活的方方面面,包括線下購(gòu)物,乘坐出租車、公交車,租用共享單車等。巨大的移動(dòng)支付市場(chǎng),吸引了各大互聯(lián)網(wǎng)巨頭的目光。目前,中國(guó)主流的移動(dòng)支付APP主要有支付寶、微信支付、銀聯(lián)“云閃付”等,此外還有中國(guó)電信“翼支付”及各大銀行推出的移動(dòng)端支付APP。
移動(dòng)支付無(wú)疑方便了人們的生活,但它是一把雙刃劍,在給人們提供便利的同時(shí),也帶來(lái)了各種風(fēng)險(xiǎn),使網(wǎng)絡(luò)騙局有了新的形式。本文以移動(dòng)支付的安全性測(cè)試作為研究對(duì)象,提出了一套移動(dòng)支付安全性測(cè)試策略,并總結(jié)出移動(dòng)支付安全性測(cè)試需要關(guān)注的測(cè)試點(diǎn),通過(guò)測(cè)試防范移動(dòng)支付的安全風(fēng)險(xiǎn),提高移動(dòng)支付軟件的質(zhì)量。
目前,我國(guó)移動(dòng)支付的風(fēng)險(xiǎn)主要有運(yùn)營(yíng)主體的技術(shù)風(fēng)險(xiǎn)、非法活動(dòng)對(duì)用戶造成的風(fēng)險(xiǎn)、標(biāo)準(zhǔn)規(guī)范及監(jiān)管缺失風(fēng)險(xiǎn)等[1]?;诒疚牡难芯糠较颍瑑H從運(yùn)營(yíng)主體的技術(shù)風(fēng)險(xiǎn)及非法活動(dòng)對(duì)用戶造成的風(fēng)險(xiǎn)來(lái)研究移動(dòng)支付安全性測(cè)試。運(yùn)營(yíng)主體的技術(shù)風(fēng)險(xiǎn)主要有數(shù)據(jù)通信時(shí)信息被竊取、密碼被破解及用戶信息泄漏等;非法活動(dòng)對(duì)用戶造成的風(fēng)險(xiǎn)主要有黑客借助漏洞騙取用戶資金等。
移動(dòng)支付安全性測(cè)試策略是移動(dòng)支付安全的有力保障,主要包括代碼安全、數(shù)據(jù)安全、通信安全、用戶認(rèn)證安全、支付認(rèn)證安全五個(gè)方面。
移動(dòng)支付軟件有很多安全漏洞是由編碼過(guò)程中產(chǎn)生的缺陷引起的。目前,代碼審計(jì)是代碼安全性測(cè)試的主要方法[2]。代碼審計(jì)是對(duì)軟件源代碼進(jìn)行逐條檢查、分析,查找源代碼級(jí)別的安全缺陷,可以人工審查,也可以通過(guò)成熟的自動(dòng)化工具進(jìn)行審查。目前比較流行的代碼審計(jì)遵循的標(biāo)準(zhǔn)是開(kāi)放式Web應(yīng)用程序安全項(xiàng)目(OWASP,Open Web Application Security Project)標(biāo)準(zhǔn),依據(jù)該標(biāo)準(zhǔn),可以測(cè)試諸如SQL注入、跨站腳本攻擊等主流攻擊漏洞[3]。
數(shù)據(jù)作為核心資產(chǎn),具有非常大的價(jià)值,因此數(shù)據(jù)安全就變得十分重要。數(shù)據(jù)安全測(cè)試的目標(biāo)是測(cè)試移動(dòng)支付系統(tǒng)中,涉密數(shù)據(jù)是否得到有效保護(hù),是否能夠保證數(shù)據(jù)的完整性,是否能夠防止數(shù)據(jù)丟失。數(shù)據(jù)安全測(cè)試主要針對(duì)數(shù)據(jù)庫(kù)安全、本地?cái)?shù)據(jù)、數(shù)據(jù)處理過(guò)程等進(jìn)行測(cè)試[4]。
移動(dòng)支付APP的通信安全主要分為訪問(wèn)控制和通信保密性兩類。訪問(wèn)控制主要測(cè)試用戶是否只能訪問(wèn)權(quán)限允許內(nèi)的頁(yè)面或數(shù)據(jù),而不能訪問(wèn)未經(jīng)授權(quán)的頁(yè)面或數(shù)據(jù);通信保密性測(cè)試主要采用抓包工具wireshark、fiddler等截獲網(wǎng)絡(luò)傳輸?shù)臄?shù)據(jù)包,驗(yàn)證其是否進(jìn)行了加密。
用戶認(rèn)證是系統(tǒng)安全的第一道大門,在移動(dòng)支付領(lǐng)域,通常還需要在支付過(guò)程中對(duì)支付行為進(jìn)行支付認(rèn)證。目前針對(duì)用戶認(rèn)證和支付認(rèn)證,普遍采用的認(rèn)證方式有動(dòng)態(tài)密碼、USB key、數(shù)字證書(shū)、生物特征認(rèn)證等。通過(guò)測(cè)試移動(dòng)支付APP采用的認(rèn)證方式,評(píng)估該APP的安全級(jí)別。
根據(jù)移動(dòng)APP安全性測(cè)試的經(jīng)驗(yàn),結(jié)合移動(dòng)支付的特點(diǎn),本文總結(jié)了移動(dòng)支付APP的代碼安全性和數(shù)據(jù)安全性測(cè)試項(xiàng)目,用以指導(dǎo)測(cè)試過(guò)程。
目前代碼審計(jì)遵循的多是OWASP安全標(biāo)準(zhǔn),本文以O(shè)WASP發(fā)布的安全風(fēng)險(xiǎn)為出發(fā)點(diǎn),結(jié)合代碼安全測(cè)試能夠發(fā)現(xiàn)的風(fēng)險(xiǎn),闡述代碼安全性測(cè)試時(shí)需要重點(diǎn)關(guān)注的測(cè)試項(xiàng)目。
3.1.1 注入攻擊測(cè)試
注入攻擊經(jīng)常發(fā)生在沒(méi)有對(duì)輸入進(jìn)行安全性檢查的程序中。常見(jiàn)的注入包括SQL注入、LDAP(輕量目錄訪問(wèn)協(xié)議)注入、OS注入等。注入攻擊的危害主要有數(shù)據(jù)庫(kù)信息泄漏、服務(wù)器被遠(yuǎn)程操控等,會(huì)威脅到用戶的資金安全。
在代碼安全測(cè)試過(guò)程中,主要通過(guò)檢查以下項(xiàng)目來(lái)測(cè)試是否存在注入攻擊:(1)程序中使用的API是否安全;(2)是否使用解釋器,一般認(rèn)為使用了解釋器的程序是不安全的;(3)是否對(duì)用戶的輸入進(jìn)行了凈化處理,是否過(guò)濾掉了敏感、特殊字符;(4)是否對(duì)用戶輸入的長(zhǎng)度進(jìn)行了限制;(5)是否采用了動(dòng)態(tài)拼接方式構(gòu)造查詢語(yǔ)句。
3.1.2 失效的身份認(rèn)證和會(huì)話管理測(cè)試
在移動(dòng)支付APP中,身份認(rèn)證主要有登錄認(rèn)證和支付認(rèn)證兩種方式。會(huì)話管理可實(shí)現(xiàn)HTTP的身份認(rèn)證,用戶登錄時(shí)會(huì)獲得一個(gè)授權(quán)令牌并放在cookie中,之后只需讀取令牌信息進(jìn)行身份識(shí)別,不必進(jìn)行二次認(rèn)證。
失效的身份認(rèn)證和會(huì)話管理造成的危害主要有頁(yè)面和資源被未授權(quán)訪問(wèn),甚至攻擊者可執(zhí)行管理員用戶權(quán)限內(nèi)的操作,造成不可估計(jì)的損失。對(duì)于失效的身份認(rèn)證和會(huì)話管理方面的安全性問(wèn)題,主要測(cè)試項(xiàng)目有:(1)是否對(duì)用戶密碼的有效期進(jìn)行了限制,間隔一定時(shí)間是否提醒用戶修改密碼;(2)對(duì)密碼連續(xù)輸入錯(cuò)誤的用戶是否限制其登錄;(3)是否要求用戶設(shè)置數(shù)字、大小寫字母組合的強(qiáng)密碼;(4)密碼是否以明文進(jìn)行傳輸、存儲(chǔ);(5)是否限制會(huì)話壽命,超時(shí)自動(dòng)退出;(6)是否對(duì)cookie進(jìn)行加密操作;(7)URL中是否存在會(huì)話ID。
3.1.3 跨站腳本攻擊測(cè)試
攻擊者在程序客戶端的Web頁(yè)面中插入惡意腳本,當(dāng)頁(yè)面被下載時(shí),該腳本解釋執(zhí)行,實(shí)現(xiàn)跨站攻擊。對(duì)于移動(dòng)支付APP,跨站腳本攻擊的主要危害是盜取用戶賬號(hào)實(shí)現(xiàn)非法轉(zhuǎn)賬等。對(duì)于跨站腳本攻擊,主要測(cè)試項(xiàng)目有:(1)是否對(duì)用戶輸入進(jìn)行了檢查,對(duì)特殊字符進(jìn)行轉(zhuǎn)義操作,Web頁(yè)面中被插入的腳本應(yīng)被視為用戶輸入進(jìn)行檢查;(2)是否允許用戶輸入作為html被解析,如果允許,則存在跨站腳本攻擊風(fēng)險(xiǎn);(3)是否設(shè)置了標(biāo)簽事件的白名單或黑名單,攔截黑名單中的事件,允許白名單中的事件。
3.1.4 不安全的對(duì)象直接引用測(cè)試
不安全的對(duì)象直接引用,指一個(gè)被授權(quán)某對(duì)象的用戶通過(guò)更改訪問(wèn)時(shí)的參數(shù),訪問(wèn)原本沒(méi)有訪問(wèn)權(quán)限的對(duì)象。對(duì)于這種安全漏洞,主要測(cè)試項(xiàng)目有:(1)檢查URL中是否直接引用了內(nèi)部文件名或數(shù)據(jù)庫(kù)關(guān)鍵字;(2)服務(wù)器上的所有目錄和文件夾是否設(shè)置了訪問(wèn)權(quán)限,并且對(duì)訪問(wèn)進(jìn)行了權(quán)限驗(yàn)證;(3)是否對(duì)用戶輸入和URL請(qǐng)求進(jìn)行了驗(yàn)證,是否拒絕包含./../的請(qǐng)求。
3.1.5 偽造跨站請(qǐng)求(CSRF)測(cè)試
偽造跨站請(qǐng)求是指攻擊者在第三方站點(diǎn)制造HTTP請(qǐng)求并以用戶在目標(biāo)站點(diǎn)的登錄態(tài)發(fā)送到目標(biāo)站點(diǎn),而目標(biāo)站點(diǎn)未校驗(yàn)請(qǐng)求來(lái)源使第三方成功偽造請(qǐng)求。對(duì)于偽造跨站請(qǐng)求的安全測(cè)試,主要測(cè)試項(xiàng)目有:(1)測(cè)試發(fā)出轉(zhuǎn)賬請(qǐng)求時(shí)該請(qǐng)求是否來(lái)源于自己的網(wǎng)站;(2)測(cè)試發(fā)出轉(zhuǎn)賬請(qǐng)求時(shí),是否重新對(duì)用戶進(jìn)行認(rèn)證。
3.1.6 未驗(yàn)證的重定向和轉(zhuǎn)發(fā)測(cè)試
重定向和轉(zhuǎn)發(fā)是很普遍的。攻擊者可通過(guò)重定向竊取密碼或安裝惡意程序等,轉(zhuǎn)發(fā)則可繞過(guò)訪問(wèn)限制對(duì)資源進(jìn)行訪問(wèn)。其主要測(cè)試項(xiàng)目有:(1)代碼中是否有重定向和轉(zhuǎn)發(fā)的內(nèi)容;(2)重定向和轉(zhuǎn)發(fā)的內(nèi)容中,是否涉及用戶參數(shù);(3)用戶參數(shù)是否在可信任的列表或白名單中。
3.1.7 敏感信息暴露測(cè)試
敏感信息暴露測(cè)試主要的測(cè)試項(xiàng)目有:(1)代碼中是否存儲(chǔ)敏感數(shù)據(jù);(2)密碼是否以明文形式存儲(chǔ);(3)隱藏域中是否有敏感數(shù)據(jù);(4)使用的加密算法是否可靠;(5)日志是否輸出敏感數(shù)據(jù)。
數(shù)據(jù)安全性測(cè)試主要包含數(shù)據(jù)庫(kù)安全性、本地?cái)?shù)據(jù)安全性、數(shù)據(jù)處理過(guò)程安全性的測(cè)試。
3.2.1 數(shù)據(jù)庫(kù)安全性測(cè)試項(xiàng)目
對(duì)于數(shù)據(jù)庫(kù)安全性,主要測(cè)試項(xiàng)目有:(1)數(shù)據(jù)庫(kù)系統(tǒng)的安全設(shè)置及管理情況,包括密碼策略、賬號(hào)策略、數(shù)據(jù)庫(kù)日志管理等;(2)數(shù)據(jù)庫(kù)的訪問(wèn)控制管理是否科學(xué)有效;(3)是否對(duì)用戶對(duì)數(shù)據(jù)資源的訪問(wèn)進(jìn)行了有效管理;(4)數(shù)據(jù)庫(kù)安全審計(jì)是否科學(xué)有效;(5)機(jī)密數(shù)據(jù)是否與普通數(shù)據(jù)相隔離;(6)數(shù)據(jù)是否進(jìn)行了加密存儲(chǔ)。
3.2.2 本地?cái)?shù)據(jù)安全性測(cè)試項(xiàng)目
對(duì)于本地?cái)?shù)據(jù)安全性,主要測(cè)試項(xiàng)目有:(1)移動(dòng)支付APP所在目錄的文件權(quán)限設(shè)置情況,文件是否允許非root用戶進(jìn)行讀、寫;(2)敏感數(shù)據(jù)在移動(dòng)支付APP客戶端使用完畢后,是否進(jìn)行清除[4];(3)移動(dòng)支付APP客戶端日志是否輸出了敏感信息;(4)是否將敏感信息存儲(chǔ)在移動(dòng)支付APP的外部存儲(chǔ)設(shè)備。
3.2.3 數(shù)據(jù)處理過(guò)程安全性測(cè)試項(xiàng)目
對(duì)于數(shù)據(jù)處理過(guò)程安全性,主要測(cè)試項(xiàng)目有:(1)密碼輸入時(shí)是否可見(jiàn);(2)密碼等敏感信息是否保存在本地;(3)移動(dòng)支付APP用戶的密碼、賬戶明細(xì)等敏感信息,是否以明文形式傳輸;(4)輸入密碼等敏感信息時(shí),移動(dòng)支付APP是否具有反屏幕劫持、反屏幕錄像等功能;(5)支付過(guò)程如遇到網(wǎng)絡(luò)中斷,再次支付時(shí)是否進(jìn)行用戶驗(yàn)證。
3.2.4 通信安全性測(cè)試項(xiàng)目
對(duì)于通信安全性,主要測(cè)試項(xiàng)目有:(1)移動(dòng)支付APP客戶端與服務(wù)器進(jìn)行連接時(shí)是否有超時(shí)設(shè)置[5];(2)數(shù)據(jù)傳輸時(shí)是否使用了可靠的安全通信協(xié)議[3];(3)采用代理方式截取通信數(shù)據(jù)包,檢查移動(dòng)支付APP是否自動(dòng)退出;(4)通信過(guò)程是否加密;(5)移動(dòng)支付APP是否可以非法連接。
3.2.5 用戶認(rèn)證與支付認(rèn)證安全性測(cè)試項(xiàng)目
對(duì)于用戶認(rèn)證與支付認(rèn)證安全性,主要測(cè)試項(xiàng)目有:(1)移動(dòng)支付APP是否限制登錄、支付密碼輸入嘗試次數(shù);(2)移動(dòng)支付APP是否允許同一用戶在多臺(tái)設(shè)備上同時(shí)處于登錄狀態(tài);(3)移動(dòng)支付APP在登錄、支付時(shí)是否驗(yàn)證用戶的常用登錄地址;(4)在常用地以外支付時(shí),是否向移動(dòng)支付APP相關(guān)聯(lián)手機(jī)號(hào)發(fā)送提示信息;(5)移動(dòng)支付APP切換到后臺(tái)運(yùn)行,再重新切換到前臺(tái)時(shí),是否重新認(rèn)證;(6)支付時(shí)是否采用短信等動(dòng)態(tài)碼進(jìn)行驗(yàn)證。
本文從移動(dòng)支付安全性的角度,提出了移動(dòng)支付安全性的測(cè)試策略及測(cè)試項(xiàng)目,以指導(dǎo)測(cè)試人員有效提高移動(dòng)支付安全性測(cè)試效率,增強(qiáng)移動(dòng)支付軟件的安全性,并進(jìn)一步保障移動(dòng)支付的環(huán)境安全。
河北軟件職業(yè)技術(shù)學(xué)院學(xué)報(bào)2020年1期