你需要知道的5個(gè)DevSecOps編碼缺陷
將靜態(tài)分析集成到開發(fā)周期中可以防止編碼錯(cuò)誤并更快地交付安全軟件。
安全從業(yè)人員習(xí)慣于在軟件開發(fā)過(guò)程結(jié)束時(shí)進(jìn)行干預(yù),以識(shí)別安全漏洞,而其中的許多漏洞可以通過(guò)早期干預(yù)來(lái)避免。為了解決這個(gè)問(wèn)題,已經(jīng)在壓力之下以更快速度和更低成本交付復(fù)雜軟件的開發(fā)人員,在開發(fā)周期的早期被招募到“左移”運(yùn)動(dòng)下以實(shí)現(xiàn)安全性。
想要了解開發(fā)人員在滿足新的安全需求方面所面臨的障礙,請(qǐng)考慮以下五種最常見的編碼缺陷以及如何解決它們:
1、內(nèi)存錯(cuò)誤
讀取內(nèi)存的錯(cuò)誤可能會(huì)導(dǎo)致泄露敏感信息從而影響機(jī)密性和完整性,而內(nèi)存寫入錯(cuò)誤則有可能破壞執(zhí)行流程,這可能會(huì)影響安全三元組的所有三個(gè)組成部分:機(jī)密性、完整性和可用性。常見的錯(cuò)誤示例包括緩沖區(qū)溢出/欠載和釋放后使用(UAF)。即使是最熟練的程序員也會(huì)在不經(jīng)意間產(chǎn)生這些難以檢測(cè)的潛在缺陷,甚至在經(jīng)過(guò)良好測(cè)試、安全認(rèn)證的代碼中也能夠發(fā)現(xiàn)這樣的缺陷。盡管編碼標(biāo)準(zhǔn)經(jīng)常被用來(lái)減少內(nèi)存錯(cuò)誤,但它們是不夠的。深入的靜態(tài)分析、數(shù)據(jù)流分析和符號(hào)執(zhí)行對(duì)于在開發(fā)周期的早期檢測(cè)內(nèi)存錯(cuò)誤是絕對(duì)必需的。
2、編程錯(cuò)誤
此類錯(cuò)誤主要是由于對(duì)C / C ++的錯(cuò)誤使用而引起的,例如未初始化的變量,指針的雙重釋放以及有符號(hào)和無(wú)符號(hào)變量之間的隱式轉(zhuǎn)換。一些編碼錯(cuò)誤在功能測(cè)試和回歸測(cè)試期間可能不會(huì)表現(xiàn)出來(lái),即使它們會(huì)導(dǎo)致程序狀態(tài)的損壞。然而,它們可能會(huì)導(dǎo)致已部署的系統(tǒng)出現(xiàn)嚴(yán)重問(wèn)題。靜態(tài)分析可以識(shí)別編程語(yǔ)言語(yǔ)義中的編碼錯(cuò)誤和誤區(qū)。
3、危險(xiǎn)的函數(shù)調(diào)用
某些API函數(shù)被認(rèn)為是潛在有害和不安全的。C / C ++中的gets()函數(shù)就是一個(gè)很好的例子,因?yàn)樗苋菀桩a(chǎn)生目標(biāo)緩沖區(qū)溢出的情況,從而影響完整性。其他函數(shù)調(diào)用可能有特定于實(shí)現(xiàn)的行為,從而使其變得很危險(xiǎn)。使用可以搜索危險(xiǎn)函數(shù)列表的靜態(tài)分析可以輕松識(shí)別危險(xiǎn)的函數(shù)調(diào)用。
4、濫用密碼技術(shù)
密碼函數(shù)是使數(shù)據(jù)處于移動(dòng)或靜止?fàn)顟B(tài)時(shí)保持?jǐn)?shù)據(jù)機(jī)密性的重要部分。但是,很少有開發(fā)人員是密碼學(xué)的專家,濫用C庫(kù)中的加密函數(shù)會(huì)導(dǎo)致安全問(wèn)題,尤其是使用數(shù)據(jù)加密標(biāo)準(zhǔn)(DES)和MD5等弱算法或者濫用密碼。其他例子包括使用硬編碼密鑰或散列的salt數(shù)據(jù)。密碼術(shù)的濫用會(huì)影響機(jī)密性和完整性。幸運(yùn)的是,使用靜態(tài)分析很容易識(shí)別這些問(wèn)題。
5、數(shù)據(jù)污染問(wèn)題
數(shù)據(jù)污染是開發(fā)人員面臨的最具挑戰(zhàn)性的問(wèn)題之一,它也可能影響完整性和機(jī)密性。從本質(zhì)上講,受污染的數(shù)據(jù)是指流入系統(tǒng)的數(shù)據(jù)未經(jīng)過(guò)驗(yàn)證以消除惡意元素并確保其在預(yù)期值范圍內(nèi)的情況。通過(guò)事后的人工檢查來(lái)檢測(cè)數(shù)據(jù)注入的漏洞是非常困難的。
為了檢測(cè)數(shù)據(jù)污染的問(wèn)題,通過(guò)任何形式的輸入(例如用戶,設(shè)備或套接字)流入到系統(tǒng)的數(shù)據(jù)需要從其來(lái)源(進(jìn)入軟件的位置)追蹤到接收器(使用的位置)。在將這些數(shù)據(jù)用于API調(diào)用,訪問(wèn)數(shù)據(jù)結(jié)構(gòu)或編程邏輯的任何部分之前,都需要對(duì)其進(jìn)行驗(yàn)證。否則,它可能導(dǎo)致數(shù)據(jù)注入漏洞,如格式字符串注入,LDAP注入或SQL注入。靜態(tài)分析可以通過(guò)這些流進(jìn)行計(jì)算,并提供易于理解的警告,以幫助程序員預(yù)防危險(xiǎn)情況。要做到這一點(diǎn),靜態(tài)分析必須執(zhí)行數(shù)據(jù)流分析和抽象的執(zhí)行以評(píng)估可能的執(zhí)行流。
作者 - Walter Capitani
GrammaTech技術(shù)總監(jiān)Walter Capitani是嵌入式和企業(yè)軟件安全領(lǐng)域的權(quán)威專家。他領(lǐng)導(dǎo)了全球產(chǎn)品開發(fā)團(tuán)隊(duì),致力于安全關(guān)鍵和安全軟件、SaaS應(yīng)用性能、廣播電視和電影院的文件分發(fā)應(yīng)用,以及3D視頻壓縮和傳輸技術(shù)等相關(guān)領(lǐng)域的技術(shù)研發(fā)。
更多信息請(qǐng)?jiān)L問(wèn):http://www.softtest.cn/
浙公網(wǎng)安備 33010602011771號(hào)