目次

Trend Micro Artifact Scanner (TMAS) について

Trend Micro Artifact Scanner (TMAS) は、トレンドマイクロのアーティファクト検索ツールです。また、アーティファクトに対して事前ランタイム検索 (サポートされているアーティファクト を参照) を実行することで、本番環境に配信される前に (たとえば、コンテナー イメージ用のKubernetesなど) 問題を特定して修正できます。

TMASでは、オープンソースの脆弱性検索を実行できます。脆弱性データベースは、オープンソースの脆弱性フィードから最新の脅威データを受け取ります。Scannerは、次のオペレーティングシステムの脆弱性を検出できます。

  • Alpine
  • Amazon Linux
  • BusyBox
  • CentOS
  • Debian
  • Distroless
  • Oracle Linux
  • Red Hat (RHEL)
  • Ubuntu

Scannerは、次のプログラミング言語のコードの脆弱性を検出できます。

  • Ruby (Gems)
  • Java (JAR、WAR、EAR、JPI、HPI)
  • JavaScript (NPM、Yarn)
  • Python (Egg、Wheel、Poetry、requirements.txt ファイルおよび setup.py ファイル)
  • Dotnet (deps.json)
  • Golang (go.mod)
  • PHP (Composer)
  • Rust (Cargo)

TMASはCI/CDパイプラインにどのように適合しますか?

TMASは、継続的インテグレーション (CI) または継続的デリバリー (CD) パイプラインに統合できます。

たとえば、Jenkinsプロジェクトでは、 Dockerイメージを自動的にビルド、テストして、 Dockerレジストリにプッシュできます。イメージは、プッシュされるとすぐにオーケストレーション環境で実行できるようになります。オープンソースの脆弱性がイメージに存在する場合、イメージの実行時にリスクとなります。イメージは不変であることを目的としているため、イメージはクラスタにデプロイする前に検索する必要があります。

TMASは、CI/CDパイプライン内の アーティファクト を検索します。CI/CDパイプラインにTMAS CLIをインストールして、アーティファクトを実稼働環境に配信する前に脆弱性検索を実行できます。TMASは検索対象の情報を取り、Software Bill of Materials (SBOM) を生成します。SBOMをTrend Cloud Oneにアップロードして処理し、脆弱性レポートを返します。

TMASで検索できるアーティファクトの例は次のとおりです。

  • コンテナイメージ

  • バイナリファイル

  • ソースコードを含むディレクトリ

  • OCIアーカイブ

ダウンロードして適用

metadata.json で最新バージョンを確認できます。

アーキテクチャ
Darwin_arm64 (MacOS - Apple Siliconチップセット)
Darwin_x86_64 (MacOS - Intelチップセット)
Linux_arm64
Linux_i386
Linux_x86_64
Windows_arm64
Windows_i386
Windows_x86_64

システム要件

以下の表に記載されている最小システム要件は、ほとんどのアーティファクトをスキャンするのに十分です。

ハードウェア 最小 推奨
ストレージ 16GB 16GB
Ram 2GB 4GB
vCPU 1 1

対象のアーティファクトのサイズに対応するために十分なストレージ容量がシステムに必要です。イメージの場合、非圧縮のサイズに対して十分な容量がシステムに確保されている必要があります。

アーティファクトに含まれるファイルの数に応じて、TMAS CLI スケールのメモリ消費。アーティファクトの中には、完了するために追加のメモリが必要になる場合があります。メモリリソースを増やすことでパフォーマンスを向上できます。

最新バージョンのTMAS CLIへのアップグレード

最適なパフォーマンスを確保し、最新の機能を利用するには、次の手順に従って、定期的にTMASを最新バージョンにアップグレードしてください。

  1. アップデートされたバイナリをダウンロードします。TMAS CLIの最新バージョンをダウンロードするためのリンクは、ダウンロードおよびインストール に記載されています。

  2. 既存のTMASバイナリをアップデートされたTMASバイナリで置き換えて、システムのバイナリパス設定を調整します。詳細については、 Set upで説明されている「Add TMAS CLI to your PATH」手順を参照してください。

TMASが最新バージョンに正常にアップデートされました。

設定

TMAS CLIでは、環境変数に有効なAPIキーを格納する必要があります。環境変数「TMAS_API_KEY」として呼び出すTrend Cloud Oneリージョンに関連付けられているAPIキーを次のように追加します。

export TMAS_API_KEY=<your_cloud_one_api_key>

TMAS CLIはTrend Vision Oneでも使用できます。詳細については、「Trend Vision OneのTrend Micro Artifact Scannerについて」を参照してください。

Trend Cloud OneのAPIキーを取得する:

  1. Trend Cloud One管理コンソール にログインします。
  2. Container Security > Scannersに移動します。
  3. 次のいずれかのオプションで新しいAPIキーを作成します:

    新しいScannerの役割の作成

    • 次の図のように、 Scannerの役割を使用して新しいAPIキーを設定します。

    APIキーの手動作成

APIキーを取得する場合は、そのAPIキーが呼び出しているエンドポイントに関連付けられていることを確認してください。たとえば、適切な認証を行うために「us-1」リージョンエンドポイントを呼び出す予定の場合は、「us-1」アカウントでAPIキーを作成してください。

これらのキーは、Trend Cloud One管理コンソール から管理できます。

パスにTMAS CLIを追加:

export PATH="/path/to/tmas/binary/directory:$PATH"

一般の使用状況

tmas [command] [flags]

使用可能なコマンド

コマンド 説明
scan アーティファクトをスキャンする。
version 現在のCLIバージョン (長い) を取得します。
help ヘルプ情報を表示する。

グローバルフラグ

フラグ 説明
--version 現在のCLIバージョンを取得 (短縮)。
-v, --verbose 詳細度を増やす (-v = info、-vv = debug)。
-h, --help ヘルプ情報を表示します。

検索コマンドの使用法

tmas scan [artifact] [flags]

検索コマンドフラグ

フラグ 説明
-p, --platform マルチプラットフォームコンテナイメージソースのプラットフォーム指定子(オプション)。
例えば、'linux/arm64'、'linux/arm64/v8'、'arm64'、'linux'。デフォルトは 'linux/amd64' です。
-r, --region Trend Cloud Oneサービスリージョン (必須): [au-1 ca-1 de-1 gb-1 in-1 jp-1 sg-1 us-1]
--saveSBOM ローカルディレクトリにSBOMを保存します (オプション)。
--malwareScan 不正プログラム検索を有効にします (オプション)。「docker」、「docker-archive」、「oci-archive」、「oci-dir」、および「registry」アーティファクトの種類がサポートされています。
-o, --override 上書きルールを含むファイルのファイルパスを指定します(オプション)。
例えば、/path/to/tmas_vuln_overrides.yml
-v, --verbose 詳細度を上げる (-v = info, -vv = debug)。
-h, --help ヘルプ情報を表示します。

サポートされているアーティファクト

アーティファクト 説明
docker:yourrepo/yourimage:tag Dockerデーモンのイメージを使用します。
podman:yourrepo/yourimage:tag Podmanデーモンのイメージを使用します。
docker-archive:path/to/yourimage.tar docker save から作成されたアーカイブには、ディスクから tarball を使用します。
oci-archive:path/to/yourimage.tar OCIアーカイブ (Skopeoアーカイブなど) のディスクにあるtarballを使用してください。
oci-dir:path/to/yourimage OCIレイアウトディレクトリのディスクパスから直接読み取ります (Skopeoやその他から)。
singularity:path/to/yourimage.sif ディスク上の特異点イメージ形式 (SIF) コンテナから直接読み取ります。
registry:yourrepo/yourimage:tag レジストリからイメージを直接取得します (コンテナランタイムは必要ありません)。
dir:path/to/yourproject ディスク上のパス (任意のディレクトリ) から直接読み取ります。
file:path/to/yourproject/file ディスク上のパス (単一ファイル) から直接読み取ります。

検索は、生成されたSBOMデータが10MB未満のアーティファクトに限定されます。 不正プログラム検索では、 docker docker-archive oci-archive oci-dir および registry のアーティファクトタイプのみがサポートされます。

アーティファクトを検索する:

tmas scan <artifact_to_scan> --region us-1

別のTrend Cloud Oneリージョンに切り替えるには、必要な地域のフラグを使用:

tmas scan docker:yourrepo/yourimage:tag --region au-1

別のリージョンに切り替える場合、「TMAS_API_KEY」を環境変数として保存するが、そのTrend Cloud Oneのリージョンに関連付けられていることを確認してください。 不一致があると、検索コマンドが失敗し、403 ForbiddenまたはAPIKeyPlatformMismatchErrorエラーが発生します。

リモートレジストリ内のイメージを検索しています:

tmas scan registry:yourrepo/yourimage:tag --region us-1

レジストリをアーティファクトのソースとして使用する場合、コンテナランタイムは必要ありません。また、レジストリアーティファクトのソースからの検索結果は、Trend Cloud One Container Security でポリシーの評価に使用できます。

プライベートレジストリからイメージを検索するには、検索を実行する前に「docker login」などのツールを使用してレジストリにログインする必要があります。

情報モードを有効にする:

tmas scan docker:yourrepo/yourimage:tag --region us-1 -v

脆弱性分析に使用するSBOMのディスクへの保存:

tmas scan docker:yourrepo/yourimage:tag --region us-1 --saveSBOM

「--saveSBOM」フラグが有効な場合、生成されたSBOMは、検索のためにTrend Cloud Oneへ送信される前にローカルディレクトリに保存されます。

platformフラグを使用してコンテナイメージのプラットフォームまたはアーキテクチャを指定する:

このフラグを使用すると、複数アーキテクチャのコンテナイメージを検索するときに使用するプラットフォームまたはアーキテクチャを指定できます。

tmas scan registry:yourrepo/yourimage:tag@sha256:<multiple-architecture-digest> --region us-1 --platform=arm64

複数アーキテクチャのレジストリイメージに対して、サポートされていないアーキテクチャを指定しようとすると、エラーが発生します。 アーキテクチャ固有のレジストリイメージを検索する場合、プラットフォームフラグは無視されます。

tmas scan docker:yourrepo/yourimage:tag@sha256:<arm64-specific-digest> --region us-1 --platform=arm64

このフラグは、TMASを実行しているホストとは異なるアーキテクチャのDockerまたはPodmanデーモンからイメージを検索する場合に必要です。

不正プログラム検索の有効化:

tmas scan docker:yourrepo/yourimage:tag --region us-1 --malwareScan

--malwareScan フラグを有効にしてプライベートレジストリからイメージを検索する場合は、 docker loginなどのツールを使用してレジストリにログイン済みであることを確認してください。
docker credsStore (.docker/config.json) を使用している場合は、 credential-helpers=<your credsStore>.config/containers/registries.confに追加します。たとえば、docker credsStoreが desktopの場合は、次を追加します。

credential-helpers = ["desktop"]

脆弱性の検出を上書き:

tmas scan <artifact_to_scan> --override path/to/tmas_vuln_overrides.yml

誤検知や無視したいその他の脆弱性の検出結果を上書きします。詳細については、脆弱性の検出結果の上書きを参照してください。

スキャンサブコマンド

tmas scan [subcommand] [artifact] [flags]
サブコマンド 说明
vulnerabilities アーティファクトに対して脆弱性スキャンを実行します。
malware 画像アーティファクトに対して不正プログラム検索を実行します。

脆弱性サブコマンド

Flag 説明
-p, --platform マルチプラットフォームコンテナイメージソースのプラットフォーム指定子。
例えば、'linux/arm64'、'linux/arm64/v8'、'arm64'、'linux'。デフォルトは 'linux/amd64' です。
-r, --region Trend Cloud One サービス地域 (必須): [au-1 ca-1 de-1 gb-1 in-1 jp-1 sg-1 us-1]
--saveSBOM ローカルディレクトリにSBOMを保存(オプション)。
-o, --override オーバーライドルールを含むファイルのファイルパスを指定します(オプション)。
例えば、/path/to/tmas_vuln_overrides.yml
-v, --verbose 詳細度を上げる (-v = info, -vv = debug)。
-h, --help ヘルプ情報を表示する。

アーティファクトを検索する:

tmas scan vulnerabilities <artifact_to_scan>

不正プログラムサブコマンド

Flag 説明
-p, --platform マルチプラットフォームコンテナイメージソースのプラットフォーム指定子。
例えば、'linux/arm64'、'linux/arm64/v8'、'arm64'、'linux'。デフォルトは 'linux/amd64' です。
-r, --region Trend Cloud One サービス地域 (必須): [au-1 ca-1 de-1 gb-1 in-1 jp-1 sg-1 us-1]
-v, --verbose 詳細度を上げる (-v = info, -vv = debug)。
-h, --help ヘルプ情報を表示する。

不正プログラム検索は、dockerdocker-archiveoci-archiveoci-dir、およびregistryのアーティファクトタイプのみをサポートします。

アーティファクトを検索する:

tmas scan malware <artifact_to_scan>

プロキシ設定

CLIツールは、次のオプションの環境変数のセットからプロキシ設定をロードします。

環境変数 必須またはオプション 説明
NO_PROXY オプション アーティファクトスキャンサービスと不正プログラムスキャンサービスのエンドポイントをカンマ区切りのホスト名リストに追加して、CLIツールのプロキシの設定をスキップする場合に使用します。
アスタリスク '*' のみがすべてのホストに一致することに注意してください。
HTTP_PROXY オプション http://proxy.example.com
HTTPS_PROXY オプション https://proxy.example.com

プロキシサーバがSOCKS5プロキシの場合、URLにSOCKS5プロトコルをsocks5://socks_proxy.example.comとして指定する必要があります
PROXY_USER オプション Proxy-Authorizationで使用される認証ヘッダのオプションのユーザ名
PROXY_PASS オプション 「Proxy-Authorization」で使用する認証ヘッダのオプションのパスワードで、「PROXY_USER」が設定されている場合にのみ使用します。

一時ファイルのクリーンアップ

Trend Micro Artifact Scannerを使用してレジストリイメージに対して開始された検索のたびに、[$TMPDIR] の下に新しい一時ディレクトリが生成され、イメージがダウンロードおよび分析されます。

バージョン1.35.0以降では、検索の実行後にこれらの一時ファイルが自動的に削除されます。 以前のバージョンで生成された、または中断された検索によって生成された既存の一時ファイルをクリーンアップするには、必要に応じて次のコマンド (または同等のプラットフォーム) を使用します。

echo $TMPDIR
ls $TMPDIR | grep "stereoscope-"
cd $TMPDIR && rm -rf ./stereoscope-*
ls $TMPDIR | grep "stereoscope-"

脆弱性の検出結果を上書き

TMASが誤検知と判断された脆弱性や無視したいその他の脆弱性を報告した場合、上書き設定ファイル(例:~/tmas_vuln_overrides.yml)に1つ以上のルールを定義することで、これらの検出結果を上書きするようにTMASに指示することができます。

次に、--override フラグを使用してオーバーライドファイルへのパスを TMAS に提供することで、これらのルールを使用してスキャンを実行できます。

tmas scan <artifact_to_scan> --override path/to/tmas_vuln_overrides.yml

オーバーライドファイルはルールのリストとして構成されています。各ルールは以下の基準の任意の組み合わせを指定できます

  • 脆弱性ID(例:"CVE-2008-4318"
  • 状態を修正(許可される値: "修理済み""未修理""修正されない"、または "不明"
  • パッケージ名(例:"libcurl"
  • パッケージバージョン(例:"1.5.1"
  • パッケージタイプ(例えば、"npm""go-package""rpm"、またはTMAS JSON脆弱性レポートに表示される任意のパッケージタイプ)
  • パッケージの場所(例:"/usr/local/lib/node_modules/**";グロブパターンをサポート)

各Ruleには、そのRuleが実施された理由(例えば、「誤検出」、「対処済み」、「脆弱なパッケージ関数は呼び出されていません」など)を示す理由も添付する必要があります。

vulnerabilities:
  # This is the full set of supported rule fields:
  - rule:
      vulnerability: CVE-0000-0000
      fixState: unknown
      package:
        name: libcurl
        version: 1.5.1
        type: npm
        location: "/usr/local/lib/node_modules/**"
    reason: A descriptor specifying why the override rule implemented

オーバーライドファイルに指定されたルールのいずれかが該当する場合、特定の脆弱性の検出結果はオーバーライドされます。ルール内のすべてのフィールドが脆弱性の検出結果に一致する場合にのみ、ルールが検出結果に適用されると見なされます。

vulnerabilities:
  # Override vulnerability findings whose CVE-ID is CVE-0000-0000
  - rule:
      vulnerability: CVE-0000-0000
    reason: Not executed

  # Override vulnerability findings detected on libcurl version 1.5.1
  - rule:
      package:
        name: libcurl
        version: 1.5.1
    reason: Dev dependency

ルールに一致する脆弱性の発見は、その深刻度の下に分類されるのではなく、"Overridden" セクションの JSON レポートに表示されます。

{
  "totalVulnCount": 1,
  "criticalCount": 0,
  "highCount": 0,
  "mediumCount": 0,
  "lowCount": 0,
  "negligibleCount": 0,
  "unknownCount": 0,
  "overriddenCount": 1,
  "findings": {
    "High": [],
    "Low": [],
    "Medium": [],
    "Negligible": [],
    "Overridden": [
      {
        "name": "libcurl",
        "type": "npm",
        "version": "1.5.1",
        "id": "CVE-0000-0000",
        "source": "https://nvd.nist.gov/vuln/detail/CVE-0000-0000",
        "severity": "Low",
        "fix": "not-fixed",
        "locations": ["/usr/local/lib/node_modules/**"],
        "cvssSummaries": [],
        "relatedVulnerabilities": []
      }
    ]
  }
}