このページのトピック
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の最新バージョンを確認してください。
次のアーキテクチャがサポートされています:
- Darwin_arm64 (MacOS - Apple Silicon チップセット)
- Darwin_x86_64 (MacOS - Intelチップセット)
- Linux_arm64
- Linux_i386
- Linux_x86_64
- Windows_arm64
- Windows_i386
- Windows_x86_64
最新バージョンのTMAS CLIへのアップグレード
最新機能へのアクセスと最適なパフォーマンスを確保するために、定期的にTMASの最新バージョンにアップグレードしてください。
-
更新されたバイナリをダウンロードしてください。最新バージョンのTMAS CLIをダウンロードするリンクはダウンロードとインストール にあります。
-
既存の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キーを取得する:
- Trend Cloud One コンソール にログインしてください。
- Container Security > Scanners に移動します。
-
次のいずれかのオプションを使用して新しいAPIキーを作成してください:
- 次の図に従って、Trend Cloud One Container Security Scannersページで新しいキーを生成してください。
-
Trend Cloud One API Keysページで新しいキーを直接構成するには、次の手順に従います:
- Scannerロールが存在することを確認してください。存在しない場合は、次の図に従って新しいScannerロールを作成してください。
- 次の図に従って、Scannerロールを使用して新しい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 |
不正プログラムのスキャンを有効にする (オプション)。docker 、docker-archive 、oci-archive 、oci-dir 、registry のアーティファクトタイプをサポートします。 |
--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 |
ヘルプ情報を表示します。 |
次の点に注意してください:
- 不正プログラムスキャンは、
docker
、docker-archive
、oci-archive
、oci-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": []
}
]
}
}
}