華東計(jì)算技術(shù)研究所 李鳳雯 周蘭英 張一凡
軟件測(cè)試是一種系統(tǒng)性的方法,目的是驗(yàn)證和評(píng)估軟件系統(tǒng)或應(yīng)用程序的正確性、健壯性、可靠性、安全性、完整性、可伸縮性以及符合性等各個(gè)方面,軟件安全性是指軟件系統(tǒng)對(duì)惡意攻擊、漏洞利用和其他不良行為的抵御能力。它包括多個(gè)方面,涉及機(jī)密性、完整性、可用性等方面的保護(hù)。
現(xiàn)代軟件安全攻擊場(chǎng)景的形式多樣,常見(jiàn)的有Web應(yīng)用程序攻擊、惡意軟件攻擊、社交工程攻擊、跨站點(diǎn)腳本攻擊(XSS)、無(wú)線攻擊、物理攻擊和數(shù)據(jù)流攻擊等。(1)Web 應(yīng)用程序攻擊:攻擊者利用Web 應(yīng)用程序中的安全漏洞,例如SQL 注入、XSS、CSRF 等,獲取用戶的敏感信息、篡改數(shù)據(jù)、竊取資產(chǎn)等。(2)惡意軟件攻擊:攻擊者通過(guò)惡意軟件(例如病毒、蠕蟲(chóng)、木馬等),感染電腦、控制操作系統(tǒng)、竊取用戶信息、攻擊其他網(wǎng)絡(luò)、勒索財(cái)產(chǎn)等。(3)社交工程攻擊:攻擊者通過(guò)偽裝成信任的實(shí)體,例如通過(guò)電子郵件、短信或社交媒體平臺(tái),引誘受害者透露敏感信息或進(jìn)行其他惡意操作。(4)跨站點(diǎn)腳本攻擊(XSS):攻擊者利用Web 服務(wù)器中包含可執(zhí)行腳本代碼的文本域,注入腳本,以獲取受害者瀏覽器中的Cookie、Session 中的信息,甚至獲取關(guān)鍵信息。(5)無(wú)線攻擊:攻擊者利用無(wú)線網(wǎng)絡(luò)漏洞攻擊網(wǎng)絡(luò),例如中間人攻擊、熱點(diǎn)假冒等,獲取目標(biāo)網(wǎng)絡(luò)的敏感信息、控制網(wǎng)絡(luò)、竊取聯(lián)系人等。(6)物理攻擊:攻擊者通過(guò)攻擊服務(wù)器、盜竊或攻擊設(shè)備,例如破解加密密碼、模擬設(shè)備身份、篡改硬件等,竊取或篡改數(shù)據(jù)、控制硬件等。(7)數(shù)據(jù)流攻擊:攻擊者通過(guò)攔截或修改數(shù)據(jù)流量來(lái)執(zhí)行攻擊,例如DNS 劫持、IP 欺騙等,以破壞客戶端的訪問(wèn)、損壞數(shù)據(jù)、篩選通信。
軟件測(cè)試不僅可以提高軟件的質(zhì)量和可靠性,還能減小軟件錯(cuò)誤給公司帶來(lái)的經(jīng)濟(jì)和社會(huì)影響,同時(shí)還能節(jié)省軟件開(kāi)發(fā)成本和時(shí)間。其重要性體現(xiàn)如下:(1)提高軟件的質(zhì)量和可靠性:軟件測(cè)試可以幫助開(kāi)發(fā)人員發(fā)現(xiàn)和修復(fù)軟件系統(tǒng)中存在的錯(cuò)誤和缺陷,以提高軟件的質(zhì)量和可靠性。(2)確保軟件符合規(guī)格說(shuō)明書(shū):軟件測(cè)試可以確保軟件系統(tǒng)符合對(duì)軟件系統(tǒng)的功能和性能的規(guī)格說(shuō)明書(shū),以滿足用戶的需求。(3)降低軟件錯(cuò)誤造成的損失:通過(guò)發(fā)現(xiàn)和修復(fù)錯(cuò)誤和缺陷,軟件測(cè)試可以減小軟件錯(cuò)誤所造成的經(jīng)濟(jì)和社會(huì)損失。(4)提高用戶體驗(yàn):軟件測(cè)試可以幫助確保軟件系統(tǒng)的易用性和用戶體驗(yàn),以滿足用戶的需求。(5)防止安全漏洞:軟件測(cè)試可以發(fā)現(xiàn)潛在的漏洞和安全問(wèn)題,從而有效地防止系統(tǒng)被惡意攻擊和非法入侵。(6)節(jié)省軟件開(kāi)發(fā)成本和時(shí)間:發(fā)現(xiàn)和修復(fù)軟件錯(cuò)誤和缺陷的成本比在軟件系統(tǒng)被交付到用戶手中之后花費(fèi)成本要低得多,軟件測(cè)試可以幫助節(jié)省軟件開(kāi)發(fā)成本和時(shí)間。
軟件安全性是確保軟件被合法使用和保護(hù)用戶數(shù)據(jù)的必要保障,同時(shí)也是確保企業(yè)屬性及基本安全的重要組成部分。其重要性體現(xiàn)如下:(1)保護(hù)用戶數(shù)據(jù)的隱私:隨著人們對(duì)網(wǎng)絡(luò)和移動(dòng)設(shè)備的依賴程度不斷增加,個(gè)人數(shù)據(jù)的安全得到了越來(lái)越多的關(guān)注,軟件安全性直接關(guān)系到用戶數(shù)據(jù)的保護(hù)。(2)安全性是合規(guī)的必要條件:合規(guī)責(zé)任映射到軟件的需要附加安全性,許多國(guó)際標(biāo)準(zhǔn)和法律法規(guī)也對(duì)軟件安全性提出了嚴(yán)格的要求,如PCI DSS、HIPAA 等。(3)保護(hù)組織的商譽(yù)和品牌形象:軟件安全問(wèn)題可能會(huì)嚴(yán)重影響組織的商譽(yù)和品牌形象,從而影響范圍更廣泛的客戶和股東。(4)防止業(yè)務(wù)損失和停機(jī)時(shí)間:軟件安全事件可能給公司帶來(lái)巨大的經(jīng)濟(jì)損失和停機(jī)時(shí)間,這些損失的發(fā)生可能導(dǎo)致業(yè)務(wù)連鎖反應(yīng)。
軟件測(cè)試的現(xiàn)狀可以用以下幾點(diǎn)來(lái)概括:(1)測(cè)試可能成為軟件開(kāi)發(fā)周期的瓶頸:傳統(tǒng)的測(cè)試方法可能導(dǎo)致測(cè)試的周期較長(zhǎng),從而導(dǎo)致軟件發(fā)布時(shí)間的延遲。(2)自動(dòng)化測(cè)試逐漸成為主流:隨著自動(dòng)化測(cè)試技術(shù)的進(jìn)步,越來(lái)越多的企業(yè)采用自動(dòng)化測(cè)試來(lái)降低測(cè)試周期和成本。(3)DevOps 和敏捷測(cè)試成為主流:與傳統(tǒng)瀑布式軟件開(kāi)發(fā)模型不同,DevOps 和敏捷開(kāi)發(fā)方法推崇測(cè)試團(tuán)隊(duì)和開(kāi)發(fā)團(tuán)隊(duì)密切協(xié)作,實(shí)現(xiàn)快速迭代和快速上線。(4)云測(cè)試逐漸普及:云測(cè)試為企業(yè)提供了更便捷、更快速和更具彈性的測(cè)試環(huán)境。
綜上所述,雖然傳統(tǒng)測(cè)試方法依然存在一些問(wèn)題,但隨著自動(dòng)化測(cè)試和云測(cè)試技術(shù)的發(fā)展和應(yīng)用,以及DevOps 和敏捷測(cè)試方法的應(yīng)用,軟件測(cè)試正在不斷發(fā)展和改進(jìn),使得軟件測(cè)試變得更加高效和靈活。
軟件安全性的現(xiàn)狀可以用以下幾點(diǎn)來(lái)概括:(1)安全事件頻發(fā):近年來(lái),關(guān)于軟件安全事件的報(bào)道頻繁,從簡(jiǎn)單的數(shù)據(jù)泄漏到嚴(yán)重的勒索軟件攻擊,不同類型的軟件安全事件時(shí)有發(fā)生,并對(duì)組織、公共服務(wù)和個(gè)人數(shù)據(jù)產(chǎn)生了嚴(yán)重影響。(2)程序員需要更多關(guān)注安全性:許多安全性問(wèn)題是由于程序編碼不當(dāng)而引起的,因此,程序員需要更關(guān)注安全性并在編碼中采取適當(dāng)?shù)陌踩胧┎拍艽_保軟件的安全性。(3)安全性成為業(yè)務(wù)關(guān)注點(diǎn):軟件安全事件可能導(dǎo)致巨大的經(jīng)濟(jì)損失和商業(yè)品牌價(jià)值損失,越來(lái)越多的企業(yè)將軟件安全性作為業(yè)務(wù)關(guān)注點(diǎn)。(4)法規(guī)和合規(guī)要求導(dǎo)致更加嚴(yán)格的安全要求:越來(lái)越多的國(guó)際標(biāo)準(zhǔn)、法規(guī)和合規(guī)要求引導(dǎo)企業(yè)采取更加嚴(yán)格的安全要求,如GDPR、HIPAA 等。(5)安全自動(dòng)化工具的使用:隨著自動(dòng)化測(cè)試和DevOps 的發(fā)展,安全自動(dòng)化工具的使用越來(lái)越廣泛,使得安全性測(cè)試更快、更準(zhǔn)確和更全面。
綜上所述,軟件安全性現(xiàn)狀的變化與軟件應(yīng)用案例數(shù)量和用戶需求關(guān)系密切,安全自動(dòng)化工具和法規(guī)要求的逐漸嚴(yán)格等因素也有影響,未來(lái),對(duì)軟件安全性的重視程度將會(huì)不斷提高。
常見(jiàn)的軟件測(cè)試方法分為手工測(cè)試和自動(dòng)化測(cè)試,具體如下。
手工測(cè)試:(1)黑盒測(cè)試:只需要關(guān)注軟件系統(tǒng)的功能和需求規(guī)格說(shuō)明書(shū),忽略系統(tǒng)的內(nèi)部細(xì)節(jié)和實(shí)現(xiàn)細(xì)節(jié),來(lái)測(cè)試系統(tǒng)正常工作和異常情況下系統(tǒng)的反應(yīng)。(2)白盒測(cè)試:關(guān)注代碼實(shí)現(xiàn),通過(guò)測(cè)試具體的代碼,來(lái)確認(rèn)系統(tǒng)實(shí)現(xiàn)的是否正確,能否產(chǎn)生正確的結(jié)果。通常需要程序編寫(xiě)經(jīng)驗(yàn)和編程技能。
自動(dòng)化測(cè)試:(1)單元測(cè)試:對(duì)軟件中每一個(gè)模塊進(jìn)行測(cè)試,并確認(rèn)模塊是否能夠獨(dú)立正確運(yùn)行,通常是針對(duì)單個(gè)函數(shù)或模塊的測(cè)試。(2)集成測(cè)試:針對(duì)不同模塊之間的交互和合作測(cè)試,以保證模塊之間的協(xié)同工作,測(cè)試過(guò)程中需要對(duì)整個(gè)軟件系統(tǒng)進(jìn)行綜合測(cè)試驗(yàn)證。(3)端到端測(cè)試:對(duì)整個(gè)軟件系統(tǒng)中涉及到的所有模塊進(jìn)行測(cè)試,從界面測(cè)試到底層算法驗(yàn)證等盡心全面測(cè)試,在確保整個(gè)系統(tǒng)正常工作的條件下進(jìn)行全面的測(cè)試[1]。
不同的測(cè)試方法在測(cè)試目的、測(cè)試階段、測(cè)試內(nèi)容、測(cè)試技術(shù)和測(cè)試效果等方面存在差異。
(1)黑盒測(cè)試和白盒測(cè)試。黑盒測(cè)試和白盒測(cè)試的主要區(qū)別在于測(cè)試重點(diǎn)的不同。黑盒測(cè)試主要關(guān)注測(cè)試對(duì)象的輸入輸出特性和功能性需求,不需要了解內(nèi)部實(shí)現(xiàn)細(xì)節(jié);而白盒測(cè)試更加關(guān)注軟件內(nèi)部的實(shí)現(xiàn)細(xì)節(jié)和系統(tǒng)代碼,可以精準(zhǔn)地檢測(cè)代碼中的缺陷和錯(cuò)誤。
(2)單元測(cè)試、集成測(cè)試和端到端測(cè)試。單元測(cè)試、集成測(cè)試和端到端測(cè)試主要區(qū)別在測(cè)試的粒度和深度上。單元測(cè)試是最小的測(cè)試單位,目的是測(cè)試每個(gè)代碼模塊是否符合規(guī)格說(shuō)明和設(shè)計(jì)要求;集成測(cè)試是整個(gè)系統(tǒng)幾個(gè)或多個(gè)模塊共同合作運(yùn)行的測(cè)試,目的是測(cè)試不同模塊之間的協(xié)作運(yùn)行是否能夠正確工作;而端到端測(cè)試包括整個(gè)系統(tǒng)的所有功能和操作的測(cè)試,以驗(yàn)證系統(tǒng)的完整性和一致性。
(1)代碼審計(jì)。代碼審計(jì)是一種針對(duì)源代碼的靜態(tài)安全分析技術(shù),通過(guò)定位軟件源代碼中的邏輯漏洞、安全漏洞和隱患等問(wèn)題,幫助測(cè)試人員更細(xì)致地分析軟件的安全性能和風(fēng)險(xiǎn)。代碼審計(jì)需要軟件測(cè)試人員具備一定的編程技能和代碼分析經(jīng)驗(yàn),在測(cè)試過(guò)程中需結(jié)合安全知識(shí),通過(guò)深入研究軟件的實(shí)現(xiàn)細(xì)節(jié)和錯(cuò)誤場(chǎng)景,發(fā)現(xiàn)軟件中存在的潛在漏洞和可能的攻擊面。(2)動(dòng)態(tài)安全掃描。動(dòng)態(tài)安全掃描是一種針對(duì)應(yīng)用程序的動(dòng)態(tài)分析技術(shù),主要用于測(cè)試Web 應(yīng)用程序的安全性,可以通過(guò)攻擊模擬等方式,發(fā)現(xiàn)應(yīng)用程序中存在的漏洞和安全問(wèn)題。它可以模擬各種攻擊場(chǎng)景,并通過(guò)發(fā)送常見(jiàn)安全漏洞的有效負(fù)載,利用安全漏洞獲得重要的訪問(wèn)權(quán)限,然后使用黑盒和白盒測(cè)試技術(shù)進(jìn)行漏洞發(fā)現(xiàn)和驗(yàn)證。(3)惡意軟件檢測(cè)。惡意軟件檢測(cè)是一種動(dòng)態(tài)測(cè)試技術(shù),主要是檢測(cè)軟件系統(tǒng)中的惡意軟件和病毒的存在。它可以通過(guò)對(duì)惡意軟件和病毒的特征進(jìn)行檢測(cè),提供保障用戶計(jì)算機(jī)系統(tǒng)安全性的能力,并對(duì)當(dāng)前和未來(lái)威脅情況進(jìn)行快速響應(yīng)和處理。(4)壓力測(cè)試。壓力測(cè)試是一種基于大量并發(fā)操作來(lái)模擬系統(tǒng)負(fù)載的安全測(cè)試技術(shù)。它可以評(píng)估系統(tǒng)的負(fù)載容量和穩(wěn)定性,并提前發(fā)現(xiàn)軟件系統(tǒng)在高負(fù)荷量下可能出現(xiàn)的安全漏洞或崩潰等問(wèn)題,以確保系統(tǒng)能夠在實(shí)際工作條件下保持穩(wěn)定性??偟膩?lái)說(shuō),軟件安全測(cè)試是軟件測(cè)試中的一個(gè)重要內(nèi)容,包含靜態(tài)分析和動(dòng)態(tài)測(cè)試兩類技術(shù)。測(cè)試人員需根據(jù)不同檢測(cè)需求和測(cè)試目標(biāo),選用不同的測(cè)試技術(shù)和工具,以達(dá)到最高的安全性能和風(fēng)險(xiǎn)控制水平。
軟件測(cè)試和軟件安全性之間是相互作用的,兩者緊密相連。以下是它們之間的一些相互作用:(1)測(cè)試可以發(fā)現(xiàn)軟件中的漏洞和安全問(wèn)題[2]:包括軟件性能、數(shù)據(jù)保護(hù)、身份驗(yàn)證和安全通信等方面。測(cè)試人員可以在測(cè)試期間發(fā)現(xiàn)和報(bào)告軟件中的漏洞,并且對(duì)缺陷進(jìn)行定位和修復(fù)。(2)安全性測(cè)試能夠確認(rèn)軟件的可信性:避免軟件被攻擊者進(jìn)行攻擊和入侵。(3)測(cè)試可以幫助提高軟件的可靠性和可維護(hù)性:測(cè)試可以發(fā)現(xiàn)和引導(dǎo)缺陷密集型的開(kāi)發(fā)人員重視軟件性能、安全、數(shù)據(jù)保護(hù)、穩(wěn)定性等方面,進(jìn)而提高軟件的可靠性和可維護(hù)性。(4)安全性測(cè)試是測(cè)試的一個(gè)重要組成部分,在測(cè)試階段安全性問(wèn)題的發(fā)現(xiàn)和解決,有助于提高軟件的安全性。(5)安全性測(cè)試可以防止未知攻擊行為:安全性測(cè)試對(duì)靜態(tài)和動(dòng)態(tài)漏洞工具有助于防止未知攻擊行為,防止軟件被高強(qiáng)度攻擊對(duì)應(yīng)策略,確保軟件不會(huì)被危害,從而保護(hù)用戶數(shù)據(jù)和信息的安全。
綜上所述,軟件測(cè)試和軟件安全性相互作用、相互支持。測(cè)試可以提高軟件的可靠性、可維護(hù)性,從而保證軟件的安全性;安全性測(cè)試可以發(fā)現(xiàn)軟件漏洞和安全威脅,從而改進(jìn)產(chǎn)品安全性。
在軟件測(cè)試和軟件安全性之間建立一個(gè)整體性分析框架,可以有效地整合測(cè)試工作和安全性保障,從而發(fā)現(xiàn)和解決軟件安全問(wèn)題。
(1)確認(rèn)需求:需要先確保軟件的需求已經(jīng)充分明確和明確定義,包括數(shù)據(jù)流圖、系統(tǒng)需求和用戶需求等[3]。所有的需求應(yīng)該是可測(cè)試的,并且需要在測(cè)試計(jì)劃中得到反映。
(2)確定測(cè)試計(jì)劃:確定測(cè)試計(jì)劃和測(cè)試策略,包括測(cè)試類型、測(cè)試工具、測(cè)試環(huán)境和測(cè)試方法等,在此基礎(chǔ)上對(duì)軟件進(jìn)行完備的測(cè)試。(3)分析和評(píng)估風(fēng)險(xiǎn):評(píng)估潛在的安全風(fēng)險(xiǎn)和漏洞,并確定哪些測(cè)試是必需的。這些測(cè)試應(yīng)該包括動(dòng)態(tài)和靜態(tài)的安全性測(cè)試,以及包括黑盒和白盒的測(cè)試方法。(4)進(jìn)行測(cè)試:執(zhí)行測(cè)試計(jì)劃,包括單元測(cè)試、集成測(cè)試和端到端測(cè)試,并跟蹤記錄測(cè)試過(guò)程中發(fā)現(xiàn)的缺陷和漏洞,確保測(cè)試覆蓋率達(dá)到預(yù)期。(5)分析和定位問(wèn)題[4]:分析和定位在測(cè)試過(guò)程中發(fā)現(xiàn)的問(wèn)題和漏洞,通過(guò)漏洞分析、數(shù)據(jù)流跟蹤和代碼審計(jì)等技術(shù)來(lái)發(fā)現(xiàn)和修復(fù)安全問(wèn)題。(6)修復(fù)和驗(yàn)證:修復(fù)所有缺陷和漏洞,并對(duì)修補(bǔ)程序進(jìn)行驗(yàn)證,以確認(rèn)修補(bǔ)是否完全解決了潛在的安全問(wèn)題。(7)重復(fù)測(cè)試:重新測(cè)試整個(gè)軟件,并確保缺陷和漏洞已經(jīng)被修復(fù),并且不會(huì)引入其他新的問(wèn)題。(8)預(yù)防措施:制定和實(shí)施預(yù)防措施,包括代碼審計(jì)、安全編碼、人員管理、加密、安全補(bǔ)丁和安全監(jiān)控等措施,以確保軟件的安全性在最高水平。
這種整體性分析框架能夠幫助測(cè)試人員了解和識(shí)別軟件中的潛在安全風(fēng)險(xiǎn),并為修復(fù)安全漏洞提供有效的方法和過(guò)程。同時(shí),它還可以幫助提高團(tuán)隊(duì)安全意識(shí)、提高測(cè)試人員和安全人員協(xié)作能力。
整體性研究在軟件測(cè)試和軟件安全性中的作用和意義不可忽視。首先,整體性研究可以幫助更好地掌握軟件測(cè)試和安全性的發(fā)展趨勢(shì)和方向;其次,整體性研究可以促進(jìn)軟件測(cè)試和安全性技術(shù)的創(chuàng)新和應(yīng)用;最后,整體性研究可以提供多方面的解決方案和思路。
總之,整體性研究在軟件測(cè)試和軟件安全性中具有重要的意義和作用。軟件測(cè)試和軟件安全性的發(fā)展在未來(lái)將更加重視整體性研究的重要性,進(jìn)一步推進(jìn)軟件質(zhì)量和安全性的發(fā)展。