你需要知道的5個DevSecOps編碼缺陷

將靜態分析集成到開發週期中可以防止編碼錯誤並更快地交付安全軟件。

安全從業人員習慣於在軟件開發過程結束時進行干預,以識別安全漏洞,而其中的許多漏洞可以通過早期干預來避免。爲了解決這個問題,已經在壓力之下以更快速度和更低成本交付複雜軟件的開發人員,在開發週期的早期被招募到“左移”運動下以實現安全性。

想要了解開發人員在滿足新的安全需求方面所面臨的障礙,請考慮以下五種最常見的編碼缺陷以及如何解決它們:

1、內存錯誤

讀取內存的錯誤可能會導致泄露敏感信息從而影響機密性和完整性,而內存寫入錯誤則有可能破壞執行流程,這可能會影響安全三元組的所有三個組成部分:機密性、完整性和可用性。常見的錯誤示例包括緩衝區溢出/欠載和釋放後使用(UAF)。即使是最熟練的程序員也會在不經意間產生這些難以檢測的潛在缺陷,甚至在經過良好測試、安全認證的代碼中也能夠發現這樣的缺陷。儘管編碼標準經常被用來減少內存錯誤,但它們是不夠的。深入的靜態分析、數據流分析和符號執行對於在開發週期的早期檢測內存錯誤是絕對必需的。

2、編程錯誤

此類錯誤主要是由於對C / C ++的錯誤使用而引起的,例如未初始化的變量,指針的雙重釋放以及有符號和無符號變量之間的隱式轉換。一些編碼錯誤在功能測試和迴歸測試期間可能不會表現出來,即使它們會導致程序狀態的損壞。然而,它們可能會導致已部署的系統出現嚴重問題。靜態分析可以識別編程語言語義中的編碼錯誤和誤區。

3、危險的函數調用

某些API函數被認爲是潛在有害和不安全的。C / C ++中的gets()函數就是一個很好的例子,因爲它很容易產生目標緩衝區溢出的情況,從而影響完整性。其他函數調用可能有特定於實現的行爲,從而使其變得很危險。使用可以搜索危險函數列表的靜態分析可以輕鬆識別危險的函數調用。

4、濫用密碼技術

密碼函數是使數據處於移動或靜止狀態時保持數據機密性的重要部分。但是,很少有開發人員是密碼學的專家,濫用C庫中的加密函數會導致安全問題,尤其是使用數據加密標準(DES)和MD5等弱算法或者濫用密碼。其他例子包括使用硬編碼密鑰或散列的salt數據。密碼術的濫用會影響機密性和完整性。幸運的是,使用靜態分析很容易識別這些問題。

5、數據污染問題

數據污染是開發人員面臨的最具挑戰性的問題之一,它也可能影響完整性和機密性。從本質上講,受污染的數據是指流入系統的數據未經過驗證以消除惡意元素並確保其在預期值範圍內的情況。通過事後的人工檢查來檢測數據注入的漏洞是非常困難的。


爲了檢測數據污染的問題,通過任何形式的輸入(例如用戶,設備或套接字)流入到系統的數據需要從其來源(進入軟件的位置)追蹤到接收器(使用的位置)。在將這些數據用於API調用,訪問數據結構或編程邏輯的任何部分之前,都需要對其進行驗證。否則,它可能導致數據注入漏洞,如格式字符串注入,LDAP注入或SQL注入。靜態分析可以通過這些流進行計算,並提供易於理解的警告,以幫助程序員預防危險情況。要做到這一點,靜態分析必須執行數據流分析和抽象的執行以評估可能的執行流。

作者 - Walter Capitani

GrammaTech技術總監Walter Capitani是嵌入式和企業軟件安全領域的權威專家。他領導了全球產品開發團隊,致力於安全關鍵和安全軟件、SaaS應用性能、廣播電視和電影院的文件分發應用,以及3D視頻壓縮和傳輸技術等相關領域的技術研發。

更多信息請訪問:http://www.softtest.cn/

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章