開放資源關閉:驅散幻想
已發表: 2022-03-31隨著 2021 年 12 月的 Log4j 漏洞披露以及開發人員破壞其擁有的 Javascript 庫的新情況——“color.js”和“faker.js”,開源計算機軟件的狀態已成為問題。
隨著在白宮舉行的關於開源的高調會議,以及美國總統拜登的政府命令,一些人甚至暗示這是“開源的結束”。 雖然將一個重大漏洞作為開放供應以某種方式仍然不足的跡象可能很誘人,但事實卻很明顯。
開源軟件並不比商業軟件包更安全。 實際上,大多數專業計算機軟件可能具有或在開源系統上運行。 開放供應僅表示軟件程序的製定方式與任何想要它的人都可以訪問供應代碼的方式完全相同。
我們所看到的來自 Apache Log4j 團隊的 Log4j 響應正是我們希望看到的——這個團隊正在認真對待他們開發的軟件包,並且目前正在響應他們建立基金會的願望。 看看他們是志願者,這種回應表明了我們在開放資源社區中經常看到的所有權的樂趣。
與煽動關閉開源相比,像 Log4j 這樣的事件最有可能增強整個開源的增強——這與 Heartbleed 增强两個開源增長組和關閉源增長組的進度方法的方式非常相似。 因此,如果此處繼續列出開源,組織應該做些什麼來轉移轉發以更熟練地檢測和緩解漏洞?
從組織層面解決計算機軟件保護問題
完美地,識別和緩解漏洞的策略要求我們預先概述一些角色。 大多數人希望他們的軟件包供應商——即開發他們所依賴的計算機軟件的人——檢查該軟件。 該測試的最終結果將是一個確定的結果,突出供應商提供的軟件的弱點。 在一個偉大的整個世界中,所有這些弱點中的每一個都將在程序交付和交付之前得到解決。
在真實的星球上,即便如此,所有這些弱點中的一些會被預設,一些會被標記為“沒有程序可以修復”,而一些會在長期發佈時樂觀地修復。 弱點列表是什麼,以及最終設置了哪些弱點,這不是供應商通常會洩露的一點點。 此外,沒有一種工具可以發現所有弱點,有些工具只有在你擁有資源代碼的情況下才能完成這項工作,儘管其他人需要一個正在運行的軟件。
你會注意到這裡沒有提到“脆弱性”這個詞,因為它有一個具體和基本的指示。 在應用程序中,漏洞只是可以被利用或具有實際利用機會的弱點。
大多數(但不是全部)漏洞是通過被稱為全國漏洞數據庫或僅 NVD 的集中程序披露的。 儘管 NVD 植根於美國,並由美國當局負責管理,但 NVD 的內容可供所有人訪問並在多個國際地點複製。 從治理的角度來看,檢查 NVD 內容的改進是保持最佳新漏洞披露的絕佳方式。
問題在於 NVD 的更新速度比媒體報導的速度慢,因此對於 Log4Shell、HeartBleed 和 Dirty Cow 等關鍵漏洞,發現漏洞的工作人員可能會為漏洞命名,以擴大對困難的認識。 制定一項治理計劃來篩選這些網絡聚會的媒體保護絕對不是什麼絕妙的做法。
如果媒體報導作為漏洞管理的入口是一個糟糕的主意,並且 NVD 有點漸進地呈現所有事實,那麼最有效的治理政策是什麼? 這將來自一種稱為“軟件組合分析”或 SCA 的安全工具。 SCA 軟件似乎既位於應用程序的源代碼中,也位於定義應用程序的可執行文件或庫中,並試圖找出已使用哪些開源庫來構建該軟件。
這些人員庫的列表稱為 SBOM,或計算機軟件材料清單。 假設 SCA 應用程序有效地完成了它的工作,那麼可以製定將 NVD 詳細信息映射到 SBOM 的治理策略,這樣您就知道要修補什麼……除了仍然需要考慮潛在的 NVD 事實。

一些更出色的 SCA 工具通過生成建議來解決這一挑戰,這些建議會在 NVD 條目未決但其中 NVD 條目的詳細信息由 SCA 供應商增強時主動提醒客戶。 一些最先進的設備還致力於篩選或驗證計算機軟件的哪些變體受到漏洞披露的影響。
儘管如此,儘管 SCA 軟件程序可以填補披露和識別之間的漏洞,但需要注意的是,它確實有一個基本的限制。 如果 SCA 程序沒有掃描您的所有程序,那麼它最多只能標記您程序子集的新漏洞披露。
從治理覆蓋的角度來看,它然後讓 IT 運營來建立所有軟件程序和採購功能,以確保所有應用程序(例如更新和免費下載)都出現在 SBOM 下方,並且 SBOM 已通過驗證應用SCA 軟件程序。 由於程序以源代碼和二進制格式都可用,因此走這條路的治理團隊選擇 SCA 軟件程序非常重要,該程序可以有效地執行所有種類和格式的計算機軟件。 這些類型的治理計劃將有助於識別新的漏洞披露和對企業的影響,但由於緩解需要軟件測試,因此將產生不同的有效緩解措施轉移到獨特的政策中。
確保自己工程的安全性只是一方面,但開放資源的優雅之處在於它被設計為協作性的。
套用亞伯拉罕·林肯的話說,開放資源是人民、個人和個人的專有技術。 流行的開源運動的基本原則是,如果您不喜歡代碼的工作方式,那麼您可以自由修改它並解決最終認為存在的功能差距。
我們這些天面臨的困難元素是開源項目的消費者或最終用戶表現得好像開源挑戰是業務應用程序銷售商的情緒。
如果您出現在 GitHub 上任何相當知名的開放資源項目的挑戰列表中,您將看到有關何時可以解決選定問題的功能請求和評論。 此類關於可服務性的問題故事和不滿有一種隱含的期望,即產品經理正在滿足這些人的要求,並且他們將被添加到路線圖中並在某個時候啟動——所有這些都是免費的。
事實上,功能上的差距,甚至是感知到的錯誤,都意味著有機會不請求免費的編程專家服務,而是作為對代碼的長期成就做出貢獻的替代方案,這對抱怨的人來說至關重要。
當然,有些人不知道該項目使用的編程語言,但是期望其他人優先考慮來自不知名的第 3 方的投訴,而不是為精力充沛的貢獻者清除複雜性的變體,這看起來並不真實。 與任何事情一樣重要的是,通過貢獻者的利他主義來開放資源功能。
很長一段時間以來,我們一直在聽取知名開放資源工作的主要貢獻者對大型企業使用其軟件包所獲得的收入的具體煩惱。 雖然很容易讓人聯想到有人將他們的權力投入到一項任務中,只是為了讓第三次從嘗試中獲得收益,但現實情況是,如果第三次攻擊從開放資源推進勞動力的嘗試中獲利,那麼他們應該為其長期成功做出貢獻。
如果他們不這樣做,那麼他們就會面臨這樣的危險,不僅有問題的代碼可能會以他們不依賴的方法進行轉換,而且當保護問題被識別和解決時,他們可能會延遲應用人工修復。 畢竟,如果小型企業沒有花時間與生產為其企業提供支持的計算機軟件的團隊進行互動,那麼他們可能不知道為其企業提供支持的所有程序的來源,並且無法可靠地修補它。
發現開放供應中的漏洞不是問題,但檢測代表可能被利用的弱點的程序缺陷是一個重要的主題。 儘管開放源代碼和封閉供應軟件包在穩定性問題方面具有同等潛力,但通過開放資源,任何人都可以確定所有這些問題。 考慮到這一點,組織必須採取主動措施——不依賴於媒體保護——來觀察最新的漏洞。
同樣重要的是,他們應該為他們所獎勵的開源任務做出貢獻,否則他們很可能會讓受害者陷入意料之外的代碼變化或延遲對重要補丁的認識。
Tim Mackey 是Synopsys的首席保護策略師。