2021-06-18 リリース内容

アプリケーション依存ライブラリスキャンの強化

go.sumをサポート

Go言語アプリケーションの脆弱性検知に対応しました。

LockFileのペーストスキャンに対応

FutureVulsでは複数の方法でアプリケーション依存ライブラリの脆弱性検知が可能ですが、新たにブラウザにLockFileの内容をペーストしてスキャン可能になりました。

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

2021年6月18日時点でペーストスキャンがサポートする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を登録する方法を説明します。

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

image

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

image

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

image

またこれまで通り、スキャン対象サーバ上の config.toml に、サーバ上のlockfileのパスを指定してのスキャンも行えます。

アプリケーション依存ライブラリの検知性能検証

FutureVulsにはアプリケーション依存ライブラリの脆弱性検知の方法が複数存在しますが、下記の理由で複数の方法を併用することをおすすめします。

参考までに、Lockfileペーストスキャンと、GitHub Security Alerts連携の検知数を比較してみました。

※ 2021年6月17日時点のデータです。検証に使ったLockfileのURLも掲載します。

Lang スキャンしたLockFile ペーストスキャン検知数 GitHub Security Alerts検知数
Rust Cargo.lock 2 未サポート
PHP composer.lock 10 3
Ruby Gemfile.lock 54 16
Node.js package-lock.json 25 12
Node.js yarn.lock 38 26
Python Pipfile 14 3
Go go.sum 18 未サポート

2021/6/17時点での上記のLockfileの検知数を見るとGitHub Security AlertsよりもLockFileペーストスキャンの方が多く検知することを確認できました。

ただし、この結果は以下の条件に依存するため、ユーザ各自で実際に試して検討されることをおすすめします。

  • 検知処理を実施した時点の脆弱性DBの内容
  • Lockfileの内容

Cloud One連携の強化

Trend Micro Cloud One Workload Security連携を強化しました。 FutureVulsで検知した脆弱性に対応するCloud One侵入防御ルールが存在する場合は Available ステータスのアイコンが表示されます。

高リスクな脆弱性を検知したが、すぐにはアップデートできない状況。一時的な回避策として、Cloud Oneに該当する脆弱性の侵入防御ルールが存在するかを確認したいケースで便利な機能です。

image

Availableステータスは「グループ設定>Cloud One外部連携」が未設定でもデフォルトで表示されます。また侵入防御ルール有無の情報はFutureVulsサービス側で数時間に一度の間隔で同期されます。

  • 実際に適用中の侵入防御ルールのステータス表示
  • 防御済みのCVE-IDは自動で「WorkAround」タスクステータスに変更する
  • 侵入防御ルール最適化機能

など、さらに高度に連携する場合は、グループ設定>Cloud One連携を設定してください。

CPEスキャンの強化

CPEスキャン機能は「FutureVuls画面上から登録したCPE」に該当する脆弱性をNVDから検知します。主にOSパッケージ以外の脆弱性検知に利用できます。

これまではCPEの下記の項目のみで比較していました。

  • 種別
  • ベンダ
  • プロダクト
  • バージョン

今回のリリース以降、他の項目も用いて検知するように変更したため、より正確に検知できるようになりました。

CVE-2017-3160を例に具体的に説明します。 上記NVDのページ下部の「Known Affected Software Configurations」(影響を受けるCPE)には cpe:/a:apache:cordova:::~~~android~~ Up to 6.1.2 が指定されています。 これは CVE-2018-3160apacheのcordovaの6.1.2未満のandroid向けプラットフォーム版 が影響を受ける、という意味です。

FutureVulsに cpe:/a:apache:cordova:5.1.1::~~~iphone_os~~ を登録しCPEスキャンするケースを考えます。 これまでの検知ロジックでは cpe:/a:apache:cordova:5.1.1 までを見て a=a && apache == apache && cordova == cordova && 5.1.1 < 6.1.2 が成立するため上記のCVE-2017-3160が誤検知されていました。 今回のリリース以降はバージョン以外の項目で指定されている iphone_os も比較条件に加わったことで androidiphone_os の部分がマッチしなくなり、この例のような誤検知が解消されます。

REST APIの強化

REST APIにPASTEサーバの作成・更新機能が追加されました。 curl などを用いて、PASTEサーバを作成・更新いただけます。 詳細は、REST APIマニュアルをご確認ください。

サーバ登録方法の集約と整理

「コンテナイメージ追加」や「擬似サーバ追加」はサーバ一覧から、サーバにスキャナをインストールし脆弱性検知する場合はグループ設定画面の「スキャナ」とサーバ登録の方法が散らばっていました。

今回のアップデートでサーバ一覧に「サーバ追加」ボタンとしてまとめ、サーバの登録方法を一覧化しました。

image

各種サーバの登録方法と追加ボタンを設置し、「?」マークからヘルプページへ移動できます。

image

その他

いくつかのバグを修正しました。