JavaScript
Node.js
セキュリティ
脆弱性
CVSS

CVSSv3 用の node.js モジュールを作ってみた

More than 3 years have passed since last update.

とりあえず基本評価基準(Base Metrics)のみ実装。続きは後日。


インストールと実行

cvss3 の中身は単純なロジックのみなので特に依存パッケージはない。

C:>npm install cvss3

cvss3@0.0.1 node_modules\cvss3

動作確認用のコードはこんな感じ。


app.js

var cvss3 = require('cvss3');

var vector_cve_2013_1937 = "AV:N/AC:L/PR:N/UI:R/S:C/C:L/I:L/A:N";
var base = (new cvss3.BaseMetrics()).importVector(vector_cve_2013_1937);
console.log('CVE-2013-1937 : Vector : '+base.getVector());
console.log(' Score : '+base.getScore());


これを実行してこんな感じの結果が出れば OK。

C:>node app.js

CVE-2013-1937 : Vector : AV:N/AC:L/PR:N/UI:R/S:C/C:L/I:L/A:N
Score : 6.1


参考にしたもの

いやぁ, node.js は他人様のを利用するばっかりで自分で書くことはほとんどないので,けっこう時間がかかってしまった。

以下,参考にしたもの。


行儀のよいコード?

モジュールの書き方には色々作法があるようで,今回は上記リンクの記事を参考にした。ただし, node.js 以外の環境ではまだ試していない。最低でもブラウザでクライアント側でちゃんと動作するかは確認する予定。


テストを書く

mochashould でテスト・コードが書けるようだ。

mocha では色々なことができるみたいだが,今回はロジックしかないのでごく簡単な機能のみ使っている。

C:>npm install -g mocha

C:\Users\username\AppData\Roaming\npm\_mocha -> C:\Users\username\AppData\Roaming\npm\node_modules\mocha\bin\_mocha
C:\Users\username\AppData\Roaming\npm\mocha -> C:\Users\username\AppData\Roaming\npm\node_modules\mocha\bin\mocha
mocha@2.2.5 C:\Users\username\AppData\Roaming\npm\node_modules\mocha
├── escape-string-regexp@1.0.2
├── growl@1.8.1
├── commander@2.3.0
├── supports-color@1.2.1
├── diff@1.4.0
├── jade@0.26.3 (commander@0.6.1, mkdirp@0.3.0)
├── debug@2.0.0 (ms@0.6.2)
├── mkdirp@0.5.0 (minimist@0.0.8)
└── glob@3.2.3 (inherits@2.0.1, graceful-fs@2.0.3, minimatch@0.2.14)

C:>npm install should --save-dev
should@7.0.2 node_modules\should
├── should-type@0.2.0
├── should-equal@0.5.0
└── should-format@0.3.0

C:>mocha --reporter list

Travis CI と組み合わせるには以下のページが参考になる。まぁ package.json さえちゃんと書いておけば特にハマるところはない。


npm に publish する

npm に publish には npm のアカウントを作る必要がある。アカウントを作ったら npm コマンドでアカウント情報を登録する。

C:>npm adduser

Username: username
Password:
Email: (this IS public) username@example.com

以後の作業は以下のページを参考にした。

まぁ package.json さえちゃんと書いておけば...


ライセンス

そうそう,ライセンスだけど,例によって CC0 にした(最近書いてるコードはほぼ CC0 で公開している)。 CVSS のロジックをどうやって実装するか,その実証コードみたいなものなので,権利は特に主張しません。利用したいという奇特な方がいらっしゃるならご自由にどうぞ。

package.json で記述できるライセンスは以下が参考になる。


参考