このページのトピック
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を最新バージョンにアップグレードしてください。
-
アップデートされたバイナリをダウンロードします。TMAS CLIの最新バージョンをダウンロードするためのリンクは、ダウンロードおよびインストール に記載されています。
-
既存の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キーを取得する:
- Trend Cloud One管理コンソール にログインします。
- Container Security > Scannersに移動します。
-
次のいずれかのオプションで新しいAPIキーを作成します:
-
次の図のように、[Trend Cloud One Container Security Scanner] 画面から新しいキーを生成します
-
[Trend Cloud One API Keys] 画面で、次のように新しいキーを直接設定します。
- Trend Cloud Oneの管理ページに移動します。
- Scannerの役割が存在することを確認します。そうでない場合は、次の図に従って、新しいScannerの役割を作成します。
- 次の図のように、 Scannerの役割を使用して新しい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 |
ヘルプ情報を表示する。 |
不正プログラム検索は、docker
、docker-archive
、oci-archive
、oci-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": []
}
]
}
}