大多數 *** 攻擊都利用了眾所周知的漏洞,許多程序員可以使用持續集成、持續部署 (CI/CD) 或 DevOps 技術自動執行構建。然而,我們如何能夠自動檢查每小時在不同的免費和開源庫中出現的安全漏洞呢?如今有多種 *** 可以在構建應用程序時找出庫的錯誤版本。
本文將重點介紹 Python,因其擁有一些用于檢查依賴項安全性的復雜工具。特別是,本文探討了 Thoth 項目(https://thoth-station.ninja/),它將許多工具結合在一起,以自動化 Python 程序構建,并將安全檢查作為解決過程的一部分。
自動化安全工作的投入
本節列出了向公眾提供有關漏洞信息所做出的努力。它側重于與本文主題相關的工具:開源 Python 庫中的漏洞報告。
常見漏洞和暴露 (CVE) 計劃
任何關于軟件安全性的討論都必須從全面的 CVE 數據庫開始,該數據庫匯集了數千名研究人員發現的缺陷。本文中的其他項目在很大程度上依賴于此數據庫。它由美國國家標準與技術研究院(NIST)維護,并由 MITRE 策劃,MITRE 是一家專門從事開源軟件的非營利性公司,并得到了美國 *** 的支持。CVE 數據庫為許多相關項目(如 CVE 詳細信息統計信息站點)提供信息。
個人或自動化工具可以找到與結構化格式安全漏洞相關的確切包和版本,以及解釋漏洞的不太結構化的文本,如下所示。
![](/zb_users/plugin/erx_Weixin/img/zzcm1.jpg)
添加微信好友, 獲取更多信息
復制微信號
Python Packaging Authority 的安全舉措
Python Packaging Authority (PyPA) 是為 Python 語言中的開源包創建更佳實踐的主要機構,來自許多公司的志愿者都支持 PyPA。PyPA 的安全相關舉措是使 Python 重大進步的主要因素。
PyPA 的咨詢數據庫以機器可讀的形式整理 Python 包中的已知漏洞,PyPA 支持的另一個項目 pip-audit 審計應用程序,提供需求并報告所用軟件包中的任何已知漏洞。pip-audit 的輸出可以是人類可讀的結構化格式,例如 *** ON。因此,自動化工具可以咨詢數據庫或 pip-audit,用以警告開發人員其依賴項中的風險。
開源見解(Open Source Insights)
一項名為 Open Source Insights 的計劃,試圖通過以結構化的格式提供信息,利用流行語言生態系統中依賴的關系,以幫助開源開發人員。此類信息包括安全建議、許可信息、庫的依賴關系等。為了更好地運用 Open Source Insights,我們查閱了流行的 TensorFlow 數據科學庫,發現關于PyPI 的安全公告(https://deps.dev/pypi/tensorflow),單擊“更多詳細信息”按鈕可顯示有助于研究資訊的鏈接。
有趣的是,Node.js 包管理器(npm)提供的 TensorFlow 版本當時沒有安全公告。在這種情況下使用的編程語言可能是造成差異的原因之一。然而,明顯的不一致提醒我們,起源可以帶來很大的不同,因此將展示解決依賴關系的自動化過程,以此來適應這些問題。
Open Source Insights 通過將 Python 包安裝到干凈的環境中來獲取其依賴關系信息。Python 包由 pip 解析器(Python 庫更流行的安裝工具)安裝,PyPI 是列出開源 Python 庫更流行的索引。從開源漏洞數據庫 (OSV) 中檢索每個包的漏洞信息。OSV 則作為會審服務,對跨多個語言生態系統漏洞進行分組。如果開源見解有 API,它將是一個非常有價值的資源; 我們希望開發人員會在某個時候段能夠添加一個。盡管信息目前僅作為網頁提供,但結構化格式允許自動化工具抓取頁面并查找關鍵信息,例如安全公告。
開源安全基金會的安全記分卡
與安全密切相關的軟件質量需要基本的實踐,例如在將更改檢查到存儲庫之前進行回歸測試,將加密簽名附加到發布,以及運行靜態分析,其中一些做法可以自動檢測,從而使安全專家能夠大規模地評估項目的安全性。
一項名為 “Security Scorecards(安全記分卡)” 的工作于 2020 年啟動,并得到了開源安全基金會(OpenSSF) 的支持,目前列出了幾十個自動檢查。大多數檢查依賴于 GitHub 服務,并且只能在存儲于 GitHub 中的項目上運行。鑒于 GitHub 在開源項目中的主導地位,該項目目前仍然非常有用,并且代表了更通用評級系統的模型。
Thoth 計劃
Project Thoth 是一個基于云的工具,可幫助 Python 程序員構建強大的應用程序,該任務包括安全檢查以及許多其他注意事項。Red Hat 創立了 Thoth,并運行在 Red Hat OpenShift 云服務中,但其代碼完全是開源的。該項目在 Python 開發人員中建立了一個社區,開發人員可以將項目的創新成果復制到其他編程語言中。
幫助程序員查找庫和構建應用程序的工具稱為解析器。流行的 pip 解析器通常選擇每個庫的最新版本,但比較復雜,pip 甚至可以回溯,并選擇不同版本的庫來處理通過遍歷依賴關系圖找到的版本范圍規范。在選擇依賴項的更佳版本時,Thoth 可以做的不僅僅是 pip。以下是 Thoth的概述,可特別關注它如何幫助提高安全性。
Thoth 概述
Thoth 在安裝依賴項時會考慮程序環境的許多元素,程序將在其上運行 CPU 和操作系統、有關應用程序容器的元數據(例如由 Skopeo 提取的元數據),甚至是有關機器學習應用程序將使用的 GPU 信息。Thoth 可以考慮其他幾個變量,但可能從前面的列表中已猜到,Thoth 最初是為了支持機器學習而開發的。開發人員在配置文件中向 Thoth 提供有關應用程序環境的信息。
然而環境信息有什么優勢呢?它允許 Thoth 在指定環境中排除具有已知漏洞的庫版本。在運行期間能夠注意到構建失敗或出現問題的開發人員,并將有關使用或避免哪些版本的依賴項信息存儲在稱為 “Prescription” 的規范中,Thoth 會為未來用戶提供咨詢。Thoth 甚至可以對程序及其環境進行測試。目前,它使用 Clair 對容器鏡像的內容進行靜態測試,并存儲有關發現漏洞的信息。未來 Thoth 的開發人員計劃使用 Python 代碼質量管理局(PyCQA) 的 Bandit 項目來運行具有各種庫版本組合的實際應用程序。Thoth 將在每個包源代碼上單獨運行 Bandit,并在解析過程中合并結果。
各種庫的不同版本組合較多,無法全部測試。因此,Thoth 將依賴關系解析建模為馬爾可夫決策過程(MDP),以決定要運行的更高效子集。有時安全不是主要問題。例如,也許您計劃在與 Internet 隔離的專用 *** 中運行程序。在這種情況下,可以考慮Thoth 的其他一些優勢,例如性能或穩定性等,而不是安全性。
Thoth 將其依賴項選擇存儲在鎖定文件中,文件“鎖定”特定依賴項的特定版本。如果沒有鎖定文件,細微的安全漏洞和其他錯誤可能會蔓延生產應用程序,在最壞的情況下,如果沒有鎖定,用戶可能會面臨所謂的“依賴性混淆攻擊”。解析器可能會選擇從具有錯誤版本的索引中獲取庫。另一個風險是攻擊者可能會在索引中增加庫的版本號,導致解析器選擇最新的版本。
總結
Thoth 是一個復雜且不斷增長的開源工具 *** ,其解決方案背后的基本原則可以啟發其他項目,該原則是: 解析器應通過抓取網站(例如 CVE 數據庫)、運行靜態檢查以及任何其他信息源來例行檢查漏洞。結果必須存儲在數據庫中。當解析器發現某些錯誤或安全漏洞需要更改解析器之前做出的決定時,解析器必須查看依賴項的依賴關系并進行回溯。解析器的發現和使用解析器的開發人員傳回的信息應被存儲起來,并在未來的決策中使用。簡而言之,借助當今可用的有關安全漏洞的大量信息,我們可以自動解決依賴關系并生成更安全的應用程序。
來源:開源地理空間基金會中文分會
來源鏈接:https://www.osgeo.cn/post/1f2d8
本站聲明:網站內容來源于 *** ,如有侵權,請聯系我們,我們將及時處理。