Prisma公共云漏洞扫描API 免费漏洞扫描工具

2019年7月22日08:06:51 发表评论

Prisma Public Cloud Vulnerability Scan API是一种免费的公共API服务,可帮助开发人员和安全团队识别其操作系统中安装的软件包中的漏洞。它接受操作系统中安装的软件包列表,并回复有关这些软件包中发现的漏洞的详细信息。您可以使用此服务扫描docker镜像和VM。

Prisma公共云漏洞扫描API 免费漏洞扫描工具

快速开始

这是一个入门示例。要扫描repo/imagename:tagdocker镜像,请运行以下命令:

docker run --env rl_args="report=detail"  -it --rm --user 0 --entrypoint "/bin/sh" repo/imagename:tag -c 'SCAN_CMD=$(eval "curl -s https://vscanapidoc.redlock.io/scan.sh") && echo "$SCAN_CMD" | sh'

只需替换repo/imagename:tag值,例如

docker run --env rl_args="report=detail"  -it --rm --user 0 --entrypoint "/bin/sh" centos/mysql-56-centos7 -c 'SCAN_CMD=$(eval "curl -s https://vscanapidoc.redlock.io/scan.sh") && echo "$SCAN_CMD" | sh'

请注意,curl程序包必须安装在您扫描的映像中。您可以保存以下./scan-general.sh安装卷曲包的脚本,然后通过运行./scan-general.sh imageeg 扫描任何图像./scan-general.sh harisekhon/hbase-dev

image=$1
docker run --env rl_args="report=detail"  -it --rm --user 0 --entrypoint "/bin/sh" $image -c '(apt-get update && apt-get install curl -y) || (apk update && apk add curl) || (yum install curl -y );SCAN_CMD=$(eval "curl -s https://vscanapidoc.redlock.io/scan.sh") && echo "$SCAN_CMD" | sh'

常见问题解答

  1. 如果我想阻止docker图像存在漏洞,该怎么办?当然,这是一个例子。鉴于以下Dockerfile,
     FROM redmine:4.0.1
     ARG rl_args
     RUN apt-get update && apt-get install -yq curl
     RUN SCAN_CMD=$(eval "curl https://vscanapidoc.redlock.io/scan.sh 2>/dev/null") && echo "$SCAN_CMD" | sh
    

    构建此图像docker build -t redmine -f Dockerfile .将导致以下输出:

      {
       "Report": {
         "Summary": {
           "high_cve_count": 39,
           "medium_cve_count": 324,
           "low_cve_count": 103,
           "unknown_cve_count": 12,
           "total_cve_count": 478,
           "total_packages_count": 147,
           "failure_reason": "threshold_exceeded"
         }
       }
     }
     The command '/bin/sh -c SCAN_CMD=$(eval "curl https://vscanapidoc.redlock.io/scan.sh 2>/dev/null") && echo "$SCAN_CMD" | sh' returned a non-zero code: 1
    

    哎呀!事实证明,我们正在构建一个安装了易受攻击的软件包的映像,因此构建失败。

  2. 仅当存在一定数量的严重漏洞时,如何才能使构建失败? 这是一个例子。 --build-arg rl_args="max_medium=1" 通过使用max_medium标志的值指定build-arg,如果映像最多只有一个中等漏洞,则会成功构建映像。一般格式是标志(其中或者是,,或)。max_{severity}severitycriticalhighmedium要在绕过漏洞检查时获取有关漏洞的更详细信息,请执行以下操作: docker build -t foobar/foo:bar -f Dockerfile . --build-arg rl_args="report=detail;bypass_scan_result=true"
  3. 您的服务有多可用?如果您的服务中断了怎么办?我们的服务在三个不同的地理数据中心(AWS区域)运行,为全球用户提供最佳体验和可用性。

    如果服务中断,我们采取失败关闭的方法。如果您希望在我们的服务停止时绕过构建中的故障,您可以将bypass_scan_service标志设置为true例如

    docker build -t foobar/foo:bar -t service_down_example -f Dockerfile . --build-arg rl_args="bypass_scan_service=true"

  4. 我可以看到可用参数列表吗?请参阅下面的列表。ARG rl_args在使用之前,请确保已在Dockerfile中指定。你可以像这样组合多个参数 rl_args="rl-arg-1=foo;rl-arg-2=bar"。请注意,它们由a分隔;
    构建参数子参数示例/选项描述
    报告detailsummary(默认= summary如果报告设置为详细信息,则JSON响应将具有有关图像漏洞的深入信息。如果报告设置为摘要,则JSON响应将仅显示图像中不同严重性的计数。
    通过...分组packagevuln(默认= package该报告将通过包或漏洞(CVE)聚合JSON。
    bypass_scan_resulttruefalse(默认=false如果设置为true,即使映像存在漏洞,映像也会成功构建。
    bypass_scan_servicetruefalse(默认=false如果设置为true,即使服务已关闭,图像也会成功构建,跳过扫描。
    whitelist_package_listcurl, libssh一系列逗号分隔的程序包,它们根据漏洞扫描的结果列入白名单。注意:如果软件包已列入白名单,但软件包的CVE已列入黑名单,则白名单将优先。
    whitelist_cve_listCVE-2019-123, CVE-2019-124一系列以逗号分隔的CVE,它们根据漏洞扫描的结果列入白名单。
    blacklist_package_listcurl, libssh从漏洞扫描结果列入黑名单的一系列逗号分隔的包。注意:如果CVE已列入白名单,但包含该漏洞的软件包位于黑名单之下,则黑名单将优先。
    blacklist_cve_listCVE-2019-123CVE-2019-124一系列以逗号分隔的CVE,它们从漏洞扫描的结果中列入黑名单。
    required_pa​​ckage_listSELinux, bash图像中所需的一系列逗号分隔的包。
    max_critical0(默认= 0如果存在比此参数更严重的严重性漏洞,则该图像将被视为易受攻击且映像构建将失败。
    max_high5(默认= 0如果存在比此参数更高的严重性漏洞,则该图像将被视为易受攻击且映像构建将失败。
    max_medium10(默认= 0如果存在比此参数更多的中等严重性漏洞,则该映像将被视为易受攻击且映像构建将失败。
  5. 该服务仅适用于Docker容器吗?不。我们的服务与容器无关,甚至可以在Amazon AMI上运行。只要我们的API支持您的操作系统分发,并且文件系统中存在相应的文件,您就能够检测到软件包中的漏洞。
  6. 我多久可以调用一次API? 此服务将您的使用限制为每个呼叫者IP地址每秒呼叫1次。
  7. 该服务是否适用于所有图像? 我们的服务适用于大多数图像。例如,Dockerhub官方映像busybox失败,因为它非常小,没有扫描所需的包信息。要获取有关服务器响应的更多信息,请查看X-RedLock-Scancode标题。
    X-RedLock-扫描码描述
    通过软件包通过了漏洞扫描。
    失败程序包未通过漏洞扫描。
    缺失数据请求缺少数据。
    非法请求请求无效。
    内部错误服务器无法生成响应。
  8. 你是否真的要我运行你主持的脚本?示例:
     FROM alpine
     RUN apk add curl
     RUN curl -i -s -X POST https://scanapi.redlock.io/v1/vuln/os -H "Accept-Encoding: gzip" \
     -F "fileName=/etc/alpine-release" -F "file=@/etc/alpine-release" \
     -F "fileName=/lib/apk/db/installed" -F "file=@/lib/apk/db/installed" \
     -F "rl_args=report=detail" | grep -i "x-redlock-scancode: pass"
    

    Debian / Ubuntu示例:

     FROM ubuntu
     RUN apt-get update && apt-get install -y curl
     RUN curl -i -s -X POST https://scanapi.redlock.io/v1/vuln/os -H "Accept-Encoding: gzip" \
     -F "fileName=/etc/os-release" -F "file=@/etc/os-release" \
     -F "fileName=/var/lib/dpkg/status" -F "file=@/var/lib/dpkg/status" \
     -F "rl_args=report=detail" | grep -i "x-redlock-scancode: pass"
    

    RHEL / Centos示例:

     FROM centos
     RUN yum install curl
     RUN rpm -qa --qf '%{NAME} %{EPOCH}:%{VERSION}-%{RELEASE}\n' \
     | curl -i -s -X POST https://scanapi.redlock.io/v1/vuln/os -H "Accept-Encoding: gzip" \
     -F "fileName=/etc/os-release" -F "file=@/etc/os-release" \
     -F "fileName=rpm_output" -F "file=@-" -F "rl_args=report=detail" | grep -i "x-redlock-scancode: pass"

发表评论

后发表评论