Ich verwende Spring Boot v3.1.5 und bootBuildImage, um mein Image zu erstellen. Nachdem ich meine Bilder gescannt hatte, fand ich viele CVEs für Golang. Soweit ich weiß, werden während des Image-Erstellungsprozesses mehrere Golang-Build-Pakete verwendet.
Gibt es eine Möglichkeit, dieses Problem zu lösen? Kann ich Spring so konfigurieren, dass die Verwendung dieser Pakete vermieden wird?
Ich habe versucht, das verwendete Buildpack zu konfigurieren, aber ohne Erfolg. Ich möchte keine Golang-bezogenen Dateien in dem von mir erstellten Bild haben.
Sehr gut!
Nein, das ist nicht korrekt. Wenn Sie eine Java-Anwendung erstellen, verwendet diese nur Java-bezogene Buildpakete. Es werden keine Go-Buildpacks verwendet. Sie können die Liste der verwendeten Build-Pakete in der Build-Ausgabe sehen. Es sieht aus wie das. Die in der Instrumentierung aufgeführten Buildpacks sind die „einzigen“, die aufgerufen werden.
===> 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-Buildpacks selbst in Golang geschrieben sind. Wenn Sie also ein Buildpack-Image wie auswählen, wird dies während der Instrumentierung und des Builds aufgerufen und was tatsächlich zum Erstellen des Pakets erforderlich ist.
gcr.io/paketo-buildpacks/bellsoft-liberica
,您会看到 /cnb/buildpacks/paketo-buildpacks_bellsoft-liberica/10.4.2/bin 处有一个 Go 二进制文件/main
Darüber hinaus führt das Buildpack einige Vorgänge aus, bevor die Anwendungslaufzeit gestartet wird, z. B. das Konfigurieren von JVM-Einstellungen, die von einer Ebene namens
helper
的单独二进制文件(构建包映像的同一目录)执行。与 main
不同,此二进制文件被复制到最终映像中,因此您的扫描仪正确地认为映像中存在 Go 二进制文件。它是 helper
二进制文件。如果您使用 dive
查看应用程序映像,您可以看到添加 helper
Ihr Scanner erkennt diese Binärdatei und scannt sie wie alles andere. Anhand einer Binärdatei lässt sich erkennen, welche Version von Golang diese Binärdatei erstellt hat, und von dort aus erfahren Sie, dass die Binärdatei möglicherweise für alle
Der Scanner weiß nicht, wofür die Binärdatei verwendet wird oder ob sie tatsächlich für CVEs anfällig ist. Ich weiß nicht, auf welches CVE Sie sich beziehen, aber ich kann Ihnen sagen, dass das Paketo-Buildpack , da es sich bei der Binärdatei um eine CLI handelt, ausgeführt wird, normalerweise Argumente/Umgebungsvariablen liest und dann strukturierten Text ausgibt. Das war's, normalerweise ist kein Server, Netzwerk oder HTTP erforderlich.
Wenn Sie helper
二进制文件的上下文,大多数 CVE 将不适用。例如,与服务器、网络或 HTTP 相关的任何内容都是不相关的。 helper
spezifische
Golang-Dateien können nicht gelöscht werden, es handelt sich im Wesentlichen um Build-Pakete.
Was Sie tun können:Halten Sie Ihre Builder und Buildpacks auf dem neuesten Stand. Das Paketo-Projekt veröffentlicht jede Woche neue Versionen und wir halten Go aktiv auf dem neuesten Stand, sodass neue Versionen alle aktuellen Korrekturen enthalten.
Das obige ist der detaillierte Inhalt vonGolang-Pakete mit Spring Boot 3 bootBuildImage erstellen?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!