我正在使用 Jib 拉取一个基本图像,将我的包装器 java 代码添加到它,并在此基础上构建我的图像。由于 2021 年 12 月广为人知的 log4j CVE,我们正在寻找一种方法来删除易受攻击的类。(现在在 2022 年发现了更多 CVE,其中一个的得分为 10.0,是可能的最高分。请参阅https://www.cvedetails.com/vulnerability-list/vendor_id-45/product_id-37215/Apache-Log4j.html )
基础镜像已接近 EOL,因此提供商回答他们不会发布新版本;此外,log4j 1.x 也很早就达到了 EOL。但是目前的情况是我们没有将基础镜像升级到下一个版本的计划,所以删除类似乎是现在唯一的方法。
基本图像将/opt/amq/bin/launch.sh
用作入口点。而且我发现我可以在此之前使用自定义入口点来运行脚本,从而删除类。喜欢<entrypoint>/opt/amq/bin/my_script.sh</entrypoint>
,而且我有run_fix.sh && /opt/amq/bin/launch.sh
。
然后我意识到,即使这样可以通过在应用程序实际运行时减轻风险来工作,漏洞扫描(安全过程的一部分)仍然会在检查图像二进制文件时发出警报,因为这是在图像上传之前完成的静态过程在实际运行之前到 docker 注册表进行生产。它们只能在应用程序运行时被移除,也就是在运行时。
jib 可以在执行 Maven build() 时预处理基础映像,而mvn clean install -Pdocker-build
不是仅在运行时允许它吗?根据我阅读的内容,我知道这是一个很大的 NO,并且还没有插件。