バージョンに既知の脆弱性があるかどうかを確認するには?

依存しているランタイム、サーバー、ライブラリには、時間の経過とともにセキュリティ修正が提供されます。使用中のバージョンが、公開されたセキュリティ勧告で影響を受けるバージョンとして指定されている場合もあります。セキュリティ勧告は、GitHub、Python と Go のセキュリティチーム、RustSec、Bitnami など、多数のデータベースに分散しています。Google が運営する Open Source Vulnerabilities プロジェクトの OSV.dev は、これらを共通の形式で集約し、指定したバージョンに影響するセキュリティ勧告を検索します。

ツールの説明

エコシステムを選択し、名前と正確なバージョンを入力して、「バージョンを確認」を押します。Node.js、PHP、PostgreSQL、lodash、Django などの一般的なランタイムやパッケージの場合は、代わりに「クイック選択」から選ぶと、エコシステムと名前が自動入力されます。指定したバージョンに影響する既知の脆弱性が、深刻度の高い順にすべて表示されます。各脆弱性には次の情報が含まれます。

  • ID(osv.dev のページへのリンク)と、存在する場合は CVE ID
  • セキュリティ勧告で評価された深刻度:緊急、高、中、低
  • 修正済みバージョン:セキュリティ勧告から読み取った、指定バージョンより上で最も低い修正済みバージョン
  • 簡単な概要

GitHub のセキュリティ勧告と Python データベースに収録されたその複製のように、複数のデータベースが同じ問題を記載している場合は、1 件の脆弱性として表示されます。

この確認は当社のサーバー上で実行され、OSV.dev の公開 API に問い合わせます。送信されるのはエコシステム、名前、バージョンのみです。

Rapid Tool Set MCP サーバーに接続された AI アシスタントでも、vulnerable_version_checker を使って同じ確認を実行できます。

対応エコシステム

エコシステム 対象 名前の例
ランタイムとサーバー、Bitnami ランタイム、Web サーバー、データベースサーバー、アプリ node(Node.js)、php、python、nginx、mariadb
npm JavaScript パッケージ lodash、express
PyPI Python パッケージ django、requests
Packagist Composer でインストールする PHP パッケージ laravel/framework、symfony/http-kernel
Maven Java パッケージ(グループ:アーティファクト形式) org.apache.logging.log4j:log4j-core
NuGet .NET パッケージ Newtonsoft.Json
Go モジュールパスで指定する Go モジュール github.com/gin-gonic/gin
crates.io Rust クレート tokio
RubyGems Ruby gem actionpack、nokogiri
Pub Dart と Flutter のパッケージ http
Hex Erlang と Elixir のパッケージ phoenix、plug
CRAN R パッケージ commonmark

ランタイムとサーバーには Bitnami の名前が使用されます。Node.js は node(nodejs も使用可能)、PostgreSQL は postgresql、Apache HTTP Server は apache です。

制限事項

  • バージョンは、18.0.0 や 4.17.15 のように、各エコシステムで使われている正確な表記で入力する必要があります。名前の入力ミスや存在しないバージョンの場合は、既知の脆弱性がないバージョンと同様に、何も見つかりません。
  • 対象となるのは公開済みのセキュリティ勧告のみです。脆弱性が記載されていないバージョンにも、まだ報告されていない欠陥が存在する可能性があります。
  • 深刻度が評価されていないセキュリティ勧告もあります。その場合は「評価なし」と表示されます。
  • 修正済みバージョンは、セキュリティ勧告に記載されたバージョン範囲から読み取られます。より新しいバージョンにも独自の脆弱性がある可能性があるため、アップグレード先のバージョンも確認してください。