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.
如果您因不同软件包中自己的“不再易受攻击”的错误而来到这个问题:您仍然可能容易受攻击。 根据 Dependabot 维护者之一的说法,“不再易受攻击”最常见的原因是当您使用多个版本的相同依赖项时,其中一个依赖项容易受攻击,但不是最低版本。维护者的帖子部分内容如下:这是我的当前理解: 警报是由清单解析代码触发的,该代码路径与dependabot-core的解析代码分开。因此,如果警报清单解析代码认为库仍然容易受攻击,则警报将继续存在。 npm 允许在 dep 树中有多个版本的依赖... 并且这些依赖在运行时被使用... 最新的版本不会替换旧版本。因此,如果存在这些依赖,您仍然容易受攻击。 dependabot-core 存在已知的 bug,它只更新依赖的最低版本... 因此 Dependabot 可能尝试创建 PR,然后报告 npm 不再容易受攻击,但实际上较新版本的依赖仍然容易受攻击并且仍在树中。 这在 npm erroneously reports no longer vulnerable with multiple versions of dependency. #5741 中有记录。 警报是基于 GitHub 咨询数据库中的信息生成的。因此,如果该数据库列出所有版本 > 0.16.5 都容易受攻击,但维护者刚刚推出修复问题的 v0.17.0 版本,则警报将不会消失,直到咨询数据库更新为止。幸运的是,您可以提交一个 PR 来修复不正确的版本说明符。 因此,我怀疑大多数这些情况都是 #5741 的症状。 Dependabot 问题 #5741 表示: 当一个漏洞影响某些版本的依赖关系但不影响最低版本时,Dependabot 错误地报告不需要进行安全更新。
如果这个消息来源准确,那是因为你列出的两个ansi-regex版本都没有漏洞: 使用提供的复制者测试确认了4.1.0和3.0.0存在问题。2.1.1不会产生该问题。 3.0.0是第一个受影响的版本,因为它是第一个包含69bebf6的版本,而这正是正则表达式中有问题的部分。
yarn list ansi-regex
以查看为什么似乎安装了多个 ansi-regex 版本? - pzrq