run npm audit fix to fix them, or npm audit for details
npm
升級到 @6
以後, 在專案中更新或者下載新的依賴包, 控制檯會自動執行 npm audit
, 對專案依賴包進行安全稽核,並生成漏洞報告在控制檯中顯示:
added 1864 packages from 947 contributors and audited 29947 packages in 218.903s
found 395 vulnerabilities (350 low, 42 moderate, 3 high)
run `npm audit fix` to fix them, or `npm audit` for details
複製程式碼
我們可以通過漏洞報告的提示資訊來修補程式漏洞:
# 執行 npm audit fix
# 此命令將自動更新有安全漏洞的依賴項
npm audit fix
# 執行結果
# 載入了30個依賴包
# 刪除了7個依賴包
# 更新了38個依賴包
# 移動了1個依賴包
# 修正了29947個掃描包中395個漏洞中的298個
+ babel-plugin-transform-es2015-modules-commonjs@6.26.2
+ babel-plugin-dynamic-import-node@1.2.0
+ express@4.16.3
+ antd@3.6.3
+ babel-cli@6.26.0
+ babel-preset-env@1.7.0
+ babel-core@6.26.3
+ compression@1.7.2
+ lodash@4.17.10
added 30 packages from 49 contributors, removed 7 packages, updated 38 packages and moved 1 package in 29.292s
fixed 298 of 395 vulnerabilities in 29947 scanned packages
7 package updates for 97 vulns involved breaking changes
(use `npm audit fix --force` to install breaking changes; or do it by hand)
複製程式碼
通過提示系統自動修補了大部分漏洞, 那剩下的怎麼辦呢?
# 繼續執行控制檯給的提示命令
npm audit fix --force
# 執行結果
# 載入了33依賴包
# 刪除了17個依賴包
# 更新了8個依賴包
# 修正了29771個掃描包中16個漏洞
added 33 packages from 68 contributors, removed 17 packages and updated 8 packages in 171.584s
fixed 16 of 16 vulnerabilities in 29771 scanned packages
4 package updates for 14 vulns involved breaking changes
(installed due to `--force` option)
複製程式碼
目前為止我們執行了2個命令來修復漏洞, 那手動執行 npm audit
看看目前依賴包還有什麼問題;
...
...
┌───────────────┬──────────────────────────────────────────────────────────────┐
│ Moderate │ Memory Exposure │
├───────────────┼──────────────────────────────────────────────────────────────┤
│ Package │ tunnel-agent │
├───────────────┼──────────────────────────────────────────────────────────────┤
│ Patched in │ >=0.6.0 │
├───────────────┼──────────────────────────────────────────────────────────────┤
│ Dependency of │ image-webpack-loader [dev] │
├───────────────┼──────────────────────────────────────────────────────────────┤
│ Path │ image-webpack-loader > imagemin-webp > cwebp-bin > │
│ │ bin-wrapper > download > caw > tunnel-agent │
├───────────────┼──────────────────────────────────────────────────────────────┤
│ More info │ https://nodesecurity.io/advisories/598 │
└───────────────┴──────────────────────────────────────────────────────────────┘
found 9 moderate severity vulnerabilities in 32545 scanned packages
9 vulnerabilities require manual review. See the full report for details.
# 在32545個掃描包中發現了9箇中度嚴重缺陷
# 漏洞需要手動檢查. 詳情請參閱完整報告.
複製程式碼
上面詳細資訊表述了 tunnel-agent
出現的問題,並且 指出了依賴路徑
image-webpack-loader > imagemin-webp > cwebp-bin > bin-wrapper > download > caw > tunnel-agent
複製程式碼
訪問提示連結https://nodesecurity.io/advisories/598
裡面給出瞭解決方案
Remediation
tunnel-agent Update to version 0.6.0 or later.
複製程式碼
結語
現在安全問題是不容忽視的, npm
安裝的依賴包錯中複雜. 往往安裝一個包, 會自動安裝一大堆相關聯的依賴包, 這個時候開發者是不易察覺的; 就算開發者有安全意識, 但是也缺乏解決安全漏洞的手段.
npm@6
自帶的 npm audit
也是幫助開發者解決基本的安全漏洞問題; 但是最終希望的是 npm
能不能瘦瘦身!
參考
About security audits #https://docs.npmjs.com/getting-started/running-a-security-audit
about-audit-reports #https://docs.npmjs.com/getting-started/about-audit-reports