依存ライブラリスキャン

アプリケーションの依存ライブラリ

FutureVulsでは、OSのパッケージだけではなくアプリケーションの依存ライブラリの脆弱性を検知、管理する機能があります。検知方法はいくつかあり、それぞれスキャン精度の違いやメリット、デメリットがありますので実際に試した上で選択されることをおすすめします。

GitHub Security Alerts連携

GitHubには標準機能として依存ライブラリの脆弱性検知機能であるGitHub Security Alertsが搭載されています。FutureVulsではGitHubとAPI連携し、GitHubにて検知された、依存ライブラリの脆弱性をFutureVulsに取り込むことが出来ます。ソースコードをGitHubで管理してない場合でも、LockfileのみをGitHub上で管理することにより、GitHubにて脆弱性検知が可能となります。

特徴としては、対応言語、パッケージエコシステムが豊富である(Javaに対応している)点がメリットと言えます。ただ、社内レポジトリにてアプリケーションを管理している場合は、継続的にLockfileをGitHubにpushして同期する必要があります。

FutureVulsの画面上でCPEを登録する方法

FutureVuls画面上からCPEを登録してライブラリの脆弱性スキャンをする方法です。CPEを用いたスキャンの情報ソースがNVDとJVNですので、NVD, JVNに登録されていないライブラリ脆弱性は検知出来ません。

Lockfileを指定したスキャン方法

2020年7月3日のリリースにて、サーバ上に配置されているLockfileのパスを指定して依存ライブラリの脆弱性をスキャンすることが可能となりました。

2020年7月3日時点でスキャン可能なLockfileは以下の通りです。(JavaはGitHub Security Alerts連携をご利用下さい)

Lang lockfile
Ruby Gemfile.lock
Python Pipfile.lock, poetry.lock
PHP composer.lock
Node.js package-lock.json, yarn.lock
Rust Cargo.lock

本機能はローカルスキャンモード、リモートスキャンモードの両方に対応しています。

ローカルスキャンモードの動作

config.tomlに、スキャン対象のLockFileのパスを指定します。scan時に指定されたパスのLockfileを解析し依存ライブラリのリストを取得します。

lockfile-local

リモートスキャンモードの動作

config.tomlに、スキャン対象サーバ上のLockFileのパスを指定します。scan時にSSHで接続したリモートサーバの指定したパスのLockfileを解析し、依存ライブラリのリストを取得します。

lockfile-remote

設定方法

/opt/vuls-saas/config.tomlにlockfileのパスを指定して下さい。

[servers]

[servers.sample]
user = "vuls-saas"
host = "localhost"
port = "local"
findLock = true # auto detect lockfile
lockfiles = [
  "/home/user/lockfiles/package-lock.json",
  "/home/user/lockfiles/Gemfile.lock",
  "/home/user/lockfiles/yarn.lock"
]
  • スキャン後のパッケージは、OSパッケージ同様、ソフトウェアとタスクに表示される image image