J'utilise Spring Boot v3.1.5 et j'utilise bootBuildImage pour créer mon image. Après avoir numérisé mes images, j'ai trouvé de nombreux CVE pour Golang. D'après ce que je comprends, plusieurs packages de construction Golang sont utilisés pendant le processus de création d'image.
Existe-t-il un moyen de résoudre ce problème ? Puis-je configurer Spring pour éviter d’utiliser ces packages ?
J'ai essayé de configurer le buildpack utilisé mais sans succès. Je veux n'avoir aucun fichier lié à Golang dans l'image que je crée.
Très bien !
Non, ce n’est pas correct. Lorsque vous créez une application Java, elle utilise uniquement des packages de construction liés à Java. Il n’utilise aucun buildpack Go. Vous pouvez voir la liste des packages de build qu'il utilise dans la sortie de la build. Cela ressemble à ceci. Les buildpacks répertoriés dans l'instrumentation sont les seulsappelés.
===> 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
Ce qui peut vous dérouter, c'est que tous les buildpacks Paketo eux-mêmes sont écrits en Golang. Donc, si vous deviez sélectionner une image de buildpack comme gcr.io/paketo-buildpacks/bellsoft-liberica
,您会看到 /cnb/buildpacks/paketo-buildpacks_bellsoft-liberica/10.4.2/bin 处有一个 Go 二进制文件/main
, c'est ce qu'on appelle lors de l'instrumentation et de la construction, et ce qu'il faut réellement faire pour construire le package.
De plus, le buildpack effectue certaines opérations avant le démarrage du runtime de l'application, telles que la configuration des paramètres JVM, qui sont effectuées par une couche nommée helper
的单独二进制文件(构建包映像的同一目录)执行。与 main
不同,此二进制文件被复制到最终映像中,因此您的扫描仪正确地认为映像中存在 Go 二进制文件。它是 helper
二进制文件。如果您使用 dive
查看应用程序映像,您可以看到添加 helper
Binary et le confirme.
Votre scanner verra ce binaire et le scannera comme toute autre chose. Il est capable de déterminer à partir d'un binaire quelle version de Golang a créé ce binaire, et à partir de là, il vous indique que le binaire peut être vulnérable à n'importe quel CVE connu pour cette version de Go ou supérieure. Le scanner n'a aucune connaissance de l'utilisation du binaire ou s'il est réellement vulnérable à des CVE. Je ne sais pas à quel CVE vous faites référence, mais je peux vous dire que étant donné que le binaire Paketo buildpack
est une CLI, il s'exécute et lit généralement les arguments/variables d'environnement, puis imprime du texte structuré. C'est tout, généralement aucun serveur, réseau ou HTTP n'est requis. helper
二进制文件的上下文,大多数 CVE 将不适用。例如,与服务器、网络或 HTTP 相关的任何内容都是不相关的。 helper
spécifiques sur les CVE et leur impact, vous pouvez les poser sur Paketo Slack, mais ne vous contentez pas de jeter la liste CVE dans le scanner et d'attendre que quelqu'un revérifie tout pour vous. Veuillez noter que ce projet est un projet OSS et que les gens répondront de bonne foi et dans la mesure du temps possible. Si vous avez besoin de plus d'aide ou si vous souhaitez un temps de réponse garanti, vous voudrez peut-être envisager de passer un contrat avec un fournisseur de packages de construction commerciale.
Les fichiers Golang ne peuvent pas être supprimés, ce sont essentiellement des packages de build.Ce que vous pouvez faire :
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!