为什么我们必须修复测试范围依赖项的安全漏洞?

Why do we have to fix security vulnerabilities on the test scope dependencies?

为什么我们必须修复我们仅在测试范围内使用的库的安全漏洞?

我一直试图在网上找到答案,但没有找到答案,所以想到这里问。

例如: https://nvd.nist.gov/vuln/detail/CVE-2021-23463 我发现了这个漏洞,但是 H2 在 maven 中作为 <scope>test</scope> 包含在内。

测试代码不会被传送到生产环境,所以我想知道为什么我们必须修复这些漏洞,如果它只在测试范围内容易受到攻击。

提前致谢!

CI 可能会在您的内部基础设施上进行 运行 测试。或者只是在您的开发人员机器上。它们将 运行 某个地方 或多或少在您的基础架构内部。

一个漏洞可以被多种方式利用,你说的就是XXE。恶意 xml 文件可用于在处理它的主机上执行操作。这可能允许内部非特权攻击者(例如开发人员)危害 CI 可能有权访问更有价值的凭据。或者它可能允许外部攻击者破坏开发人员 PC(通过某种方式提供恶意 xml 输入),然后从那里破坏 CI,等等。

你可以看出这一点,你不只是想保护你的生产环境。当然,这可能是最重要的,但保护它的方法是应用纵深防御,并降低整个基础设施的风险。

TL;DR - 确定不修复漏洞(在您的测试中)是否安全可能比仅修复漏洞需要更多工作。


Why do we have to fix security vulnerabilities on the libraries that we use only in testing scope?

我能想到您可能 必须 修复漏洞的几个原因:

  1. 因为您的管理层或安全团队告诉您您必须这样做。他们可能会出于遵守某些内部政策或某些外部合规规则的原因告诉您这些……甚至出于法律原因。或者也许是因为有人对此有“看法”。他们可能无法区分生产代码和测试代码。

  2. 因为您无法最终证明测试范围内的漏洞不构成风险

    例如,该漏洞是否会被有权访问您的 CI 基础设施的坏人利用?你能证明那是不可能的吗?或者那不会提供对重要的东西造成重大损害的方法?


反过来是:

  • IF 管理层没有说你必须修复它们 AND 你可以最终证明该漏洞不是风险您的测试基础架构 然后 您可以决定不修复它们。
  • 但是如果您的评估不正确那么责任和后果将落在您身上。

简而言之...您需要决定是否应该冒险忽略该漏洞。