无法使用 Anchore Grype 扫描本地(未推送)映像中的 CVE - 解决方法

问题描述 投票:0回答:2

显然不可能使用 Anchore Grype 对 Docker 镜像中的漏洞执行安全扫描,除非该镜像之前已推送到注册表。

这使得它目前不适合从易受攻击的映像中控制您的注册表,因为可以将映像推送到那里,然后 - 在扫描完成之前 - 这个带有一些严重 CVE 的受感染映像可以立即被毫无戒心的用户拉取(在映像被获取之前)撤回)。

如何解决这个问题?


重现问题

  1. 首先
    docker build
    一张图像;不要将其推送到注册表。
  2. 尝试使用
    grype
    扫描本地可用的图像,您将收到如下错误:
$ ./scan-with-grype-dockerized.sh mirekphd/ml-cache:20230726
[0000]  INFO grype version: 0.64.2
1 error occurred:
    * failed to catalog: unable to load image: unable to use OciRegistry source: failed to get image descriptor from registry: GET https://index.docker.io/v2/mirekphd/ml-cache/manifests/20230726: MANIFEST_UNKNOWN: manifest unknown; unknown tag=20230726
docker security docker-image cve grype
2个回答
0
投票

作为解决方法,您可以考虑以

grype
用户身份运行
root
(请在之前未推送到 Docker Hub 的映像上进行测试):

$ docker run --rm --name grype -u 0 -v /var/run/docker.sock:/var/run/docker.sock anchore/grype:latest --only-fixed mirekphd/ml-cache:20230731 

NAME          INSTALLED  FIXED-IN   TYPE  VULNERABILITY  SEVERITY 
libcrypto1.1  1.1.1s-r0  1.1.1t-r0  apk   CVE-2022-4304  Medium    
libcrypto1.1  1.1.1s-r0  1.1.1t-r0  apk   CVE-2022-4450  High      
libcrypto1.1  1.1.1s-r0  1.1.1t-r0  apk   CVE-2023-0215  High      
libcrypto1.1  1.1.1s-r0  1.1.1t-r0  apk   CVE-2023-0286  High      
libcrypto1.1  1.1.1s-r0  1.1.1t-r1  apk   CVE-2023-0464  High      
libcrypto1.1  1.1.1s-r0  1.1.1t-r2  apk   CVE-2023-0465  Medium    
libcrypto1.1  1.1.1s-r0  1.1.1u-r0  apk   CVE-2023-2650  High      
libcrypto1.1  1.1.1s-r0  1.1.1u-r2  apk   CVE-2023-3446  Medium    
libssl1.1     1.1.1s-r0  1.1.1t-r0  apk   CVE-2022-4304  Medium    
libssl1.1     1.1.1s-r0  1.1.1t-r0  apk   CVE-2022-4450  High      
libssl1.1     1.1.1s-r0  1.1.1t-r0  apk   CVE-2023-0215  High      
libssl1.1     1.1.1s-r0  1.1.1t-r0  apk   CVE-2023-0286  High      
libssl1.1     1.1.1s-r0  1.1.1t-r1  apk   CVE-2023-0464  High      
libssl1.1     1.1.1s-r0  1.1.1t-r2  apk   CVE-2023-0465  Medium    
libssl1.1     1.1.1s-r0  1.1.1u-r0  apk   CVE-2023-2650  High      
libssl1.1     1.1.1s-r0  1.1.1u-r2  apk   CVE-2023-3446  Medium

注意:如果您在此处未使用

--only-fixed
标志而遇到了上述严重漏洞,那么请放心,它们仅与该映像中实际使用的 Alpine 以外的系统相关 - 一个用于 Debian,一个用于... Windows,在我已经向开发人员报告了一个单独的错误。


0
投票

一个更安全且相当高效的解决方法是使用

skopeo
及其从本地 Docker 守护进程复制未推送的本地镜像的能力(无需
docker run
它们以及
docker save
所带来的更改它们的风险) (使用
docker-daemon:
前缀,注意:那里没有斜线)将 OCI 目录格式的图像复制到临时位置,然后使用
grype
前缀使用
oci-dir:
进行扫描。

© www.soinside.com 2019 - 2024. All rights reserved.