第1章 Clair セキュリティースキャナー
Clair v4 (Clair) は、静的コード分析を活用してイメージコンテンツを解析し、コンテンツに影響を与える脆弱性を報告するオープンソースアプリケーションです。Clair は Red Hat Quay にパッケージ化されており、スタンドアロンと Operator デプロイメントの両方で使用できます。エンタープライズ環境に合わせてコンポーネントを個別にスケーリングできる、非常にスケーラブルな設定で実行できます。
1.1. Clair について
Clair は、National Vulnerability Database (NVD) の Common Vulnerability Scoring System (CVSS) データを使用して脆弱性データを補完します。NVD は、さまざまなソフトウェアコンポーネントやシステムの既知の脆弱性やセキュリティー問題など、セキュリティー関連情報を提供する米国政府のリポジトリーです。NVD のスコアを使用することは、Clair にとって次の利点があります。
- データの同期。Clair は、脆弱性データベースを NVD と定期的に同期できます。これにより、最新の脆弱性データが確実に保持されます。
- 照合と補完。Clair は、コンテナーイメージ内で発見した脆弱性のメタデータと識別子を NVD のデータと比較します。このプロセスでは、Common Vulnerabilities and Exposures (CVE) ID などの一意の識別子と NVD 内のエントリーの照合を実行します。一致するものが見つかった場合、Clair は重大度スコア、説明、リファレンスなど、NVD から詳細情報を追加して、脆弱性情報を補完することができます。
- 重大度スコア。NVD は、Common Vulnerability Scoring System (CVSS) スコアなどの重大度スコアを脆弱性に割り当て、各脆弱性に関連する潜在的な影響とリスクを示します。NVD の重大度スコアを組み込むことにより、Clair は検出した脆弱性の重大さに関するコンテキストをより多く提供できます。
Clair が NVD に基づいて脆弱性を発見した場合、コンテナーイメージ内で検出された脆弱性の重大度と潜在的な影響について、標準化された詳細な評価が、UI を通じてユーザーに報告されます。CVSS の補完データは、Clair に次の利点を提供します。
- 脆弱性の優先順位付け。CVSS スコアを利用することで、ユーザーは重大度に基づいて脆弱性に優先順位を付け、最も重要な問題に最初に対処できるようになります。
- リスクの評価。CVSS スコアは、コンテナー化されたアプリケーションに対する脆弱性の潜在的なリスクを Clair ユーザーが理解するのに役立ちます。
- 重大度の伝達。CVSS スコアを使用すると、Clair ユーザーはチームおよび組織全体に脆弱性の重大度を標準化された方法で伝達できます。
- 修復戦略の通知。CVSS の補完データは、Quay.io のユーザーが適切な修復戦略を策定する際に役立ちます。
- コンプライアンスとレポート。Clair によって生成されるレポートに CVSS データを統合すると、セキュリティーの脆弱性に対処し、業界の標準と規制に準拠するという組織的な取り組みを示すのに役立ちます。
1.1.1. Clair のリリース
Clair の新しいバージョンは定期的にリリースされます。Clair のビルドに必要なソースコードは、アーカイブとしてパッケージ化され、各リリースに添付されています。Clair のリリースは、Clair のリリース にあります。
リリースアーティファクトには、オープンホストを使用してインターネットからアップデーターデータを取得する clairctl
コマンドラインインターフェイスツールも含まれています。
Clair 4.7.2
Clair 4.7.2 は 2024 年 2 月 6 日にリリースされました。
Clair 4.7.1
Clair 4.7.1 は Red Hat Quay 3.9.1 の一部としてリリースされました。次の変更が加えられました。
このリリースでは、Red Hat Enterprise Linux (RHEL) ソースからパッチ未適用の脆弱性を表示できます。パッチ未適用の脆弱性を表示する場合は、
ignore_unpatched
パラメーターをfalse
に設定します。以下に例を示します。updaters: config: rhel: ignore_unpatched: false
この機能を無効にするには、
ignore_unpatched
をtrue
に設定します。
Clair 4.7
Clair 4.7 は Red Hat Quay 3.9 の一部としてリリースされ、以下の機能のサポートが含まれています。
- コンテナーイメージ内の Golang モジュールと RubeGem のインデックス作成のネイティブサポート。
プログラミング言語パッケージマネージャーの脆弱性データベースソースとして OSV.dev に変更します。
- これには、GitHub Security Advisories や PyPA などの一般的なソースが含まれます。
- これにより、オフライン機能が利用できます。
- Python 用の pyup.io および Java 用の CRDA の使用は一時停止されています。
- Clair は、Java、Golang、Python、および Ruby の依存関係をサポートするようになりました。
1.1.2. Clair 脆弱性データベース
Clair は、次の脆弱性データベースを使用して、イメージの問題を報告します。
- Ubuntu Oval データベース
- Debian Security Tracker
- Red Hat Enterprise Linux (RHEL) Oval データベース
- SUSE Oval データベース
- Oracle Oval データベース
- アルパイン SecDB データベース
- VMware Photon OS データベース
- Amazon Web Services (AWS) UpdateInfo
- Open Source Vulnerability (OSV) Database
1.1.3. Clair がサポートする依存関係
Clair は、次の依存関係の特定と管理をサポートしています。
- Java
- golang
- Python
- Ruby
そのため、Clair はこれらの言語のプロジェクトが正しく動作するために依存しているサードパーティーのライブラリーとパッケージを分析して報告できます。
Clair でサポートされていない言語のパッケージを含むイメージがリポジトリーにプッシュされると、そのパッケージに対して脆弱性スキャンを実行することができません。ユーザーには、サポートされていない依存関係やパッケージに関する分析レポートやセキュリティーレポートは表示されません。そのため、次のような影響を考慮する必要があります。
- セキュリティーリスク。脆弱性がスキャンされていない依存関係またはパッケージがあると、組織にセキュリティーリスクが発生する可能性があります。
コンプライアンスの問題。組織に特定のセキュリティー要件またはコンプライアンス要件がある場合、スキャンされていない、または一部しかスキャンされていないコンテナーイメージにより、特定の規制への違反が発生する可能性があります。
注記スキャンされたイメージにはインデックスが付けられ、脆弱性レポートが作成されますが、サポートされていない特定の言語のデータがレポートから省略されている場合があります。たとえば、コンテナーイメージに Lua アプリケーションが含まれている場合、Clair はそれを検出しないため、Clair からフィードバックは提供されません。Clair はコンテナーイメージで使用されている他の言語を検出し、それらの言語に対して検出された CVE を表示します。そのため、Clair イメージは、Clair がサポートする言語に基づいて 完全にスキャン されます。
1.1.4. Clair コンテナー
Red Hat Quay にバンドルされている公式のダウンストリーム Clair コンテナーは、Red Hat Ecosystem Catalog にあります。
公式のアップストリームコンテナーはパッケージ化され、Quay.io/projectquay/clair でコンテナーとしてリリースされます。最新のタグは、Git 開発ブランチを追跡します。バージョンタグは、対応するリリースから構築されます。