npm@6 安全稽核

凡亊發表於2019-03-02

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

原文

run npm audit fix to fix them, or npm audit for details #23

相關文章