發(fā)布于:2021-02-03 10:45:20
0
170
0
軟件開發(fā)生命周期是幫助開發(fā)人員以有組織的方式規(guī)劃和創(chuàng)建軟件的一組步驟。它有六個主要步驟:
每一步都有自己需要解決的安全問題。未能解決這些問題可能會導致應用程序充滿漏洞,一旦被利用,可能導致停機、收入損失以及客戶信息被盜。
這是一個極為常見的問題,在排名前100位的移動應用程序中,90%的應用程序至少被黑客攻擊過一次。防止這些問題的最佳機會是在應用程序開發(fā)期間,這正是我在本文中分享的技巧可以幫助您的地方。
本指南介紹了生命周期的每個步驟,并重點介紹了為確保應用程序安全而應完成的安全實踐/操作。這包括行業(yè)工具、技術(shù)和資源,您可以使用這些工具、技術(shù)和資源來確保您的應用程序在流程結(jié)束時是安全的。
概念與規(guī)劃
這個階段主要是定義應用程序概念和需求。換言之,重要的是要確保你有一個堅實的大綱,什么需要做,你有一個高層次的理解,你將如何實現(xiàn)這一點。
概述安全性和法規(guī)遵從性要求:概述應用程序的技術(shù)和法規(guī)要求。對于技術(shù)要求,這將包括確保對存儲中的數(shù)據(jù)和傳輸中的數(shù)據(jù)進行適當?shù)募用堋?/span>
術(shù)語“監(jiān)管要求”是指理解軟件將存儲和傳輸?shù)臄?shù)據(jù)類型,例如,財務信息、支付卡信息、醫(yī)療保健和個人識別信息。
每種類型的數(shù)據(jù)都有特定的處理、收集、存儲和傳輸規(guī)則。因此,您需要了解您正在收集的信息以及需要如何處理這些信息。
安全意識培訓:如果您正在開發(fā)團隊中工作,您應該有時間檢查安全要求。
如果你是一個經(jīng)理或團隊負責人,你有責任組織這件事。如果你只是一個開發(fā)人員,這是你應該向你的團隊領(lǐng)導提出的要求。這可以確保您和團隊中的每個人都了解應用程序的需求。
查看第三方軟件組件:第三方組件通常用于提高軟件開發(fā)速度和添加有用的功能。但是,它們可能會在您的軟件中引入漏洞,在應用程序中使用這些組件之前需要對這些漏洞進行評估。
您可以通過對正在使用的庫進行一些研究來開始此評估,這將允許您查看報告了哪些問題。對于更正式的驗證,有些公司(如veracode)提供了在線指南和軟件解決方案,用于評估第三方軟件的安全問題。
建筑與設計
架構(gòu)和設計階段是設計一個應用程序,該應用程序要滿足規(guī)劃階段詳細列出的所有需求。
威脅建模:這是了解應用程序可能的攻擊場景,并提出阻止它們成功的控制措施。一個常見的例子是SQL注入,它將SQL查詢提交到輸入表單中,從數(shù)據(jù)庫中提取數(shù)據(jù)。
確保安全設計:您要檢查應用程序的設計是否遵循軟件開發(fā)中常見的最佳實踐,例如為敏感信息添加保護并確保法規(guī)遵從性。在這里您可以找到10個軟件開發(fā)最佳實踐的列表。
實施
實現(xiàn)是創(chuàng)建應用程序、調(diào)試和創(chuàng)建要測試的應用程序的第一個版本的過程。這個階段的目標是創(chuàng)建一個穩(wěn)定的應用程序。
使用安全編碼指導原則:這些指導原則將警告您程序員犯的常見錯誤,使您能夠避免這些錯誤,并節(jié)省大量時間。一些常見的錯誤包括存儲未加密的密碼。在這里,您可以找到CERT提供的十大安全編碼實踐的綜合列表。
靜態(tài)掃描:靜態(tài)應用程序掃描工具(SAST)可以掃描新編寫的代碼中的漏洞,而無需運行應用程序。您可以在編寫代碼時使用它們來檢查bug,并在第一個版本之前糾正它們。下面是六個SAST工具,您可以考慮將其用于您的軟件。
手動代碼檢查:在完成應用程序的第一個版本后,應該由熟悉軟件開發(fā)中的安全漏洞的高級開發(fā)人員進行手動代碼檢查。自動化工具的速度要快得多,但它們?nèi)匀豢赡芎雎砸恍┲匾獑栴},因此執(zhí)行手動檢查仍然非常有益。
測試和錯誤修復
此階段的目的是發(fā)現(xiàn)并修復工作應用程序中的錯誤。這個階段包括運行應用程序并使用不同類型的輸入來查看應用程序如何響應。
模糊化和動態(tài)掃描:動態(tài)應用程序掃描工具(DAST)通過在運行時模擬攻擊來測試漏洞。模糊化包括使用自動化工具根據(jù)特定模式生成隨機輸入,以檢查應用程序是否能夠正確處理這些輸入。在這里您可以找到一些流行的DAST工具的列表。
滲透測試:滲透測試包括雇傭?qū)I(yè)的安全研究人員嘗試入侵您的應用程序,以便找到任何使其進入您的應用程序的漏洞。你可以雇傭個別的公司/團隊,也可以使用bug賞金計劃來眾包這一步。
測試環(huán)境停用:一旦不再需要測試環(huán)境,就應該將其脫機或刪除(如果是虛擬機)。通常,這是由DevOps或IT團隊監(jiān)督的。
對于測試環(huán)境來說,訪問internet以允許開發(fā)人員連接并完成他們的工作是很常見的。然而,有時即使在項目完成后,系統(tǒng)仍然保持在線。
由于該環(huán)境沒有被任何人使用,因此它將保持未修補狀態(tài)。面對互聯(lián)網(wǎng),它將成為黑客們的一大攻擊目標,這是可以理解的。
發(fā)布和維護
這是應用程序向其目標用戶啟動的階段。即使應用程序是實時的,這并不意味著工作已經(jīng)完成。應用程序需要在其生命周期中進行維護和改進,并且需要修復可能的錯誤。
正在進行的安全檢查和修補程序:公司的安全團隊或獨立供應商應定期進行安全檢查。之后,每當發(fā)現(xiàn)安全問題時,就需要創(chuàng)建并發(fā)布修復程序。
這些檢查不需要無限期地進行,但應該在應用程序發(fā)布后至少持續(xù)幾年。此外,當您計劃停止支持應用程序時,應該提前向用戶發(fā)出聲明。
生命的終結(jié)
生命周期結(jié)束指的是不再受其開發(fā)人員支持的軟件。這意味著將沒有更多的補丁,更新,或錯誤修復提供。包含敏感數(shù)據(jù)的應用程序還需要刪除這些數(shù)據(jù),以防止由于舊的和不安全的應用程序而導致數(shù)據(jù)泄露。任何沒有針對安全相關(guān)缺陷進行更新的應用程序都不應被視為安全的。
數(shù)據(jù)保留:政府和監(jiān)管機構(gòu)定義了不同類型數(shù)據(jù)的保留要求。確認保留要求并確保在刪除應用程序之前適當?shù)卮鎯?shù)據(jù),這一點很重要。
數(shù)據(jù)處理:在應用程序生命周期結(jié)束時,應安全刪除所有敏感信息,包括所有個人信息、加密密鑰或API訪問密鑰。此處的目的是確保對所有信息保密,防止數(shù)據(jù)泄露。以下是正確處理數(shù)據(jù)的一些技巧。
為最佳產(chǎn)品解決每個階段的安全問題
軟件開發(fā)生命周期是一個廣泛流行的模板,每個步驟都有自己的要求,需要完成這些要求才能確保應用程序的安全。
應用商店中超過90%的頂級應用程序至少被黑客攻擊過一次,這表明目前開發(fā)應用程序的過程并不十分安全。在本指南中,我為您提供了與開發(fā)周期的每個步驟相關(guān)的活動的安全提示。遵循這些提示,您可以確保應用程序不太可能出現(xiàn)安全問題。
首先在規(guī)劃階段,目標是根據(jù)技術(shù)和法規(guī)要求正確規(guī)劃應用程序。接下來,您需要基于安全的最佳實踐來設計應用程序。您還需要實施適當?shù)氖謩雍妥詣訙y試,并讓主題專家對您的應用程序進行審查。如果您缺乏內(nèi)部專業(yè)知識或資金來雇傭安全專業(yè)人員進行測試,您可以使用具有成本效益的bug賞金計劃方法。
一旦應用程序發(fā)布,就需要定期檢查并修補新的bug。當它的生命周期結(jié)束時,您需要保留的信息必須得到保護,所有剩余的信息都需要進行處理以防止數(shù)據(jù)泄漏。