Auditing package dependencies for security vulnerabilities

About security audits

安全审核是对程序包依赖关系的安全漏洞的评估. 安全审核使您能够查找和修复依赖项中的已知漏洞,从而帮助您保护程序包的用户,这些漏洞可能导致数据丢失,服务中断,对敏感信息的未授权访问或其他问题.

Running a security audit with npm audit

注意: npm audit命令在[受电子邮件保护]中可用要升级,请运行npm install [email protected] -g .

npm audit命令将对程序包中配置的依赖项的描述提交给默认注册表,并要求提供已知漏洞的报告. npm audit检查直接依赖关系,devDependencies,bundledDependencies和optionalDependencies,但不检查peerDependencies.

使用npm install安装软件包时, npm audit自动运行. 您还可以在本地安装的软件包上手动运行npm audit ,以对该软件包进行安全审核,并生成依赖项漏洞和建议的修补程序(如果可用)的报告.

  1. 在命令行上,输入cd path/to/your-package-name并按Enter导航到您的软件包目录.
  2. 确保您的软件包包含package.jsonpackage-lock.json文件.
  3. 输入 npm audit并按Enter .
  4. 查看审核报告并运行建议的命令,或者在需要时进行进一步调查.

Resolving EAUDITNOPJSON and EAUDITNOLOCK errors

npm audit要求程序包具有package.jsonpackage-lock.json文件.

Reviewing and acting on the security audit report

运行npm audit将生成安全漏洞的报告,其中包括受影响的程序包名称,漏洞严重性和描述,路径以及其他信息,以及(如果有)应用修补程序来解决漏洞的命令. 有关审核报告中字段的更多信息,请参阅" 关于审核报告 "

Security vulnerabilities found with suggested updates

如果发现安全漏洞并且有可用的更新,则您可以:

command line vulnerability table with suggested fix

SEMVER warnings

If the recommended action is a potential breaking change (semantic version major change), it will be followed by a SEMVER WARNING that says “SEMVER WARNING: Recommended action is a potentially breaking change”. If the package with the vulnerability has changed its API, you may need to make additional changes to your package’s code.

Security vulnerabilities found requiring manual review

如果找到安全漏洞,但没有可用的修补程序,审核报告将提供有关该漏洞的信息,以便您可以进一步调查.

command line audit report requiring manual review

要解决该漏洞,您可以

Check for mitigating factors

查看"更多信息"字段中的安全建议,以缓解可能导致您在有限情况下继续使用带有漏洞的软件包的因素. 例如,仅当在特定操作系统上使用代码或调用特定功能时,该漏洞才可能存在.

Update dependent packages if a fix exists

如果存在修补程序,但尚未更新依赖于带有漏洞的软件包的软件包以包含固定版本,则您可能希望在从属软件包存储库中打开提取或合并请求以使用固定版本.

  1. 要查找必须更新的程序包,请在"路径"字段中查看带有漏洞的程序包的位置,然后检查依赖于该程序包的程序包. 例如,如果漏洞的路径是@package-name > dependent-package > package-with-vulnerability ,则需要更新dependent-package .
  2. npm公共注册表上 ,找到依赖包并导航到其存储库. 有关查找软件包的更多信息,请参见" 搜索并选择要下载的软件包 ".
  3. 在从属程序包存储库中,打开提取请求或合并请求,以将易受攻击的程序包的版本更新为带有修复程序的版本.
  4. 一旦合并拉取或合并请求并且已在npm公共注册表中更新了软件包,请使用npm update软件包的副本.

Fix the vulnerability

如果不存在修补程序,则可能需要在程序包存储库中的拉取或合并请求中提出针对程序包维护者的漏洞解决建议.

  1. 检查"路径"字段中漏洞的位置.
  2. npm公共注册表上 ,找到带有漏洞的软件包. 有关查找软件包的更多信息,请参见" 搜索并选择要下载的软件包 ".
  3. 在软件包存储库中,打开提取请求或合并请求以对软件包存储库进行修复.
  4. 合并修补程序并且在npm公共注册表中更新了软件包之后,请使用该修补程序更新依赖于软件包的软件包副本.

Open an issue in the package or dependent package issue tracker

如果您不想自己修复漏洞或自己更新相关程序包,请在程序包或相关程序包问题跟踪器中打开问题.

  1. npm公共注册表上 ,找到具有漏洞的程序包或需要更新的相关程序包. 有关查找软件包的更多信息,请参见" 搜索并选择要下载的软件包 ".
  2. 在程序包或从属程序包问题跟踪器中,打开一个问题并包括审核报告中的信息,包括"更多信息"字段中的漏洞报告.

No security vulnerabilities found

如果未找到安全漏洞,则意味着在程序包依赖关系树中未找到具有已知漏洞的程序包. 由于可以随时更新咨询数据库,因此建议您定期手动运行npm audit ,或将npm audit添加到您的持续集成过程中.

command line audit report no vulnerabilities found

Turning off npm audit on package installation

Installing a single package

要在安装单个软件包时关闭npm audit ,请使用--no-audit标志:

npm install example-package-name --no-audit

有关更多信息,请参见npm-install命令 .

Installing all packages

要在安装所有软件包时关闭npm audit ,请在用户和全局npmrc配置文件中将audit设置设置为false

npm set audit false

有关更多信息,请参阅npm-config管理命令npm-config审计设置 .


< About audit reports | About package PGP signatures >

by  ICOPY.SITE