0

我正在使用 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,并且还没有插件。

4

1 回答 1

1

通过容器镜像的设计,任何人或任何工具都不可能从已经存在的容器镜像中物理删除文件。图像是不可变的。您可以尝试的最好方法是使用一些特殊的“whiteout”文件(.wh.xyz)“标记删除”,容器运行时将在运行时隐藏目标文件。

但是,我不确定您的漏洞扫描程序是否会在扫描期间考虑白文件的影响。希望确实如此。如果没有,我能想到的唯一选择是重新创建自己的基本映像。

请查看此 Stack Overflow 答案以获取更多详细信息。

于 2022-02-24T21:21:32.090 回答