使用 npm 审核来检测和修复包漏洞

Azure DevOps Services

npm 审核命令对项目执行彻底扫描,识别潜在的安全漏洞,并生成一份详细报告,其中突出显示了发现任何问题。 执行安全审核是识别和解决项目依赖项中漏洞的重要步骤。 npm audit fix 命令会自动解决检测到的漏洞,将不安全的包版本更新到最新的安全版本。 解决这些漏洞对于防止数据丢失、服务中断和未经授权访问敏感信息等潜在问题至关重要。

警告

执行 npm 审核会将package.json中指定的所有包的名称传输到公共注册表。

在本地运行 npm 审核

npm audit 可以在本地执行,而无需使用源进行身份验证。 这样,便可以扫描项目是否存在漏洞,并收到有关检测到的安全问题及其严重性的详细报告。

如果要修复检测到的漏洞,可以运行 npm audit fix,但必须使用源进行身份验证才能执行此操作。 此命令将不安全的包版本更新为可用的最新安全版本。

运行 npm 审核修补程序时,它不仅会更新本地项目的 package.jsonpackage-lock.json ,而且还将这些更改与关联的 Azure Artifacts 源同步。 包的新安全版本将自动在源中可用。

此同步可确保共享同一源的其他项目也受益于这些更新。 它有助于在所有项目中保持一致且安全的包版本集。

  1. 在项目目录中运行以下命令以执行 npm 审核:

    npm audit
    
  2. 如果要尝试升级到非易受攻击的包版本,请确保 先连接到源 ,然后在项目目录中运行以下命令:

    npm audit fix
    

运行 npm 审核修复后,请确保对应用程序执行彻底测试,以确认更新未引入任何中断性变更。 如果修补程序需要主版本更新,建议查看包的发行说明,了解任何潜在的中断性变更。 请记住,虽然具有公共易受攻击依赖项的专用包会收到漏洞警报,但它不会通过 npm 审核修复收到修补程序

注意

npm 审核 会在每次执行 npm 安装时自动运行,但它仅适用于公共包。

从管道运行 npm 审核

Azure Pipelines 目前 不支持 npm 审核。 如果尝试在管道中使用常规 npm 审核 命令,它将失败。 请改为使用 --registry 参数执行 npm 审核,并提供源的源 URL。

  1. 登录到 Azure DevOps 组织,并导航到你的项目。

  2. 选择 管道,选择管道,然后选择“ 编辑” 以对其进行修改。

  3. 从管道定义中 + ,选择要添加新任务的符号。

  4. 搜索 npm 任务,然后选择“添加”将其添加到管道。

  5. 输入任务的显示名称,然后从“命令”下拉菜单中选择自定义名称。

  6. 将自定义命令粘贴到 命令和参数 文本框中:

    1. 使用以下命令执行 npm 审核并扫描包漏洞。 将占位符替换为源的源 URL:

      audit --registry=<FEED_SOURCE_URL>
      
    2. 如果要尝试升级到非易受攻击的包版本,请使用以下命令。 将占位符替换为源的源 URL:

    audit fix --registry=<FEED_SOURCE_URL>
    

    A screenshot showing the npm audit task in a classic pipeline.