Linux OSパッケージスキャン

2021年10月現在、Linuxのパッケージマネージャ管理下のソフトウェアの脆弱性は以下の方法で可能です。

  • Vulsスキャン
  • trivyスキャン(Dockerイメージ)
  • ペーストスキャン

それぞれの特徴を説明します。

Vulsスキャン

Vulsのスキャナ経由でスキャンし構成情報をクラウドサービスにアップロードする方法です。 スキャン対象は対応環境を参照してください。

コンテナスキャン

コンテナレジストリにあるイメージは、trivyを用いて検知し、FutureVulsにアップロードする方法がおすすめです。CI/CDパイプラインに組み込みも可能です。 スキャン対象は対応環境を参照してください。

クラウドサービスのコンテナレジストリと連携する方法も用意しています。こちらはAWS・GCPのDockerRegistryに対応しています。 スキャン対象は対応環境を参照してください。

ペーストスキャン

ペーストスキャンは、スキャナの導入が難しい環境の脆弱性管理が可能です。

  • インターネットから隔離された閉域環境
  • 外部SaaSへのアップロードが禁止された環境
  • スキャナプログラムをサーバ上に配置できない環境

サーバ上で構成情報を取得するいくつかのコマンドを実行し、コマンドの実行結果をFutureVuls画面上にコピーペーストするだけで登録完了です。

ペーストスキャンの登録方法

構成情報の登録〰脆弱性スキャン実施までのステップを説明します。

  • サーバ > サーバ追加 > PASTEサーバ追加
  • サーバ名を入力
  • OSの種類を選択
  • OSのバージョン情報をペースト
  • 実行中のカーネルリリースの情報をペースト
  • インストールされたパッケージリストをペースト
  • サーバ詳細画面の「手動スキャン」をクリック

スキャン対象は対応環境を参照してください。

PASTEサーバ追加 PASTEサーバ追加ボタン

サーバ名・OSの種類などを入力・ペースト image

インストールされたパッケージリストをペースト image

登録後は画面上から手動スキャンをクリックすると脆弱性を検知できます。

パッケージアップデートによるペーストサーバの更新

該当サーバのパッケージをアップデートして構成情報を変更した場合は、サーバ詳細画面内のサーバ情報 > 編集 ボタンから更新してください。 次回のスキャンでは、更新された構成情報を元に検知処理が実行されます。パッケージアップデートにより解消されたタスクは「Patch_Applied」ステータスに自動変更されます。

ペーストサーバ登録に必要な情報と取得方法

 OS Version Kernel Release Kernel Version Packages
CentOS cat /etc/redhat-release uname -r - rpm -qa –queryformat “%{NAME} %{EPOCHNUM} %{VERSION} %{RELEASE} %{ARCH}\n”
RHEL cat /etc/redhat-release uname -r - rpm -qa –queryformat “%{NAME} %{EPOCHNUM} %{VERSION} %{RELEASE} %{ARCH}\n”
Amazon Linux awk ‘{if ($0 ~ /Amazon Linux release (2022|2023)/) print $4; else if ($0 ~ /Amazon Linux release 2/) printf("%s %s “,$4, $5); else if ($0 ~ /Amazon Linux 2/) for (i=3; i<=NF; i++) printf("%s “, $i); else if (NF==5) print $5}’ /etc/system-release uname -r - rpm -qa –queryformat “%{NAME} %{EPOCHNUM} %{VERSION} %{RELEASE} %{ARCH}\n”
Debian cat /etc/debian_version uname -r uname -a | awk ‘{print $7}’ dpkg-query -W -f=”\${binary:Package},\${db:Status-Abbrev},\${Version},\${Source},\${source:Version}\n”
Ubuntu lsb_release -sr | awk ‘{print $1}’ uname -r - dpkg-query -W -f="\${binary:Package},\${db:Status-Abbrev},\${Version},\${Source},\${source:Version}\n"
Windows - - - (Get-Hotfix | Select-Object -Property HotFixID | % { If ($_ -match ‘(KB\d{6,7})’) { $Matches[0] }}) -Join ‘,’

上記以外のOSを登録したい場合は、FutureVulsの画面にてペーストサーバ作成用のダイアログ表示して確認してください。

OSパッケージスキャンの仕組み

Linuxのパッケージはバックポートの仕組みでアップデートが提供されます。 FutureVulsでは、Linuxディストリビューターが提供するSecurity TrackerやOVALを用いて検知処理を行います。 これらの脆弱性DBは、各OSに対応する「実際にバックポートされたバージョン番号」が書かれているため、正確に検知できます。

各スキャン方法の詳細な検知ロジックはOSSのソースコードを参照してください。

また、OSやパッケージのCPEを登録して正確に脆弱性を検知できますか、とよく質問されます。 以下の理由により誤検知が多発するためOSパッケージはCPEスキャンでは非推奨です。 詳細をFAQ>CPEスキャンに記載しましたので気になる方は一読ください。