目次

Trend Micro Artifact Scanner (TMAS) について

トレンドマイクロArtifact Scanner (TMAS) は、アーティファクトに対して実行前の脆弱性および不正プログラムのスキャンを実施します (サポートされているアーティファクト を参照)。これにより、コンテナイメージのKubernetesなどの本番環境に到達する前に問題を特定して修正することができます。

Scannerは次の項目を検出できます:

  • 脆弱性: TMASはオープンソースの脆弱性スキャンを実行できます。脆弱性データベースはオープンソースの脆弱性フィードから最新の脅威データを受信します。TMASはサポートされているオペレーティングシステムとプログラミング言語の脆弱性を見つけることができます。
  • 不正プログラム: TMASは、最新のファイルレピュテーションおよびバリアント保護技術を使用して、トロイの木馬、ランサムウェア、スパイウェアなど、あらゆる種類の不正プログラムを検出できます。TMASは、以前に遭遇した不正プログラムの断片に基づいて、難読化されたまたはポリモーフィックなバリアントの不正プログラムも検出できます。

Scannerは次のオペレーティングシステムの脆弱性を検出できます:

  • アルパイン
  • 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パイプライン内のアーティファクト をスキャンします。アーティファクトが本番環境にデプロイされる前にスキャンを実行するために、TMAS CLIをCI/CDパイプラインにインストールすることができます。脆弱性スキャンの場合、TMASはスキャンしたいアーティファクトを取得し、ソフトウェア部品表 (SBOM) を生成します。その後、SBOMをTrend Cloud Oneにアップロードして処理し、脆弱性レポートを返します。

TMASがスキャンできるアーティファクトの例は以下の通りです:

  • コンテナイメージ

  • バイナリファイル

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

  • Open Container Initiative (OCI) アーカイブ

システム要件

次の表は、ほとんどのアーティファクトをスキャンするための最小システム要件を示しています。

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

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

TMAS CLIのメモリ消費量は、アーティファクトに含まれるファイルの数に比例して増加します。一部のアーティファクトは、正常に完了するために追加のメモリを必要とする場合があります。メモリリソースとCPUコアを増やすことでパフォーマンスを向上させることができます。

ダウンロードしてインストール

metadata.json を使用して、TMASの最新バージョンを確認してください。

次のアーキテクチャがサポートされています:

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

最新機能へのアクセスと最適なパフォーマンスを確保するために、定期的にTMASの最新バージョンにアップグレードしてください。

  1. 更新されたバイナリをダウンロードしてください。最新バージョンのTMAS CLIをダウンロードするリンクはダウンロードとインストール にあります。

  2. 既存のTMASバイナリを更新されたTMASバイナリに置き換えることで、システムのバイナリパス設定を調整します。詳細については、セットアップ に記載されているTMAS CLIをPATHに追加する手順を参照してください。

設定

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

export TMAS_API_KEY=<your_cloud_one_api_key>

TMAS CLIは、Trend Vision Oneでシークレットスキャンなどの強化された機能と共に使用できることに注意してください。詳細については、Trend Vision OneのトレンドマイクロアーティファクトScannerについて を参照してください。

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

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

    APIキー作成ボタンを表示している画面

    新しいScannerRoleを作成

    • 次の図に従って、Scannerロールを使用して新しいAPIキーを構成します。

    APIキーの手動作成

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

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

TMAS CLIをPATHに追加する:

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

一般の使用状況

tmas [command] [flags]

使用可能なコマンド

コマンド 説明
scan アーティファクトをスキャンするには、Scanners (脆弱性または不正プログラムのいずれかを含む) を任意の組み合わせで使用します。
version 現在のCLIバージョン (長い形式) を取得します。
help ヘルプ情報を表示します。

グローバルフラグ

フラグ 説明
--version 現在のCLIバージョンを取得 (短縮)。
-v, --verbose 詳細度を上げる (-v = 情報, -vv = デバッグ)。
-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]
-V, --vulnerabilities 脆弱性のスキャンを有効にする (オプション)。
-M, --malware 不正プログラムのスキャンを有効にする (オプション)。dockerdocker-archiveoci-archiveoci-dirregistryのアーティファクトタイプをサポートします。
--saveSBOM ローカルディレクトリにSBOMを保存 (任意)。
-o, --override 脆弱性オーバーライドルールを含むファイルのファイルパスを指定してください (任意)。
例えば、/path/to/tmas_overrides.yml
-v, --verbose 詳細度を上げる (-v = 情報, -vv = デバッグ)。
-h, --help ヘルプ情報を表示します。

利用可能なScannersとそのフラグの詳細については、スキャンサブコマンド を参照してください。関連するScannerを有効にせずにScanner固有のフラグを使用してもエラーにはなりませんが、そのフラグは効果を持ちません。

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

アーティファクト 説明
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アーカイブにはディスクからのtarballを使用します (Skopeoまたはその他から)。
oci-dir:path/to/yourimage OCIレイアウトディレクトリ (Skopeoまたはその他) 用のディスク上のパスから直接読み取ります。
singularity:path/to/yourimage.sif ディスク上のSingularity Image Format (SIF) コンテナから直接読み取ります。
registry:yourrepo/yourimage:tag レジストリから直接イメージをプルします (コンテナランタイムは不要です)。
dir:path/to/yourproject ディスク上のパス (任意のディレクトリ) から直接読み取ります。
file:path/to/yourproject/file ディスク上のパスから直接読み取る (任意の単一ファイル)。

アーティファクトの脆弱性と不正プログラムをスキャンしています

tmas scan <artifact_to_scan> --region us-1 -V -M

または

tmas scan <artifact_to_scan> --region us-1 -VM

または

tmas scan <artifact_to_scan> --region us-1 --vulnerabilities --malware

scanコマンドを使用する場合、少なくとも1つのScannerを有効にしてください。

必要なリージョンフラグを使用して別のTrend Cloud Oneリージョンに切り替える

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

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

リモートレジストリでイメージをスキャンしています

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

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

プライベートRegistriesからイメージをスキャンするには、スキャンを試みる前にdocker loginなどのツールを使用してレジストリにログインする必要があります。TMASはDockerの認証動作に従い、Dockerの事前設定された資格情報を使用します。プライベートRegistriesからのイメージに対して不正プログラムスキャンを実行し、Docker credsStore (.docker/config.json) を使用する場合、.config/containers/registries.confファイルにcredential-helpers=<your credsStore>構成を追加します。例えば、Docker credsStoreがdesktopの場合、credential-helpers = ["desktop"]を追加します。Docker Hub上のプライベートRegistriesからのイメージに対して不正プログラムスキャンを実行する場合、サーバ名https://docker.ioまたはdocker.ioでログインしていることを確認してください。例えば、docker login docker.io

情報ログを有効にする

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

脆弱性分析に使用されるSBOMをディスクに保存

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

--saveSBOMフラグが有効になっている場合、生成されたSBOMはスキャンのためにTrend Cloud Oneに送信される前にローカルディレクトリに保存されます。

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

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

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

サポートされていないアーキテクチャのマルチアーキレジストリイメージに対してアーキテクチャを指定しようとすると、エラーが発生します。

アーキテクチャ固有のレジストリイメージをスキャンする際、プラットフォームフラグは無視されます。

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

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

脆弱性の検出を上書き

tmas scan <artifact_to_scan> --region us-1 -VM --override path/to/tmas_overrides.yml

誤検知や無視したいその他の脆弱性の検出を上書きするには、前述のフラグを使用します。詳細については、脆弱性の検出を上書きする を参照してください。

不正プログラムの検出結果の上書きは現在サポートされていません。

スキャンサブコマンド

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

脆弱性サブコマンド

tmas scan vulnerabilities <artifact_to_scan>
フラグ 说明
-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_overrides.yml
-v, --verbose 詳細度を上げる (-v = 情報, -vv = デバッグ)。
-h, --help ヘルプ情報を表示します。

脆弱性スキャンは、生成されたSBOMデータが10MB未満のアーティファクトに限定されます。

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

tmas scan malware <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 = 情報, -vv = デバッグ)。
-h, --help ヘルプ情報を表示します。

次の点に注意してください:

  • 不正プログラムスキャンは、dockerdocker-archiveoci-archiveoci-dir、およびregistryのアーティファクトタイプのみをサポートします。
  • 単一ファイルの最大サイズ制限は1 GBです。スキャンは1 GBを超えるファイルをスキップします。
  • 最大の単一レイヤーサイズの制限は512MBです。スキャンは512MBを超えるレイヤーをスキップします。

プロキシ設定

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が構成されている場合にのみ使用されます。

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

トレンドマイクロArtifact Scannerを使用してレジストリイメージに対して開始される各スキャンは、イメージをダウンロードして分析するために$TMPDIRの下に新しい一時ディレクトリを生成します。

バージョン1.35.0以降、このツールはスキャン実行後にそれらの一時ファイルを自動的に削除します。以前のバージョンで生成された一時ファイルや中断されたスキャンによって生成された一時ファイルをクリーンアップするには、以下のコマンド (またはそのプラットフォームに相当するコマンド) を自己責任で使用してください。

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

脆弱性の検出を上書き

TMASが誤検知と判断された脆弱性や無視したいその他の検出結果を報告した場合、オーバーライド構成ファイル (例: ~/tmas_overrides.yml) に1つ以上のルールを定義することで、これらの検出結果をオーバーライドするようにTMASに指示できます。不正プログラムの検出結果のオーバーライドは現在サポートされていません。

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

tmas scan <artifact_to_scan> --region us-1 -VM --override path/to/tmas_overrides.yml

オーバーライドファイルはYAML構造を使用しており、vulnerabilitiesのような各スキャンタイプの下にルールが定義されています。

脆弱性のオーバーライドはRuleのリストとして構成されています。各Ruleは次の条件の任意の組み合わせを指定できます。

  • 脆弱性ID (例: "CVE-2008-4318")
  • 修正状態 (許可される値: "fixed""not-fixed""wont-fix"、または"unknown")
  • パッケージ名 (例: "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レポートに表示されます。

{
  "vulnerabilities": { 
    "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": []
        }
      ]
    }
  }
}