依存ライブラリスキャン

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

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

Lockfileのペーストスキャン

ブラウザにLockFileの内容をペーストしてスキャンする方法です。

登録されたLockFileに影響する脆弱性が公開されたタイミングでFutureVulsにて検知され、自動でタスク登録されユーザに通知されます。 依存ライブラリをバージョンアップしてLockFileの内容が更新された場合は、FutureVulsの画面上からLockFileの内容を更新してください。FutureVulsで検知済みタスクのステータスが「patch_applied」に自動更新されます。

ペーストスキャンでサポートするLockFileは以下の通りです。

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

LockFileをFutureVuls画面から登録する方法を説明します。

  • サーバを選択し、LOCKFILEのタブで追加をクリック

image

  • LockFileに名前を付け、種別を選択。LockFileの内容をペーストし、送信。

image

  • 次回スキャン時にソフトウェアの登録と脆弱性を検知します

image

ScannerでLockfileを指定したスキャン

サーバ上に配置されているLockfileのパスを指定して依存ライブラリの脆弱性をスキャンする方法です。

スキャン可能な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
Go go.sum
Rust Cargo.lock
.NET packages.lock.json

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

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

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"
lockfiles = [
  "/home/user/lockfiles/package-lock.json",
  "/home/user/lockfiles/Gemfile.lock",
  "/home/user/lockfiles/yarn.lock"
]

また、config.tomlでfindLock = trueを指定すると、スキャン対象サーバ上のLockFileを自動検索してスキャン可能です。

[servers]

[servers.sample]
user = "vuls-saas"
host = "localhost"
port = "local"
findLock = true
  • スキャン後のパッケージは、OSパッケージ同様、ソフトウェアとタスクに表示される image image

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に登録されていないライブラリ脆弱性は検知出来ません。また、登録対象のライブラリがさらに依存するライブラリも手動で登録する必要があります。