Saya menggunakan spring boot v3.1.5 dan menggunakan bootBuildImage untuk membina imej saya. Selepas mengimbas imej saya, saya dapati banyak CVE yang berkaitan dengan golang. Setakat yang saya faham, beberapa pakej binaan golang digunakan semasa proses pembinaan imej.
Adakah cara untuk menyelesaikan masalah ini? Bolehkah saya mengkonfigurasi spring untuk mengelak daripada menggunakan pakej ini?
Saya cuba mengkonfigurasi buildpack yang digunakan tetapi tidak berjaya. Saya mahu mempunyai fail berkaitan sifar golang dalam imej yang saya buat.
Sangat bagus!
Tidak, itu tidak betul. Apabila anda membina aplikasi Java, ia hanya menggunakan pakej binaan berkaitan Java. Ia tidak menggunakan sebarang pek binaan Go. Anda boleh melihat senarai pakej binaan yang digunakan dalam output binaan. Ia kelihatan seperti ini. Pek binaan yang disenaraikan dalam instrumentasi ialah satu-satunyayang dipanggil.
===> 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
Apa yang mungkin mengelirukan anda ialah semua Paketo buildpacks sendiri ditulis dalam Golang. Jadi jika anda memilih imej buildpack seperti gcr.io/paketo-buildpacks/bellsoft-liberica
,您会看到 /cnb/buildpacks/paketo-buildpacks_bellsoft-liberica/10.4.2/bin 处有一个 Go 二进制文件/main
Inilah yang dipanggil semasa instrumentasi dan binaan, dan apa sebenarnya yang diperlukan untuk membina pakej.
Selain itu, buildpack melakukan beberapa operasi sebelum masa jalan aplikasi dimulakan, seperti mengkonfigurasi tetapan JVM, yang dilakukan oleh lapisan bernama helper
的单独二进制文件(构建包映像的同一目录)执行。与 main
不同,此二进制文件被复制到最终映像中,因此您的扫描仪正确地认为映像中存在 Go 二进制文件。它是 helper
二进制文件。如果您使用 dive
查看应用程序映像,您可以看到添加 helper
Binari dan mengesahkan ini.
Pengimbas anda akan melihat binari ini dan mengimbasnya seperti yang lain. Ia dapat memberitahu daripada perduaan versi Golang yang mencipta perduaan itu, dan dari situ ia memberitahu anda bahawa perduaan mungkin terdedah kepada sebarangCVE yang diketahui untuk versi Go atau lebih tinggi itu.
Pengimbas tidak mempunyai pengetahuan tentang kegunaan binari atau sama ada ia sebenarnya terdedah kepada mana-mana CVE. Saya tidak tahu CVE yang anda maksudkan, tetapi saya boleh memberitahu anda bahawa memandangkan binari Paketo buildpack helper
二进制文件的上下文,大多数 CVE 将不适用。例如,与服务器、网络或 HTTP 相关的任何内容都是不相关的。 helper
ialah CLI, ia berjalan dan biasanya membaca argumen/pembolehubah persekitaran dan kemudian mencetak beberapa teks berstruktur. Itu sahaja, biasanya tiada pelayan, rangkaian atau HTTP diperlukan.
Jika anda mempunyai spesifiksoalan tentang CVE dan kesannya, anda boleh bertanya pada Paketo Slack, tetapi jangan hanya membuang senarai CVE dalam pengimbas di sana dan mengharapkan seseorang menyemak semula segala-galanya untuk anda. Sila ambil perhatian bahawa projek ini ialah projek OSS dan orang ramai akan bertindak balas dengan suci hati dan mengikut masa yang dibenarkan. Jika anda memerlukan lebih banyak bantuan atau mahukan masa respons yang terjamin, maka anda perlu mempertimbangkan untuk membuat kontrak dengan penyedia pakej binaan komersial.
Fail Golang tidak boleh dipadam, ia pada dasarnya adalah pakej binaan.
Apa yang boleh anda lakukan:
Pastikan pembina dan pek bina anda dikemas kini. Projek Paketo memotong keluaran baharu setiap minggu, dan kami secara aktif memastikan Go dikemas kini supaya keluaran baharu mengandungi semua pembetulan terkini.
Semak CVE yang dilaporkan, jika anda mengikuti perkembangan terkini sepatutnya tidak banyak. Memandangkan konteks di mana binari pakej dibina (lihat di atas), ia kemungkinan besar tidak relevan, dan anda kemudian boleh memberitahu pengimbas untuk mengabaikannya. Mereka sepatutnya pergi tidak lama lagi kerana 1. )
Memandangkan anda menggunakan alat binaan Spring Boot, sila pastikan anda telah melihat pengumuman ini dan telah menggunakan perubahan yang diperlukan. Jika anda tidak melakukan ini, anda pasti akan mendapat banyak CVE kerana anda akan mempunyai pakej binaan yang sangat lama.
Atas ialah kandungan terperinci Membina pakej Golang menggunakan Spring Boot 3 bootBuildImage?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!