脆弱性ポリシー

By 清水 孝郎 - SEPTEMBER 20, 2022
Topics: Sysdig機能

SHARE:

本文の内容は、2022年9月19日現在のVulnerability Policies(https://docs.sysdig.com/en/docs/sysdig-secure/policies/vulnerability-policies/
)を元に日本語に翻訳・再構成した内容となっております。

このドキュメントは、脆弱性管理エンジンにのみ適用されます。2022年4月20日以前にSysdig Secureをデプロイした場合は、スキャン機能と脅威検知ポリシーのドキュメントをご利用ください。こちらもご覧ください。どのスキャンエンジンを使用するか

概要

Sysdigには、パイプラインとランタイムの両方の脆弱性に対するスキャンポリシーが、関連するルールバンドルとともに、すぐに利用できるように用意されています。ポリシーやルールの編集や新規作成は、両者とも同様の手順で行えます。




利用可能なルール

脆弱性ルール

深刻度と脅威 (Severities and Threats)

ソフトウェアの脆弱性をスキャンすることは第一の関心事です。同時に、報告された脆弱性が分析対象の特定の本番環境に関連しない場合もあり、特定のソフトウェアパッケージについて全く脆弱性のない環境を実現することは通常、非現実的です。各組織は、評価対象資産が許容範囲内であるか、非準拠と見なすべきかを判断するために、脆弱性に対する許容リスク閾値を設定しています。

拒否リスト(CVE DenyList)

このルールに記載された脆弱性が検出された場合、重大度やその他の脆弱性属性に関係なく、ルールは失敗します。

ImageConfig ルール

OCI Image Configuration は、コンテナランタイムおよび実行ツールで使用するイメージと、ファイルシステムのチェンジセットとの関係を記述した JSON ドキュメントです。

つまり、イメージの設定とメタデータから構成されます。

例えば

  • エントリーポイント / CMD
  • 設定されたユーザー
  • 環境変数
  • ラベル
  • 作成者
  • 作成時間
  • ビルド履歴
  • … (その他多くの設定キー。一部は必須、一部は任意)

Dockerfiles VS ImageConfiguration:Dockerfilesは、イメージの生成に使用される言語を指定し、その中には前述のImageConfigurationファイルが含まれています。DockerfilesとImageConfigurationは密接に関連していますが、同じ概念ではありません。また、Docker/Dockerfiles以外の開発ツールを使用しても、準拠したImageConfigurationファイルを生成することができます。

デフォルトユーザー (Default Use)

エントリーポイントやCMDを実行するために設定されたデフォルトのユーザーです。

rootをデフォルトとすることは、不必要な特権を与え、悪用に成功した場合に攻撃者が容易に特権を昇格させたり、ラテラルムーブメントを可能にするため、推奨されません。

root を避ける以外に、このルールでは、設定しなければならない特定のユーザー (例: jenkins) を指定することもでき、そうでなければ失敗します。

イメージラベル

環境変数 (Environment Variables)

推奨する命令 (Recommended Instructions)

ADD命令の使用は推奨しません。COPY命令の方がより予測しやすく、エラーも起こりにくいからです。

パッケージマネージャの使用方法 (Package Manager Instructions)

このルールでは、推奨されるセキュリティ対策に従って、パッケージマネージャー命令の使用を禁止しています。(イメージビルド中にパッケージマネージャを使って最新バージョンのパッケージを直接取得すると、ビルドが再現できなくなる可能性があるため、推奨されない場合があります)。

現在、以下のパッケージマネージャ / 更新サブコマンドがイメージのビルド履歴から検出されます:
apk
.*apk upgrade.*
apt
.*apt-get upgrade.*
.*apt upgrade.*
yum
.*yum upgrade.*
rpm
.*rpm (--upgrade|-U).*
pip
.*pip3* install (--upgrade|-U).*
pipenv
.*pipenv update.*
poetry
.*poetry update.*
npm
.*npm update.*
yarn
.*yarn update.*
composer
.*composer update.*
cargo
.*cargo update.*
bundle
.*bundle update.*
gem
.*gem update.*

イメージの作成日 (Image Creation Date )

イメージの作成日は、イメージが古くなったことを示すために使用することができます。

注:イメージの作成日はオプションの属性であるため、日付が宣言されていない場合にもこのルールは失敗します。

機密情報とシークレット (Sensitive Information and Secrets)

機密情報の漏洩は、最も深刻なセキュリティ問題の1つであり、しばしば実際のセキュリティ侵害に繋がっています。このルールを有効にすることで、ImageConfigのメタデータが解析され、機密性の高い文字列が検出されます。

イメージラベルAWS_TOKENで見つかったAWSシークレットの違反例:




このルールで現在利用可能な検出は以下の通りです:

  • Aws_secret

    • AKIA keys: AKIA[0-9A-Z]{16}
    • Any other key: aws.{0,20}?(?:key|pwd|pw|password|pass|token).{0,20}?
  • Azure storage account key

  • Basic Auth: detects [http,ssh]://user@pass:domain.com

  • JWT token

  • 秘密鍵の場合 文字列が以下を含むかどうかをチェック
    "BEGIN DSA PRIVATE KEY",
    "BEGIN EC PRIVATE KEY",
    "BEGIN OPENSSH PRIVATE KEY",
    "BEGIN PGP PRIVATE KEY BLOCK",
    "BEGIN PRIVATE KEY",
    "BEGIN RSA PRIVATE KEY",
    "BEGIN SSH2 ENCRYPTED PRIVATE KEY",
    "PuTTY-User-Key-File-2"
    

ルールバンドルの作成 (Create Rule Bundles)

ルールバンドルは、グループ化されたスキャンルールのセットです。

注意:
  • デフォルトのSysdigルールバンドル(Sysdigシャベルのアイコンで識別)は削除できませんが、新しいルールバンドルのテンプレートとして使用したい場合は複製することができます。
  • 同じルールバンドルは、複数の異なるポリシーに使用することができます。
  • ルールの順番は評価の観点からは関係ありませんが、視覚化しやすいようにお好みで整理してください。

作成手順

1. Policies > Rule Bundles と進み +Add Bundleをクリックします。



2. パラメータを入力します。

  • Name: このルールバンドルにユーザーが割り当てた名前
  • Description: ユーザーが割り当てたルールバンドルの説明
  • Rules: ルールバンドルは、1~N個のスキャンルールで構成されています。ビジュアルエディタを使用して、新しいルール(インターフェースでは「カード」として表されます)を作成および設定することができます。
3.  Saveをクリックします。これで、このルールバンドルをポリシーに添付することができます。

例では、以下の場合に特定の脆弱性のチェックが不合格になります:

  • severityが[High]または[Critical]で、AND
  • 60日以上前に発見されたもので、AND
  • 修正プログラムが公開されている AND
  • 公開されているエクスプロイトがある


注意:
  • 同じポリシーバンドルに対して、同じルールテンプレートの複数のバージョンを作成することができます。つまり、上のタイプの脆弱性のようなカードを2つ以上持つことができます。 Vulnerabilities: Severities and Threats
  • 同じルール間の条件は AND ロジックで評価されます。上の例のように、脆弱性が違反と見なされるには、すべての条件を満たす必要があります。
  • ルールバンドル内のすべてのルールは、OR ロジックで評価されます。
  • いずれかのルールが違反の場合、ルールバンドルは違反となります。
  • また、ルールバンドルが違反の場合、それを含むポリシーも違反となり、「failed」とみなされます。

スキャンポリシーの作成

お客様の組織の脆弱性管理ガイドラインに合わせて、必要に応じてカスタムスキャンポリシーとルールバンドルを作成することができます。スキャンポリシーとルールの基本的なコンセプトは以下のとおりです。

  • 1つのイメージは、1~N個のポリシーで同時に評価することができます。
  • 1つのポリシーは、1~N個の評価対象ルールバンドルを含むことができます。
  • ルールバンドルは、評価対象となる任意の数のルールで構成されます。

パイプライン

 1. Policies | Vulnerabilities > Pipelineを選択します。パイプラインスキャンポリシーリストが表示されます。

2.  +Add Policy|Pipelineをクリックします。



3. パラメータを入力します。

  • Name: このポリシーにユーザーが割り当てた名前
  • Description: ユーザーが割り当てたポリシーの説明
  • Always apply toggle: 使用するマッピング戦略:
    •  Always Apply を有効にすると、スキャナのすべての実行でこのポリシーが適用されます。これは、CLI パラメータで上書きできません。
    •  Always Apply を無効にした場合、このポリシーを評価に適用するには、スキャナの実行時に明示的に要求する必要があります。
  • Rule Bundles: ポリシーには、評価されるルール バンドルが含まれます。このウィジェットを使用して、このポリシーに使用されるバンドルを追加、削除、または変更できます。
  •  Edit Assigned Rule Bundles  をクリックし、割り当てるバンドルを切り替えます。 Updateクリックします。




  • How to Scan Images with this policy:  スキャナー実行にポリシーを適用するために使用するコマンドラインをプレビューするヘルパーウィジェットです。こちらもご参照ください。Sysdig Secureの入門

4. Createをクリックします。


ランタイム (Runtime)

1.  Policies | Vulnerabilities > Runtimeを選択します。Runtimeスキャンポリシーリストが表示されます。

2.  +Add Policy|Runtimeをクリックします。



3. パラメータを入力します。
  • Name: このポリシーにユーザーが割り当てた名前
  • Description: ユーザーが割り当てたポリシーの説明
  • Scope:インフラストラクチャー全体を使用するか、希望するスコープをビルドアウトします。
    •  See Workloads in this Scope をクリックして、スコープが有効であり、期待どおりに動作していることを確認します。
  • Rule Bundles: ポリシーには、評価されるルールバンドルが含まれます。このウィジェットを使用して、このポリシーに使用されるバンドルを追加、削除、または変更できます。
    •  Edit Assigned Rule Bundles をクリックし、割り当てるバンドルをトグルします。 Updateをクリックします。