关于安全审核
安全审核是对安全漏洞的包依赖性的评估。安全审核通过使您能够查找和修复可能导致数据丢失,服务中断,未经授权访问敏感信息或其他问题的已知漏洞,帮助您保护软件包的用户。
运行安全审计
npm audit
注意:该
npm audit
命令在npm @ 6中可用。要升级,请运行
npm installnpm@latest
-g
。
该
npm audit
命令将包中配置的依赖关系的描述提交到默认注册表,并要求提供已知漏洞的报告。
npm audit
检查直接依赖项,
devDependencies
,
bundledDependencies
和
optionalDependencies
,但不检查
peerDependencies
。
npm audit
安装包时自动运行
npm install
。您还
npm audit
可以在本地安装的软件包上手动运行以对软件包进行安全审核,并生成依赖性漏洞的报告,如果可用,还会生成建议的修补程序。
-
在命令行上,键入
cd path/to/your-package-name
并按 Enter键 导航到包目录。 -
确保您的包中包含
package.json
和package-lock.json
文件。 -
键入
npm audit
,然后按 Enter键 。 - 查看审核报告并运行推荐的命令,或在需要时进一步调查。
解决
EAUDITNOPJSON
和
EAUDITNOLOCK
错误
npm audit
需要包
package.json
和
package-lock.json
文件。
-
如果出现
EAUDITNOPJSON
错误,请package.json
按照“ 使用package.json
”中的步骤创建文件。 -
如果出现
EAUDITNOLOCK
错误,请确保您的包有package.json
文件,然后通过运行创建包锁文件npm i --package-lock-only
。
审查并处理安全审计报告
运行
npm audit
将生成安全漏洞报告,其中包含受影响的程序包名称,漏洞严重性和描述,路径以及其他信息,以及应用修补程序以解决漏洞的命令(如果有)。有关审计报告中字段的详细信息,请参阅“ 关于审计报告 ”
建议更新时发现安全漏洞
如果发现安全漏洞并且有可用更新,您可以:
-
运行
npm audit fix
子命令以自动为易受攻击的依赖项安装兼容的更新。 - 分别运行推荐的命令以安装易受攻击的依赖项的更新。(某些更新可能是破坏性更改;有关详细信息,请参阅“ SEMVER警告 ”。)
SEMVER警告
如果建议的操作是潜在的突破性更改(语义版本主要更改),则会出现 SEMVER WARNING 。如果包含漏洞的软件包更改了其API,则可能需要对软件包的代码进行其他更改。
发现需要手动审查的安全漏洞
如果发现安全漏洞,但没有可用的修补程序,审计报告将提供有关漏洞的信息,以便您进一步调查。
要解决此漏洞,您可以
- 检查缓解因素
- 如果存在修复,则更新相关包
- 修复漏洞
- 打开包或从属包问题跟踪器中的问题
检查缓解因素
查看“更多信息”字段中的安全公告,了解可能允许您在有限情况下继续使用包含漏洞的缓解因素。例如,只有在特定操作系统上使用代码或调用特定函数时,漏洞才可能存在。
如果存在修复,则更新相关包
如果存在修复程序,但依赖于具有漏洞的程序包的程序包尚未更新以包含固定版本,则可能需要在依赖程序包存储库上打开pull或merge请求以使用固定版本。
-
要查找必须更新的软件包,请在“路径”字段中查看包含漏洞的软件包的位置,然后检查依赖于该软件包的软件包。例如,如果是漏洞的路径
@package-name > dependent-package > package-with-vulnerability
,则需要更新dependent-package
。 - 在npm公共注册表上,找到依赖包并导航到其存储库。有关查找包的详细信息,请参阅“ 如何查找和选择包 ”。
- 在依赖包存储库中,打开拉取或合并请求以将易受攻击的包的版本更新为具有修复的版本。
-
一旦合并了pull或merge请求并且已在npm公共注册表中更新了包,请使用更新包的副本
npm update
。
修复漏洞
如果修复程序不存在,您可能需要在程序包存储库上的pull或merge请求中建议更改以解决程序包维护者的漏洞。
- 检查“路径”字段以获取漏洞的位置。
- 在npm公共注册表中,找到包含此漏洞的软件包。有关查找包的详细信息,请参阅“ 如何查找和选择包 ”。
- 在包存储库中,打开pull或merge请求以在包存储库上进行修复。
- 合并修复程序并在npm公共注册表中更新程序包后,请更新依赖于修复程序包的程序包副本。
打开包或从属包问题跟踪器中的问题
如果您不想自行修复漏洞或更新相关软件包,请在软件包或相关软件包问题跟踪器中打开一个问题。
- 在npm公共注册表中,找到包含漏洞的程序包或需要更新的依赖程序包。有关查找包的详细信息,请参阅“ 如何查找和选择包 ”。
- 在程序包或从属程序包问题跟踪程序中,打开问题并包括审计报告中的信息,包括“更多信息”字段中的漏洞报告。
未发现任何安全漏洞
如果未发现任何安全漏洞,则表示在包依赖关系树中找不到具有已知漏洞的软件包。由于咨询数据库可以随时更新,我们建议您定期
npm audit
手动运行,或者添加
npm audit
到持续集成过程中。
关闭
npm audit
包安装
安装单个包
要
npm audit
在安装单个程序包时关闭,请使用以下
--no-audit
标志:
npm install example-package-name --no-audit
有关更多信息,请参阅npm-install命令。
安装所有包
要
npm audit
在安装所有软件包时关闭,请在用户和全局npmrc配置文件中将
audit
设置设置为
false
:
npm set audit false
有关更多信息,请参阅npm-config管理命令和npm-config审计设置。
本文档系腾讯云开发者社区成员共同维护,如有问题请联系 cloudcommunity@tencent.com