安全代碼為何如此重要?
譯文開發驅動數字業務的軟件、應用和程序的開發者已成為許多企業的命脈。如果不具備有競爭力的應用和程序,或者沒有對其網站和其他基礎設施的24 小時訪問,大多數現代企業將無法(盈利)運作。
然而,這些相同的接觸點通常也是黑客和其他惡意用戶用來竊取信息、發動攻擊和引發其他犯罪活動(如欺詐和勒索軟件)的途徑。
盡管大多數企業在增加網絡安全方面的投入,而且像 DevSecOps 這樣的策略正在將安全性轉移到那些作為企業命脈的開發者身上,但成功的攻擊仍然很普遍。開發者了解安全的重要性,并且非常希望部署安全和高質量的代碼,但軟件漏洞仍在繼續被利用。
為什么軟件漏洞持續存在?
2021 年 12 月,全球安全編碼公司Secure Code Warrior聯合埃文斯數據公司(Evans Data Corp)合作開展了“2022 年開發者驅動的安全狀況調查”,對全球 1,200 名開發者進行了調查,以了解安全編碼實踐方面的技能、認知和行為,以及它們在軟件開發生命周期 (SDLC) 中的影響和感知相關性。
調查發現,對于什么是安全代碼缺乏明確的定義或理解。而事實證明,開發者認為的安全代碼與實際的安全代碼之間存在很大差異。
編寫高質量的代碼是開發社區的首要任務,這并不奇怪。但當被問及安全代碼時,只有 29% 的人表示優先考慮編寫沒有漏洞的代碼。相反,開發者將不太安全和不太可靠的做法與開發安全代碼聯系起來。例如,審查現有代碼 (37%) 和依賴外部源代碼庫獲取安全代碼 (37%) 是開發者與安全編碼相關聯的首要選擇。重用已經被認為是安全的代碼 (32%) 是另一個受歡迎的選擇。編寫無漏洞的代碼排在第 6 位,而只有 29% 的人表示這是創建安全代碼的最佳方式。
缺乏時間和缺乏統一的管理方法被認為是創建安全代碼的最大障礙。對現有代碼的依賴是增加軟件附帶可利用漏洞的風險因素之一。解決構成安全代碼的這種脫節問題對于開發者創建同樣安全的高質量代碼是必要的。
企業能做些什么來解決這個問題?
調查中最重要的信息之一是,開發者社區里都是在意自己所做工作的專業人士。作為一個團隊,編寫高質量的代碼對于他們來說非常重要。問題在于,許多情況下他們工作的企業沒有找到開發安全代碼所需的最佳方法,也沒有投入足夠的資源進行培訓或使他們的開發者能夠實現這些目標。
事實上,大多數開發者表示,他們的企業甚至沒有明確定義什么是安全代碼。而最令人擔憂的例子之一是,28% 的受訪者表示,一旦應用或程序部署到生產環境中或向公眾開放,如果沒有出現漏洞,他們的企業則認為代碼是安全的。
這可能不言而喻,但在當今復雜的威脅環境中,僅僅希望獲得好的結果而不實際努力,可能會發生意料之中的后果:出現更多的安全漏洞。
值得慶幸的是,在這種情況下,至少開始解決問題然后朝著安全代碼的目標努力是相對容易的。第一步也可以說是最重要的一步,是企業定義他們認為安全的代碼。超出該定義的所有內容都將被視為不安全。
安全編碼應該被定義為熟練的開發者從 SDLC 開始編寫沒有漏洞的代碼的實踐。只有定義了這種做法,開發者社區才能朝著這個目標努力。
實現安全代碼的目標
一旦確定了安全代碼的定義,企業就應準備好支持這些工作以及以實現安全代碼為目標的開發者。這種支持至關重要。如果沒有它,企業內部安全代碼的定義雖然很重要,但也不過是一只紙老虎。安全編碼實踐必須得到管理層的認可,并給予適當的考慮、授權和預算才能成功。
這可能需要為開發者制定新的基準測試目標,傳統上他們是根據編碼速度來衡量的。事實上,調查中有37% 的開發者表示,他們的代碼中會留下已知漏洞,因為緊迫的期限導致沒有時間修復它們或者從一開始就正確地編碼。
首先,這可能意味著需要增加最后期限讓開發者有更多的時間正確編碼,在編碼過程中的時間支出會在后期彌補回來,因為對程序修訂、補丁和部署后的需求會相對減少。而且,消除一個可能存在的漏洞可以節省數百小時甚至數百萬的收入損失、罰款以及處理成本。
開發者還需要相關的實踐培訓,尤其是與他們可能遇到的特定漏洞相關的培訓,并幫助他們學習如何識別和修復代碼漏洞。鑒于 36% 的受訪者表示他們希望從代碼中刪除漏洞,但沒有相應的技能或知識,這一點尤其正確。