ChartCenterにHelm Chartのセキュリティ軽減メモ(Mitigation Notes)を追加する

今年の初めにChartCenterを立ち上げました。これはKubernetes開発者がHelm Chartを見つけるための最新のコミュニティプラットフォームです。この新しい無料のHelmセントラルリポジトリはChartの不変性を念頭に置いて構築されました。つまり、元のソースがダウンしても、Helm ChartのすべてのバージョンとChartCenter内のすべてのバージョンが常に利用できるということです。HelmHubが非推奨になったことで、不変性は特に重要になりました。Chartとそのバージョンは多くがChartCenter上に存在し続けており、各バージョンにはHelm Chartの依存関係、アプリケーションのバージョン、Helmのバージョン、他のChartがこのバージョンを使用している数など、豊富なメタデータが含まれています。

ChartCenterの最大の特徴は無料で見られる脆弱性の情報です。すべてのChartのバージョンについてJFrog Xrayを使用して脆弱性をスキャンし、CVSS 2の評価を使用して、高、中、低、未知いずれかのCVEスコアを算出します。

ChartCenterで明らかになる脆弱性

CVE (Common Vulnerabilities and Exposures) リストは国土安全保障省 (DHS) のOffice of Cybersecurity and Information Assurance (OCSIA) が主催する、報告された脆弱性の公開リストです。多くのサイバーセキュリティ企業は組織が自社の問題を明確に理解できるように、CVEやそれ以外の独自データベースを使用しています。CVEは特定の脆弱性やエクスポージャー(システム上の攻撃可能な不備など)に対する標準化された識別子を作成することで、組織間で既知の脆弱性に関する情報共有を容易にできます。CVEにより、組織はセキュリティツールの適用範囲を評価するためのベースラインを設定することができます。CVE の共通識別子は各ツールが何をカバーしていて、そのツールが組織にとってどの程度適切なのかを確認することができます。

各Chartページのセキュリティタブに移動すると、ユーザーはCVE ID、概要、コンポーネントおよび問題があるイメージといった脆弱性の詳細を確認することができます。

ChartCenter Vulnerability Information

Mitigation Notes

私たちがこのセキュリティ機能をテストしている間に、様々なコミュニティメンバーから得たフィードバックがあります。脆弱性の多くはChartのメンテナーがコントロールできないサードパーティのコンポーネントにあるため、どのCVEが実際にアプリケーションに影響を与えるかについてエンドユーザに何らかのコンテキストを提供する機能をメンテナーに与えることができればより良いというものです。

正しくバランスを取りChartのメンテナーとユーザー両方の意思決定を支えるツールとするために、私たちは “Mitigation Notes”と呼ばれる機能を作成しました。ClaireOSやDockerHubなど多くのツールがコンテナスキャンを無料で提供しています。しかし、JFrogのChartCenterは1つのビューですべてを容易に閲覧でき、ユーザーが複数バージョンに渡って問題を確認できるUI上に情報が表示される初のツールでした。このことから、組織がChartのセキュリティについてユーザーとやりとりするための方法を提供することが正しいことだと分かりました。

また、この問題をきっかけにHelm ChartのメンテナーがChartCenter UI上でユーザーと直接対話できるような新機能を構築することになりました。このソリューションはアプリケーション全体のセキュリティについて、Chartのユーザーに透明性を提供し続ける必要があります。このバランスを正しくとる作業は興味深いものでした。中程度、低程度、未知のCVEの詳細をすべて継続的に公開することから始めましたが、高い脆弱性のデータにアクセスできるのはコミュニティユーザーがChartCenterにログインした場合に限られます。

“Maintainer Notes”の提供

CVEに対するMitigation Noteを提供するにはsecurity-mitigation.yamlファイルを使用します。ユーザーがこれを設定すると、セキュリティタブの各CVEの横にアイコンが表示されます。

ChartCenter With Mitigation Note

アイコンをクリックすると次のような文章が表示されます:

ChartCenter Maintaner Notes

軽減メモとアドバイスの例

ユーザーにこの手のアドバイスを提供することに慣れていない方は手本となる企業がたくさんあることを知っておいてください。これらの企業の多くはコード内のセキュリティ脆弱性を軽減するための独自のプロセスを持っており、サイト上に専用のページやポータルを構築して情報を公開している場合もあります。以下にセキュリティリスクへ対処するために会社標準の軽減勧告を実施している企業の例と、その方針の簡単な概要を示します。これらの例は自社のセキュリティ対策にも利用できます。

Drupal:  DrupalのセキュリティチームはDrupalコアやコントリビュートしたプロジェクトで報告されたセキュリティ問題をサイトオーナーに通知するため、セキュリティ勧告の公開アナウンスを管理しています。セキュリティ勧告では開発者が問題を修正するために必要な手順も提供されます。Drupalのセキュリティ勧告のプロセスについての詳細はこちらをご覧ください

マイクロソフト: マイクロソフトは悪用可能性インデックスを持っています。セキュリティ更新プログラムに関連する重要度・重大度の高い各脆弱性の悪用の可能性を評価し、毎月のセキュリティ更新プログラムの詳細情報の一部として悪用可能性情報を公開しています。詳細を公開した後に、マイクロソフトが必要だと判断した場合はExploitability Index Assessment(悪用可能性指標)を変更し、技術的なセキュリティ通知で顧客に通達します。その流れが確認できる例もあります。

 

ChartCenter Mitigation YAML

YAMLファイルを記述後は次のバージョンのHelm Chartにそのファイルを含めることができます。またはHelm Chartの所有者であることが確認できれば、直接security-mitigation.yamlファイルをメールで送信することもできます(ユーザーのメールアドレスがChartのリポジトリ情報に含まれていることが確認されます)。

セキュリティ軽減機能では3つのユースケースをサポートしています。

  • 作成者が全体またはCVE固有の軽減情報を提供できる
  • wikiやウェブページ上で外部ホストされている軽減情報のウェブサイトを作成者が提示できる

外部ホストされたsecurity-mitigation.yamlを作成者が提示できる

ChartCenter Security Mitigation YAML

Field Description Type
summary Overall mitigation summary that applies to all chart versions text
securityAdvisoryUrl Link pointing to a mitigation information hosted externally such as wiki, web page, etc. url
useMitigationExternalFile true means security-mitigation.yaml is hosted somewhere else. false means the content of the current file represents security mitigation information. Default value: false true/false
mitigationExternalFileUrl If set to true, then this parameter points to a url of externally hosted security-mitigation.yaml url
mitigations: cves List of CVEs for which mitigation notes are being provided. CVE-YYYY-NNNN
mitigations: cves: affectedPackageUri Indicates package Uri for which the security mitigation is provided. Currently we support only two package uri: 

Docker docker://docker.io/bitnami/postgres Helm helm://artifactory

uri
mitigations: cves: affectedVersions SemVer Constraint from Masterminds/semver as used on Chart.yaml for kubeVersion specifying which versions should use the mitigation information. Example: “> 1.2.x
mitigations: cves: description Mitigation notes at CVE level. text description

次のステップ

Chartメンテナーの方はUIのMitigtion Notes機能を有効にする方法をご覧ください。その後、security-mitigation.yamlファイルを作成してください。ご質問がある場合はchartcenter@jfrog.comまでメールでお問い合わせください。