4 個常見的軟體安全開發問題及其解決方法

安全頻道發表於2021-11-29

隨著軟體已成為現代業務的支柱,網路攻擊已成為一種永遠存在的威脅,這使得應用程式安全成為確保業務連續性的必要條件。本文研究了四個常見的軟體安全開發問題以及如何解決這些問題。

管理和維護安全軟體的過程可能會給尋求儘快交付功能的開發人員帶來意想不到的障礙。研究表明,59% 的公司現在每天多次、每天一次或每隔幾天部署一次程式碼。然而,隨著軟體成為現代企業的支柱,網路攻擊已成為一種永遠存在的威脅,這使得應用程式安全成為確保業務連續性的必要條件。

左移運動——在開發過程的早期進行安全測試和修復缺陷——增加了開發人員在應用程式安全方面發揮作用的需求,但經過安全培訓的開發人員仍然存在很大的技能差距。有興趣提高安全知識的開發人員可以從瞭解一些常見的 DevSec 問題開始。

挑戰一:漏洞修復時間緩慢

對於開發人員和安全團隊來說,最常見的挑戰之一是安全債務——程式碼中存在很長時間的安全漏洞,如舊的信用卡餘額,現在解決起來比引入時要昂貴得多。為避免增加安全債務,開發人員可以實施自動化掃描和測試。

自動化程度越高越好:在一次年度軟體安全狀況 (SoSS) 報告中,我們發現將動態分析 (DAST) 與靜態分析 (SAST) 結合使用的組織修復 50% 的安全漏洞平均快 24.5 天。

更快地查詢和修復新缺陷的另一種方法是更頻繁地掃描。更頻繁的掃描使組織能夠以 22.5 天的速度到達中間點,並且通過 API 執行 SAST 掃描將修復 50% 的缺陷的時間縮短了 17.5 天。

研究還表明,穩定的掃描節奏可以幫助您的團隊看到缺陷型別比例的有意義的變化,並隨著時間的推移減少安全債務。將安全測試視為馬拉松,而不是短跑:在賽事前一週只跑 50 英里並不能為馬拉松做好準備。

挑戰二:常見程式碼安全漏洞的引入

瞭解哪些缺陷對您的應用程式構成最大風險以及它們是如何引入的,對於防止這些常見缺陷導致的破壞性網路攻擊至關重要。我們的 SoSS 報告發現,資訊洩露 (65.9%)、CRLF 注入 (65.4%)、密碼問題 (63.7%) 和程式碼質量 (60.4%) 是應用程式中最常見的缺陷。為了解決這些常見的缺陷,開發人員應該考慮以下幾點:

對於資訊洩露,在編寫程式碼時依靠安全編碼最佳實踐並實施安全測試程式。

為防止 CRLF 注入,不要相信使用者輸入,使用正確的驗證和編碼清理使用者提供的資料,並確保在 HTTP 標頭中正確編碼輸出。

可以通過良好的安全編碼實踐來防止加密漏洞。此外,大多數主要語言本質上都支援良好的加密實踐,並且對不正確實現的擔憂通常只會在個案的基礎上出現。

通過使用一致的編碼模式、在您的 SDLC 中自動進行安全測試並通過有效的培訓保持最新狀態,來防止程式碼質量不佳問題。

值得注意的是,這四個缺陷年復一年地一直排在報告的前 10 名,表明開發人員在意識和培訓方面存在差距。事實上,對開發人員的安全培訓可能是最大的挑戰。大學不僅沒有定期教授安全編碼,而且在職培訓也同樣難以獲得,因為大多數應用程式安全都由安全團隊負責。為了使開發人員能夠預防、查詢和修復程式碼中的缺陷,組織需要提供可操作的、真實的培訓,開發人員可以立即應用這些培訓來加強他們所學的知識,並使其成為日常工作的一部分。

挑戰三:依賴開源庫,但只掃描內部編寫的應用程式程式碼

開原始碼幾乎無處不在。當您考慮到許多開源庫不是由開發人員直接選擇時——應用程式中 46.6% 的不安全開源庫是可傳遞的,由另一個正在使用的庫引入應用程式——很容易理解開原始碼如何擴充套件攻擊面在應用程式中。事實上,我們的研究發現,71% 的應用程式在初始掃描時在開源庫中存在缺陷。

整合軟體組合分析 (SCA) 等掃描工具可以幫助更準確地檢測開源漏洞。由於 74% 的開源缺陷可以通過補丁、修訂或主要/次要版本更新來修復,因此該過程可以有效緩解。

使用正確的工具來掌握程式碼是降低風險和確保您可以自信地使用開源庫的關鍵。

挑戰四:程式碼中高危和非常高嚴重性缺陷的過剩

無論您喜歡哪種軟體語言,瞭解對它們影響最大的缺陷都將幫助您在錯誤成為更大問題之前防止錯誤。我們的資料顯示,某些語言比其他語言具有更多的高風險缺陷,這意味著應該仔細設計和測試用特定語言編寫的程式碼。一些例子包括:

C++ 應用程式:近 60% 的應用程式存在高度和非常高的嚴重性缺陷;常見缺陷包括錯誤處理、緩衝區管理錯誤、數字錯誤和目錄遍歷缺陷。

PHP 應用程式: 52.6% 的 PHP 應用程式存在高度和非常高的嚴重性缺陷;最常見的缺陷包括跨站點指令碼 (XSS)、加密問題、目錄遍歷錯誤和資訊洩漏漏洞。

Java 應用: Java 以 CRLF 注入缺陷、程式碼質量問題、資訊洩漏和密碼問題領先;Java 應用程式 97% 是第三方程式碼,並帶有更大的看不見的風險。

通過檢查各種常見語言的缺陷頻率趨勢,開發人員可以更好地瞭解他們在編碼時面臨的日常風險,並可以使用這些知識在這些缺陷成為問題之前提前解決。

實施安全編碼實踐並利用實踐培訓來增加專業知識將有助於確保應用程式的安全效能夠跟上現代開發需求。當開發人員不僅能夠發現,而且能夠修復他們的程式碼中的缺陷時,他們將在成為更精通安全的開發人員的道路上走得很好。

來自 “ https://jaxenter.com/security-dev-issues-174540.ht ”,原文連結:http://blog.itpub.net/31545812/viewspace-2844688/,如需轉載,請註明出處,否則將追究法律責任。

相關文章