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

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

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

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

一、內存錯誤

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

二、編程錯誤

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

三、危險的函數調用

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

四、濫用密碼技術

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

五、數據污染問題

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

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

 

做者 - Walter Capitani測試

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

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

相關文章
相關標籤/搜索