我正在使用 spring boot v3.1.5,並使用 bootBuildImage 建立我的映像。 掃描我的影像後,我發現了很多關於 golang 的 CVE。 據我了解,在鏡像建置過程中使用了多個 golang 建置套件。
有辦法解決這個問題嗎?我可以配置 spring 來避免使用這些套件嗎?
我嘗試配置使用過的建置包,但沒有成功。 我希望在我創建的映像中包含零個 golang 相關檔案。
非常好!
不,那是不正確的。當您建立 Java 應用程式時,它僅使用與 Java 相關的建置包。它不使用任何 Go 建置包。您可以在建置的輸出中看到它使用的建置包清單。它看起來像這樣。偵測中列出的建置包是唯一被呼叫的建置包。
===> DETECTING 6 of 26 buildpacks participating paketo-buildpacks/ca-certificates 3.6.6 paketo-buildpacks/bellsoft-liberica 10.4.2 paketo-buildpacks/syft 1.39.0 paketo-buildpacks/executable-jar 6.8.2 paketo-buildpacks/dist-zip 5.6.7 paketo-buildpacks/spring-boot 5.27.5
您可能會感到困惑的是,所有 Paketo 建置套件本身都是用 Golang 寫的。因此,如果您要選擇一個建置套件映像,例如gcr.io/paketo-buildpacks/bellsoft-liberica
,您會看到/cnb/buildpacks/paketo-buildpacks_bellsoft-liberica/10.4. 2/bin 處有一個Go 二進位檔案/main
.這是在偵測和建置期間呼叫的內容,以及實際執行建置包的操作的內容。
此外,建置包在應用程式運行時啟動之前執行一些操作,例如配置 JVM 設置,這些操作由名為 helper
的單獨二進位檔案(建置包映像的相同目錄)執行。與 main
不同,此二進位檔案會複製到最終映像中,因此您的掃描器正確地認為映像中存在 Go 二進位檔案。它是 helper
二進位。如果您使用 dive
查看應用程式映像,您可以看到新增 helper
二進位檔案的層並確認這一點。
您的掃描器將看到此二進位檔案並像其他任何東西一樣掃描它。它能夠從二進位檔案中判斷出哪個版本的 Golang 創建了該二進位文件,並從那裡告訴您該二進位檔案可能容易受到該版本 Go 或更高版本的任何已知 CVE 的攻擊。
掃描程式對於二進位檔案的用途或它是否實際上容易受到任何 CVE 的攻擊的了解為零。我不知道您指的是什麼 CVE,但我可以告訴您,鑑於 Paketo buildpack helper
二進位檔案的上下文,大多數 CVE 將不適用。例如,與伺服器、網路或 HTTP 相關的任何內容都是不相關的。 helper
二進位檔案是一個 CLI,它運行並通常讀取參數/環境變量,然後列印一些結構化文字。就是這樣,通常不需要伺服器、網路或 HTTP。
如果您對CVE 及其影響有具體疑問,您可以在Paketo Slack 上提問,但不要只是將掃描器中的CVE 列表轉儲到那裡並期望有人仔細檢查所有內容為你。請注意,該項目是一個 OSS 項目,人們會出於善意做出回應,並且會在時間允許的情況下做出回應。如果您需要更多協助或想要保證的回應時間,那麼您需要考慮與商業建置包供應商簽訂合約。
無法刪除 Golang 文件,它們本質上是建置包。
你可以做什麼:
保持您的建構器和建置包更新。 Paketo 專案每週都會削減新版本,我們會積極地保持 Go 的最新狀態,以便新版本包含所有最新修復。
檢查報告的 CVE,如果您及時更新,應該不會有很多。考慮到建置包二進位檔案的上下文(見上文),它們很可能是無關緊要的,然後您可以告訴掃描器忽略它們。他們應該很快就會離開,因為 1。 )
由於您使用的是 Spring Boot 建置工具,因此請確保您已看到此公告並已套用所需的變更。如果您不這樣做,您絕對會得到很多 CVE,因為您將擁有非常舊的建置套件。
以上是使用 Spring Boot 3 bootBuildImage 建置 Golang 套件?的詳細內容。更多資訊請關注PHP中文網其他相關文章!