Upgrade to Pro — share decks privately, control downloads, hide ads and more …

npm Security ー サプライチェーン攻撃の観点から ー

okuken
March 28, 2022

npm Security ー サプライチェーン攻撃の観点から ー

okuken

March 28, 2022
Tweet

More Decks by okuken

Other Decks in Programming

Transcript

  1. https://cheatsheetseries.owasp.org/cheatsheets/NPM_Security_Cheat_Sheet.html  利用者視点でサプライチェーン攻撃対策を検討する際に関連する項目:   ・2) Enforce the lockfile      - 依存パッケージのバージョン固定のために lock ファイルが必ず効くようにする

          (npm install ではなく npm ci を使う)   ・3) Minimize attack surfaces by ignoring run-scripts      - パッケージのインストール時にスクリプトフックが動作しないようにする       (--ignore-scripts オプションを指定する、あるいは .npmrc に ignore-scripts を追記する)      - アップグレード前に、当該パッケージの健全性・信頼性の再確認、差分の確認を行う      - 新バージョンリリース後すぐのアップグレードは控える(様子見する)   ・4) Assess npm project health   ・5) Audit for vulnerabilities in open source dependencies   ・6) Use a local npm proxy NPM Security best practices - OWASP Cheat Sheet Series
  2. (補足) npm install と npm ci の差異 package.json package-lock.json npm

    install npm ci version (vue) ^3.00 (なし) 3.2.31 (ERR) ^3.00 3.0.0 3.0.0 3.0.0 ^3.00 2.6.11 3.2.31 (ERR) 3.0.0 3.2.31 3.0.0 (ERR) ※ npm 8.5.4 での 2022/3/26 時点の動作検証結果 ※ バージョン指定記法の詳細は下記参照   https://docs.npmjs.com/cli/v8/configuring-npm/package-json#dependencies   https://github.com/npm/node-semver#versions ※ 推移的依存パッケージのバージョンも固定したい場合は、package.json にて overrides を設定する   https://docs.npmjs.com/cli/v8/configuring-npm/package-json#overrides
  3. 4. 参考資料 ▪ CVE-2022-23812 (node-ipc)  ・https://nvd.nist.gov/vuln/detail/CVE-2022-23812  ・https://qiita.com/SnykSec/items/6e75bd78b4deb3371550  ・https://zenn.dev/azu/articles/e248ed86fb6d34 ▪ CVE-2021-23567

    (colors)  ・https://nvd.nist.gov/vuln/detail/CVE-2021-23567  ・https://qiita.com/SnykSec/items/23bcd8dc873239d2bece ▪ Embedded Malicious Code (UAParser.js)  ・https://security.snyk.io/vuln/SNYK-JS-UAPARSERJS-1766952  ・https://gigazine.net/news/20211025-npm-library-hijacked-password-stealers-miners/ ▪ npm Security  ・https://cheatsheetseries.owasp.org/cheatsheets/NPM_Security_Cheat_Sheet.html  ・https://snyk.io/blog/ten-npm-security-best-practices/