Dependabot:“由于ansi-regex不再存在漏洞,因此无需进行安全更新”

13

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.

3
可能这是一个 Dependabot 的 bug:https://github.com/dependabot/dependabot-core/issues/4222 - Lucas Gonze
也许尝试运行 yarn list ansi-regex 以查看为什么似乎安装了多个 ansi-regex 版本? - pzrq
3个回答

5
如果您因不同软件包中自己的“不再易受攻击”的错误而来到这个问题:您仍然可能容易受攻击根据 Dependabot 维护者之一的说法,“不再易受攻击”最常见的原因是当您使用多个版本的相同依赖项时,其中一个依赖项容易受攻击,但不是最低版本。维护者的帖子部分内容如下:
这是我的当前理解:
  1. 警报是由清单解析代码触发的,该代码路径与dependabot-core的解析代码分开。因此,如果警报清单解析代码认为库仍然容易受攻击,则警报将继续存在。
  2. npm 允许在 dep 树中有多个版本的依赖... 并且这些依赖在运行时被使用... 最新的版本不会替换旧版本。因此,如果存在这些依赖,您仍然容易受攻击。
  3. dependabot-core 存在已知的 bug,它只更新依赖的最低版本... 因此 Dependabot 可能尝试创建 PR,然后报告 npm 不再容易受攻击,但实际上较新版本的依赖仍然容易受攻击并且仍在树中。 这在 npm erroneously reports no longer vulnerable with multiple versions of dependency. #5741 中有记录。
  4. 警报是基于 GitHub 咨询数据库中的信息生成的。因此,如果该数据库列出所有版本 > 0.16.5 都容易受攻击,但维护者刚刚推出修复问题的 v0.17.0 版本,则警报将不会消失,直到咨询数据库更新为止。幸运的是,您可以提交一个 PR 来修复不正确的版本说明符。
因此,我怀疑大多数这些情况都是 #5741 的症状。

Dependabot 问题 #5741 表示:

当一个漏洞影响某些版本的依赖关系但不影响最低版本时,Dependabot 错误地报告不需要进行安全更新。


2
如果这个消息来源准确,那是因为你列出的两个ansi-regex版本都没有漏洞:

使用提供的复制者测试确认了4.1.0和3.0.0存在问题。2.1.1不会产生该问题。

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


0

感谢回答者的专业知识。

我认为最有可能的诊断是 Dependabot 的 bug。通常情况下,责怪工具是一种不切实际的想法,但在这种情况下,这是迄今为止最简单的答案。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接