跳转至

网格漏洞修复标准与计划

此方案旨在技术实现、检测及修复方面的设计,企业项目的实际情况可能会有差异,请以具体的对接人员和合同内容为准进行确认。

扫描方案

在 DCE 5.0 中默认使用 trivy 作为镜像漏洞扫描工具,所有模块在发版时都会进行进行扫描。

  • 什么是 trivy?参阅 https://trivy.dev/
  • 为什么选择 trivy?
    • 全面的漏洞数据库:Trivy 使用广泛的漏洞数据库,包括 NVD(National Vulnerability Database)、Red Hat Security Advisory、Alpine SecDB 等,能够覆盖大量的已知漏洞。
    • 应用程序依赖关系的扫描:除了操作系统层面的漏洞,Trivy 还能扫描各种语言和框架的应用程序依赖关系,例如 Ruby、Python、JavaScript 等。
    • 实时更新:Trivy 定期更新其漏洞数据库,确保能够检测到最新公开的安全漏洞。
    • Trivy 在容器安全领域中被广泛使用

使用方式参考:

扫描的代码如下,参考网格:

#!/usr/bin/env bash

set -o errexit
set -o nounset
set -o pipefail

# ignore VULNEEABILITY CVE-2022-1996 it will fix at k8s.io/api next release
# ignore unfixed  VULNEEABILITY

TRIVY_DB_REPOSITORY=${TRIVY_DB_REPOSITORY:-ghcr.io/aquasecurity/trivy-db}

# The parameters that this shell receives look like this :
# HIGH,CRITICAL release-ci.daocloud.io/mspider/mspider:v0.8.3-47-gd3ac6536  release-ci.daocloud.io/mspider/mspider-api-server:v0.8.3-47-gd3ac6536
# so need use firtParameter parameter to skip first Parameter HIGH,CRITICAL than trivy images
firtParameter=1
for i in "$@"; do
    if (($firtParameter == 1)); then
        ((firtParameter = $firtParameter + 1))
    else
        trivy image --skip-dirs istio.io/istio --ignore-unfixed --db-repository=${TRIVY_DB_REPOSITORY} --exit-code 1 --severity $1 $i
    fi
done

漏洞修复政策

漏洞不予修复的情况

  1. 不在扫描范围内的漏洞 :

    • 使用 trivy image --ignore-unfixed --db-repository=ghcr.io/aquasecurity/trivy-db 进行扫描时,已知但未修复的漏洞将不会被扫描。
    • trivy 官方定期更新公开的漏洞及其修复状态。
    • 如 trivy-db 中未标记为已修复,则漏洞所在的上游组件尚未提供修复版本。
  2. 扫描工具的差异 :

    若其他扫描工具发现的漏洞与 trivy 扫描结果不一致,优先采用 trivy 的结果。

  3. 明确无法修复的漏洞 :

    特定模块(如 DCE5)中明确标记为无法修复的漏洞不会被处理。详细列表请参见漏洞修复政策

  4. 低风险漏洞 :

    风险级别低于 CRITICAL 的漏洞,默认不进行修复。

  5. 不再维护的模块版本:

    对于已经超出维护周期的模块版本,不进行漏洞修复,请升级至新版本。

漏洞修复计划

  1. CRITICAL 级别漏洞 :

    • 在 CI/CD 流程中,一旦检测到 CRITICAL 级别的漏洞,将立即进行修复。
    • 保证每个模块发布版本时,已知的所有 CRITICAL 级别漏洞都已修复,否则不发布新版本。
  2. 版本发布后的持续扫描 :

    发布新版本后,将在下一版本的开发过程中继续使用 trivy 扫描,确保 CRITICAL 级别漏洞不会重复出现。

  3. HIGH 级别漏洞 :

    • 对于 HIGH 级别的漏洞,需要提交修复支持申请,研发团队将进行评估并给出决策:
      • 可修复的漏洞 :预计在 1-2 个迭代周期内完成修复,通常在两个月内。
      • 无法修复的漏洞 :将被添加到无法修复的清单中,并提供详细说明。

标记无法修复清单

CVE-2019-12900
CVE-2019-14697
CVE-2019-17571
CVE-2019-20444
CVE-2019-20445
CVE-2019-8457
CVE-2020-35527
CVE-2021-20231
CVE-2021-20232
CVE-2021-22945
CVE-2021-33574
CVE-2021-3520
CVE-2021-35942
CVE-2021-3711
CVE-2021-44906
CVE-2022-0686
CVE-2022-1292
CVE-2022-1471
CVE-2022-1664
CVE-2022-22965
CVE-2022-23218
CVE-2022-23219
CVE-2022-25845
CVE-2022-29155
CVE-2022-3515
CVE-2022-37601
CVE-2022-4116
CVE-2022-47629
CVE-2023-20873
CVE-2022-45047

# mspider ignore list, see: https://gitlab.daocloud.cn/ndx/mspider/-/blob/main/.trivyignore
# cannot ignore istio library, these vulnerabilities have been fixed after 1.14.1, so ignore
CVE-2022-31045
CVE-2019-12995
CVE-2019-14993
CVE-2021-39155
CVE-2022-23635

# insight ignore list, see: https://gitlab.daocloud.cn/ndx/engineering/insight/insight/-/blob/main/.trivyignore
## k8s.gcr.io/kube-state-metrics/kube-state-metrics:v2.6.0
CVE-2022-1996
## only use in e2e testing
## 10.5.14.30/elastic.m.daocloud.io/kibana/kibana:7.16.3
CVE-2023-46233

# ignore helm vulnerability, this vulnerability has been fixed after 3.9.2. (related to k8s)
CVE-2022-27664

# git vulnerability
CVE-2022-23521
CVE-2022-41903

CVE-2022-1586
CVE-2022-1587
CVE-2021-46848
CVE-2022-37434

## docker.m.daocloud.io/grafana/grafana:9.3.14
CVE-2023-49569

# mcamel ignore list:
CVE-2023-46233
CVE-2022-36760
CVE-2023-25690
CVE-2023-38545
CVE-2022-24963
CVE-2023-45871

评论