Dependabot“不需要安全更新,因为 ansi-regex 不再容易受到攻击”

Luc*_*nze 12 security dependencies dependabot

Dependabot 首先报告并撤回了一个软件包中的安全问题。没有给出撤回的依据,只是说该软件包“不再容易受到攻击”。这是没有意义的。原始 CVE 仍然存在,并且仍然引用受影响的代码。

在此输入图像描述

经过调查,我发现给定的包在yarn.lock中存在两次,一次是在包含漏洞的版本中,后来是在包含补丁的版本中:

    ansi-regex@^2.0.0:
      version "2.1.1"    
    ansi-regex@^5.0.0:
      version "5.0.0"````

I'd be grateful for any way to make sense of this.
Run Code Online (Sandbox Code Playgroud)

Kal*_*ide 5

如果您由于自己在不同的软件包中的“不再容易受到攻击”错误而遇到这个问题:您可能仍然容易受到攻击

根据 Dependabot 维护者之一的说法,(疑似)“不再容易受到攻击”的最常见原因是当您使用同一依赖项的多个版本时,其中一个版本容易受到攻击,但不是最低版本。维护者的帖子部分说道:

这是我目前的理解:

  1. 警报由清单解析代码触发,该清单解析代码是与 dependentabot-core 解析代码不同的代码路径。因此,如果警报清单解析代码认为存储库仍然容易受到攻击,则警报将持续存在。
  2. npm 允许 dep 树中存在依赖项的多个版本...并且这些版本在运行时在代码中使用...最新的版本不会取代旧的版本。因此,如果存在这些问题,您仍然很容易受到攻击。
  3. dependentabot-core 有一个已知的错误,它只更新依赖项的最低版本...因此 Dependabot 可能会尝试创建 PR,然后报告 npm 不再容易受到攻击,而实际上更高版本的依赖项也容易受到攻击,并且仍然在树上。npm中跟踪的错误报告不再容易受到多个版本依赖项的影响。第5741章
  4. 警报是根据 GitHub 咨询数据库中的信息生成的。因此,如果该数据库列出了所有 > 0.16.5 的版本都存在漏洞,但维护人员刚刚推送了解决该问题的 v0.17.0,那么在更新咨询数据库之前,警报不会消失。值得庆幸的是,您可以向咨询数据库提交 PR 来修复不正确的版本说明符。

所以我怀疑这些病例大多数都是#5741的症状。

Dependabot 问题 #5741说:

当存在影响某些版本的依赖项但不影响最低版本的漏洞时。在这种情况下,Dependabot 会错误地报告不需要安全更新。


pzr*_*zrq 2

如果此来源准确,那是因为您列出的两个 ansi-regex 版本不包含该漏洞:

使用提供的再现器确认 4.1.0 和 3.0.0 受影响。2.1.1 没有重现该问题。

3.0.0 是第一个受影响的版本,因为这是第一个包含69bebf6(正则表达式有问题的部分)的版本。