如何检查npm包的安全漏洞


本文作者: jsweibo

本文链接: https://jsweibo.github.io/2019/04/25/%E5%A6%82%E4%BD%95%E6%A3%80%E6%9F%A5npm%E5%8C%85%E7%9A%84%E5%AE%89%E5%85%A8%E6%BC%8F%E6%B4%9E/

摘要

本文主要讲述了:

  1. npm 包的安全漏洞等级
  2. 检查漏洞
  3. 修复漏洞
  4. 提交漏洞报告

正文

npm 包的数量非常巨大,因为开发者的水平差异,难免存在大大小小的安全漏洞。

作为开发者,定期检查项目依赖包中存在的安全漏洞并及时升级修复版依赖是非常必要的。

npm 包的漏洞等级

漏洞严重性从高到底排序:

  1. Critical(危急) 需要立即修复
  2. High(高) 尽可能快地修复
  3. Moderate(适中) 时间允许就修复
  4. Low(低) 随你自己什么时候修复

检查漏洞

在包里运行如下的命令可以检查漏洞。

1
2
3
#!/usr/bin/env bash

npm audit

示例:

jquery@1.12.4存在 XSS 漏洞,下面我们用这个例子来体验一下npm audit命令。

1
2
3
4
5
6
7
8
9
10
#!/usr/bin/env bash

# 创建并进入目录
mkdir learn_npm && cd learn_npm
# 新建package.json
npm init --yes
# 安装1.12.4版本的jquery
npm install jquery@1.12.4
# 审计
npm audit

修复漏洞

修复漏洞的方法就是升级依赖版本。根据新版本是否向后兼容,分为两种方式:

升级到向后兼容的新版本依赖

在包里运行如下的命令可以自动下载安装向后兼容的新版本依赖。

1
2
3
#!/usr/bin/env bash

npm audit fix

升级到不向后兼容的新版本依赖

如果依赖开发者已经不愿维护旧版本,但在不向后兼容的新版本中修复了漏洞,此时我们也可以选择升级。

注意:升级到不向后兼容的新版本时要特别小心,这意味着必须修改方法的调用方式。

1
2
3
#!/usr/bin/env bash

npm audit fix --force

提交漏洞报告

实际上,漏洞并不是由 npm 检查出来的,npm 只是提供了一个反馈的平台而已。

漏洞信息是全世界各地的开发者发现并反馈到 npm 平台的。

npm audit所做的工作,只是检查项目中使用的依赖包是否存在漏洞反馈。如果有,发出警告。

换言之,一个没有漏洞反馈的依赖包,并不意味着绝对安全,可能只是没有人发现或反馈而已。

漏洞反馈地址

参考资料

本文作者: jsweibo

本文链接: https://jsweibo.github.io/2019/04/25/%E5%A6%82%E4%BD%95%E6%A3%80%E6%9F%A5npm%E5%8C%85%E7%9A%84%E5%AE%89%E5%85%A8%E6%BC%8F%E6%B4%9E/


本文对你有帮助?请支持我


支付宝
微信