9
4

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

CircleCIを用いたnpm パッケージの脆弱性検知システムの構築

Last updated at Posted at 2016-09-14

CircleCIを用いたnpm パッケージの脆弱性検知システムの構築

やったこと

  • circle-ci 実行時に、nsp を実行させて、脆弱性が含まれるパッケージの検知が行えるようにした。
  • つまりは、継続的に脆弱性監視しましょう ということ。

nsp とは?

Node Security Platform | Home
Node に関するセキュリティ関連の情報が集約されている他、そのチェックツールも提供されている。

その中で、Free Tool として用意されている Node Security Platform | Tools を 利用して、今回は、Circle-CI 上に組み込むだけ。

gulpのスクリプトとしても、実行できるようになっているので、他のbuildと一緒に実行すること可能ですね。

サンプル

  • 成功した例
circleci_success_img.png
> gulp nsp
[11:26:47] Requiring external module babel-register
[11:26:51] Using gulpfile ~/hogemoge/gulpfile.babel.js
[11:26:51] Starting 'nsp'...
[11:26:56] (+) No known vulnerabilities found
[11:26:56] Finished 'nsp' after 5.85 s
  • 失敗した例
circleci_error.png
npm run test
> gulp-nsp@2.4.2 test /home/ubuntu/gulp-nsp
> gulp nsp
[12:59:59] Using gulpfile ~/gulp-nsp/gulpfile.js
[12:59:59] Starting 'nsp'...
[13:00:00] 'nsp' errored after 741 ms
[13:00:00] Error in plugin 'gulp-nsp'
Message:
    (+) 2 vulnerabilities found
┌───────────────┬───────────────────────────────────────────────────────┐
│               │ ReDoS via long string of semicolons                   │
├───────────────┼───────────────────────────────────────────────────────┤
│ Name          │ tough-cookie                                          │
├───────────────┼───────────────────────────────────────────────────────┤
│ Installed     │ 2.2.2                                                 │
├───────────────┼───────────────────────────────────────────────────────┤
│ Vulnerable    │ >=0.9.7 <=2.2.2                                       │
├───────────────┼───────────────────────────────────────────────────────┤
│ Patched       │ >=2.3.0                                               │
├───────────────┼───────────────────────────────────────────────────────┤
│ Path          │ gulp-nsp@2.4.2 > nsp@2.3.0 > nodesecurity-npm-utils@… │
├───────────────┼───────────────────────────────────────────────────────┤
│ More Info     │ https://nodesecurity.io/advisories/130                │
└───────────────┴───────────────────────────────────────────────────────┘
┌───────────────┬───────────────────────────────────────────────────────┐
│               │ Regular Expression Denial of Service                  │
├───────────────┼───────────────────────────────────────────────────────┤
│ Name          │ minimatch                                             │
├───────────────┼───────────────────────────────────────────────────────┤
│ Installed     │ 3.0.0                                                 │
├───────────────┼───────────────────────────────────────────────────────┤
│ Vulnerable    │ <=3.0.1                                               │
├───────────────┼───────────────────────────────────────────────────────┤
│ Patched       │ >=3.0.2                                               │
├───────────────┼───────────────────────────────────────────────────────┤
│ Path          │ gulp-nsp@2.4.2 > nsp@2.3.0 > nodesecurity-npm-utils@… │
├───────────────┼───────────────────────────────────────────────────────┤
│ More Info     │ https://nodesecurity.io/advisories/118                │
└───────────────┴───────────────────────────────────────────────────────┘
npm run test returned exit code 1

まとめ

そもそも脆弱性チェック自体は、検知するための仕組みを導入するところから大変だったりするので、cd上のpipelineに組み込んでciでチェックするのと、
脆弱性チェックを定期的にまわして、cdが走らないタイミングでも検知できる仕組みづくるにも、今回の有効かと思います。

その他

Node Security Platform | Home
有料 ( 月$1 / rep ) で、github 連携したプランもあるが、ciサービスに組み込めれば、月額課金しなくても同要件はカバーできるかと思います。

9
4
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
9
4

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?