開源代碼:如何在快速開發(fā)的同時保持安全
開源改變了軟件世界,通過實現(xiàn)跨產(chǎn)品和行業(yè)的廣泛重用,極大地降低了引入新技術的成本。但是,從開源中提取代碼就會發(fā)現(xiàn),它們來源非常分散。
當組織沒有考慮對其所依賴的開源庫的長期支持問題時,最壞的情況下很可能影響其軟件的安全問題。2021年底一系列l(wèi)og4j漏洞就是一個很好的例子。組織應該在利用開源便捷的同時,花時間仔細考慮他們的供應鏈安全問題,為未來潛在的安全事件做好準備。
開源并非完全免費
來自多個來源的代碼帶來了安全挑戰(zhàn),組織并不總是能夠處理甚至意識到這些挑戰(zhàn)。供應鏈可能非常復雜,由一個巨大的開源依賴樹組成,所有依賴都定期更新。當上游開源軟件更新或更改時,IT 團隊通常不會審核系統(tǒng)中的每一行代碼。由于依賴關系網(wǎng)絡、不斷變化以及 IT 團隊缺乏深入評估,外部安全威脅應該是一個非常值得關注的問題。
不管最初誰應該為這些漏洞負責,企業(yè)在發(fā)布包含漏洞開源代碼的軟件時都面臨著責任。如果沒有適當?shù)牧鞒虂韺彶殚_源組件的包含和更新,組織將繼續(xù)陷入使用開源組件的陷阱,而不了解他們所承擔的風險。此外,隨著軟件世界的不斷發(fā)展,容器化等新技術將使安全態(tài)勢更加遙不可及。
一旦公開開源項目中的漏洞,組織可能需要在緊迫的時間里審計相關軟件的安全性。這很可能拉低開發(fā)效率,因為要么審核成千上萬行代碼,要么進行最新版本升級。
保持開源安全
建議IT領導在項目開始之前建立安全措施,重點關注威脅及風險的緩解。確保對新的開源依賴項進行安全審查,如使用SCA工具等在開發(fā)期間即可進行,并定期更新這些依賴項以降低未來發(fā)生安全風險的幾率。及時檢測及定期維護非常重要,因為你無法修復不知道的漏洞和問題,并且盡快修復比查找歷史缺陷更容易。
DevSecOps 發(fā)揮作用的地方正是在這里,在軟件開發(fā)期間解決安全問題,不但可以降低成本,而且有助于打破部門之間的障礙。
首先,團隊需要理解在他們的環(huán)境中部署了什么軟件,假設他們從一開始就沒有為材料清單編制文檔。這可能很困難,因為現(xiàn)代軟件堆棧中有許多依賴層。例如,大多數(shù)容器漏洞掃描器都僅限于通過操作系統(tǒng)包管理器安裝的包(例如apt或yum)。在設計上,這遺漏了許多依賴項,比如靜態(tài)鏈接的二進制文件、手動安裝的包、編程語言依賴項等等。
其次,團隊需要使依賴項保持最新。雖然這可能會對開發(fā)人員的時間和資源造成壓力,但這種持續(xù)關注安全事項的成本肯定比團隊在意外破壞時所需的成本要低得多。部分企業(yè)當前已經(jīng)在使用靜態(tài)應用安全測試工具SAST或開源組件成分分析等協(xié)助發(fā)現(xiàn)安全問題。
當團隊采取適當?shù)拇胧﹣碓u估和指導開源依賴性的安全問題時,可以顯著降低軟件供應鏈風險,對安全隱患的關注和審查可以提前避免風險,同時提高開發(fā)人員安全意識。
文章來源:
https://www.helpnetsecurity.com/2022/01/26/code-open-source/
