Help net security發佈了一篇安全編碼訓練平台真的有效嗎?
在軟體開發中,安全編碼的實踐非常重要。培養開發團隊的安全文化已經成為確保數位系統的完整性和保護的關鍵。正面安全文化的重要性,反覆出現的漏洞的原因,將安全編碼訓練納入開發流程而不影響效率的策略,遊戲化學習體驗的有效性,定期更新安全開發訓練的必要性,以及鼓勵開發者改善安全編碼技巧的創新方法。
開發團隊對於安全如何被認知和執行的文化基礎決定了一切,也可能反映了他們在達成良好安全結果方面的成功程度。傳統上,開發者與應用程式安全(AppSec)團隊之間有著負面的經驗。如果我們從開發者的角度來看,他們只有在出現問題時才會聽到來自安全團隊的聲音:要麼是他們的代碼從安全角度來看是錯誤的,要麼是他們被迫修復其他開發者的錯誤。這兩種情況都會干擾他們的工作流程,而且在自己的工作方面,這就像是說他們的寶寶很醜。他們已經不辭辛勞地發送了美觀、功能完善的代碼,以實現功能交付目標;安全是別人的角色,而且在組織KPI方面,安全通常不是衡量代碼質量的指標。兩個團隊之間可能存在強烈的怨恨,但是培養一種正面的安全文化,在這種文化中,開發者了解他們可以在減少代碼層面漏洞方面發揮作用,並且創造一種讓他們能夠以舒適的方式學習安全編碼的環境,是修復這種關係至關重要的。
AppSec方面也應該明白,他們只有在安全問題真正得到解決時才能增加業務價值,而不僅僅是識別和報告問題。他們需要比一般性陳述更深入地提供特定語言的編碼模式,以防止或減輕問題。當兩個團隊都與共同的安全目標保持一致時,並且理想情況下,理解安全應該與代碼質量同義時,就有可能顯著降低風險。
幾十年來相同的反覆出現的漏洞(比如跨站腳本和SQL注入),因為開發者一直在使用相同的糟糕的編碼模式。這是因為我們忽略了一個非常重要的點:開發者是問題解決者。如果你看看開發者的日常工作,你可以看到找到解決問題的方法是他們的主要工作。他們收到應用程式的規格,他們知道在哪裡以及如何尋找滿足每個規格的方法,並且他們提供一個完整的解決方案。開發者不需要別人告訴他們“如何”做某事,而是“要做什麼”。我們需要用他們能夠理解的語言更好地定義問題。這是我們做得不好的部分。安全從業者使用的語言——奇怪的術語和不規則的安全漏洞命名——並不適合向開發者傳達安全問題的本質。兩個團隊根本沒有用同一種語言交流。
舉一個例子。軟體漏洞要麼是一個錯誤,要麼是一個設計缺陷。在開發者的世界裡,錯誤通常與實現問題(代碼中的問題)有關,而設計缺陷則與軟體架構問題有關。但是漏洞——一個通常由安全行業使用的術語——並沒有立即告訴開發者“問題是什麼”。如果我們只是解釋一下漏洞是在實現還是設計中出現的問題,開發者會很感激。另一個表達不佳的例子是“攻擊者負載”——這是安全專家在談論惡意輸入時使用的一種表達方式。我們應該說它是“一種罕見的輸入,會導致運行時異常”。(運行時異常是軟體中沒有得到優雅處理並且保持未確定的狀態。很多安全漏洞都是運行時異常。)
詳情請看: