作者  Lucent Sky技術長 Jim Liu

敏捷開發的精髓,是即時地回饋與快速地前進。對於資訊安全來說,這產生了一個重要的課題:應用程式開發各個階段的關係人,如何在越來越快的時程中,開發更安全的產品?

為了維持產品的安全與開發時程,在敏捷開發中的各個階段,都應該包含適合的資訊安全產品或解決方案,好讓各開發階段的關係人,在各自負責的工作,都能維持產品的資訊安全。若能有效執行,這樣的導入不僅不會造成延遲,反而可以在不影響品質的情況下,讓應用程式更快速的通過開發流程的各個階段。

開發過程也需要資安專業介入,除了仰賴人力之外,應適時搭配自動化工具降低作業成本

由於企業和組職越來越重視將資訊安全帶入軟體開發流程中,資安專家更顯匱乏。有限的資安專家不僅收費高昂,且大多數的時間也都必須花在設計安全流程,以及協助企業採購資安產品,供非資安專業的開發者和其他關係人使用。

但「資安專家荒」的解決之道,並不是培育更多的資安專家,而是提供應用程式的每一位關係人更好的工具,讓他們可以將資訊安全和資安概念嵌入他們的工作中。而這個解決方案中重要的一部份,則是識別哪些流程可以或應該被自動化,好讓安全開發能夠有規模的拓展。

在CI/CD和DevOps等開發方式中,使用自動化流程與自動化工具,可以讓應用程式在各階段中快速移動的情況下,確保程式碼的效能、品質和安全。自動化不只能透過降低對開發者的依賴,來提升應用程式開發與部署的速度,即使未來提升為更大規模的開發團隊,也能夠維持產品的可靠度。

強化軟體開發資安,需因應不同的開發階段,以及多個部門的需求

在敏捷開發流程中導入資訊安全重要的一點,是認知到資訊安全不再僅僅是單一部門的工作:它已經分散到不同的開發階段,以及不同的部門。

同時,開發和部署安全應用程式的責任,也不再屬於開發流程中的特定點,而是由從開發者到測試者的所有人一起負責。這也代表了在每個開發階段,都會有安全性的檢查點。

資安產業必須開始為了「非專家使用者」調整它們的產品,好讓每個開發者、品質測試者,以及應用程式工程師,都有適合的工具,可以在他們的職務中提升資訊安全。

在敏捷開發的環境中,一種可行的做法,是在多個開發階段導入相同的資安工具。這並非浪費時間做重複的工作,因為,由不同的團隊在不同的階段使用相同的工具,反而能幫助所有人說同樣的「語言」,並且能更快地找出並解決共同的問題。而這麼做,會需要多個部門的認可,有時會讓採購(或是銷售)適合的工具變得困難,且僅有極少數的企業擁有測試和採購適合多個團隊使用的軟體與工具的經驗。

然而,一個完善的資訊安全流程,往往也包括了在不同階段使用多種工具。舉例來說,在開發階段,我們可以使用自動弱點修正(Application Vulnerability Mitigation,AVM),來降低新開發程式碼中的弱點數量;在測試階段,使用靜態應用程式安全測試(Static Application Security Testing,SAST)和動態應用程式安全測試(Dynamic Application Security Testing,DAST),來確保應用程式達到一定的資安標準;以及在部署階段,使用應用程式防火牆(Web Application Firewall,WAF)和執行期應用程式自我保護(Runtime Application Self-Protection,RASP)來阻擋攻擊。

需更全面地關注資安,僅針對部署軟體部署階段,以及報告的分析,是不夠的

這種作法下,有一個常見的錯誤,那就是將資訊安全的注意力,專注於開發流程的其中一端。

例如,特別著重在部署階段,然而,一旦應用程式被部署之後,要修正其中的核心問題或弱點是非常昂貴的,有些弱點甚至在程式被部署後,就無法被修正了。因此,一個有效的資訊安全計畫,不能只將最好的測試和保護方法在部署後使用,而是應該在程式開發階段就開始使用。

另一個常見的錯誤,是僅將注意力集中在分析上。許多工具專注於分析程式碼中的弱點,或是評估應用程式可能被攻擊的介面,但是,有再多的報告,都無法真正解決弱點。而且,這些資安工具將會被要求能夠解決它們所找出的問題,換言之,工具不僅要能發現安全問題,還要能夠提供這些弱點的解決方法。

同時,應用程式安全測試的現狀,僅限於分析結果和「建議的修正方式」,這樣的流程具有相當大的問題,因為仍然需要大量的開發者人力,以及手動地將這些弱點修正。由於靜態分析工具找到的安全弱點,多半是低複雜度但高重複性,而且,解決方式對於開發者來說通常也較為直覺,這就是一個適合自動化的好例子。

以應用程式弱點修正工具而言,能夠提供問題的資訊(程式碼中的弱點數量,以及它們的類型與位置),也能提供解決方式——產生安全修正語法,讓開發者選擇並插入程式碼中。如此,即可透過降低程式碼中的弱點數目來提升軟體品質,並在應用程式開發進行到下一階段前,就消除弱點。

不過,大多數的企業仍將資訊安全的重心,放在已經部署的應用程式,因為這通常是被駭客入侵的位置。然而,這樣的做法,很可能會讓品質不好的程式仍被上線。而執行期的解決方案,例如WAF和RASP,也無法解決程式碼中的錯誤和弱點,這些錯誤或弱點通常是駭客得以入侵的根源。

能否找出並修正程式碼中的弱點,是像Lucent Sky AVM這類開發階段工具的重心,可以同時找出常見的弱點,並自動產生安全的程式碼來修正它們。藉由縮減弱點辨識和修正之間的落差,而且,應用程式弱點修正工具讓資訊安全不再僅是分析,更能使開發流程中的開發者們真正落實資訊安全。

資訊安全是累積的,並且重度依賴在開發流程中導入最佳的工具。在敏捷開發環境中建構安全軟體的最佳方法,就是在開發、測試及部署階段,都確保產品資訊安全。

 

 採購資安工具的建議 

●列出組織或企業中所有可能的使用者。

●建立一個包含各部門所需用途的測試流程,並針對每個用途訂定測試目標。

●與廠商合作建立能夠快速驗證的測試條件,包含項目及標準。和部署後才導入資安相比,在開發流程中越早開始行動效益越大,因此,時間點對於導入資訊安全,將是非常重要的。

 

 啟動安全開發流程導入的快速指南 

1.  了解你的狀態

企業和組織應該了解現有的開發流程和工具,分析現況並找出欠缺資訊安全的部分。

2.  讓所有關係人表達他們的需求

部門通常對於如何和何時使用工具有自己的偏好。與其讓各部門調整來適應安全開發,不如讓他們積極參與資安工具和政策的選擇、導入和制訂。

3.  同時導入具功能性的產品與具廣度的產品

大多數的廠商喜歡推銷能夠含括多種資安需求的「解決方案」。然而,這樣的做法也可能導入次等的產品。有越來越多的管道能夠採購針對不同需求、卻易於彼此整合的產品。接觸開發流程中的關係人來了解這些需求,以採購真正適合的產品。

 

 AVM和SAST的差別 

SAST靜態應用程式安全測試產品(例如 HP Fortify SCA)的功能,是產生檢測報告,說明應用程式的安全等級,以及其中弱點的數目、類別與位置。要真正強化應用程式的安全性,開發者和稽核者還是必須要自行研究要在程式碼中的特定位置、用某一種方式修正弱點,以及測試弱點修正的效果與對效能的影響等等。

AVM產品(例如 Lucent Sky AVM)的功能,則是由軟體自動產生安全的程式碼(Instant Fix),來直接修正應用程式中的弱點。開發者只要套用這些修正,就可以將強化過的應用程式送測與部署。

因為功能上的差異,SAST多半是由資安團隊使用,在應用程式上線前作安全的把關;AVM 則適合由開發團隊使用,在開發階段就減少程式碼中的弱點,加速應用程式通過資安測試的速度。與單獨使用SAST相比,同時使用AVM和SAST,不僅在短期可以大幅降低現行應用程式中的弱點數,長期更可透過自動化提升軟體開發流程的效率。

作者簡介


Advertisement

更多 iThome相關內容