トレンドマイクロArtifact Scanner (TMAS) は、アーティファクト (サポートされているアーティファクトを参照) に対して実行前の脆弱性および不正プログラムのスキャンを実施し、コンテナイメージのKubernetesなどの本番環境に到達する前に問題を特定して修正できるようにします。
Scanner は以下を検出できます。
- 脆弱性: TMASはオープンソースの脆弱性スキャンを実行できます。脆弱性データベースはオープンソースの脆弱性フィードから最新の脅威データを受信します。TMASはサポートされているオペレーティングシステムとプログラミング言語の脆弱性を見つけることができます。
- 不正プログラム: TMASは、最新のファイルレピュテーションおよびバリアント保護技術を使用して、トロイの木馬、ランサムウェア、スパイウェアなど、あらゆる種類の不正プログラムを検出できます。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パイプライン内のアーティファクトをスキャンします。TMAS CLIをCI/CDパイプラインにインストールして、アーティファクトが本番環境にデプロイされる前にスキャンを実行できます。脆弱性スキャンの場合、TMASはスキャンしたいアーティファクトを取得し、ソフトウェア部品表
(SBOM) を生成します。その後、SBOMをTrend Cloud Oneにアップロードして処理し、脆弱性レポートを返します。
TMASがスキャンできるアーティファクトの例は次のとおりです:
-
コンテナイメージ
-
バイナリファイル
-
ソースコードを含むディレクトリ
-
Open Container Initiative (OCI) アーカイブ
システム要件
次の表は、ほとんどのアーティファクトをスキャンするための最低システム要件を示しています。
ハードウェア
|
最小
|
推奨
|
ストレージ
|
16GB
|
16GB
|
RAM
|
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についてを参照してください。
[Obtain a Trend Cloud One API key:]
手順
- Trend Cloud Oneコンソールにログインします。
- に移動します。
- 次のいずれかのオプションで新しいAPIキーを作成してください:
-
次の図に従って、Trend Cloud One Container Security Scannersページで新しいキーを生成してください。
-
次のように、Trend Cloud One API Keysページで新しいキーを直接構成します。
- Trend Cloud One Administrationページに移動します。
- Scannerロールが存在することを確認してください。存在しない場合は、次の図に従って新しいScannerロールを作成してください。
- 次の図に従って、Scannerロールを使用して新しいAPIキーを構成します。
-
次に進む前に
APIキーを取得する際は、呼び出しているエンドポイントにAPIキーが関連付けられていることを確認してください。例えば、適切な認証を確保するために、
us-1
リージョンのエンドポイントを呼び出す予定がある場合は、us-1
アカウントでAPIキーを作成してください。これらのキーはTrend Cloud One Administrationコンソールから管理します。
[Add TMAS CLI to your PATH:]
export PATH="/path/to/tmas/binary/directory:$PATH"
一般の使用状況
tmas [command] [flags]
使用可能なコマンド
コマンド
|
説明
|
scan |
アーティファクトを、脆弱性または不正プログラムのいずれかのスキャナーを含む任意の組み合わせでスキャンします。
|
version |
現在のCLIバージョン (長い形式) を取得します。
|
help |
ヘルプ情報を表示する。
|
グローバルフラグ
Flag
|
説明
|
--version |
現在のCLIバージョンを取得 (短縮)。
|
-v, --verbose |
詳細度を上げる (-v = 情報, -vv = デバッグ)。
|
-h, --help |
ヘルプ情報を表示する。
|
検索コマンドの使用法
tmas scan [artifact] [flags]
検索コマンドフラグ
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, --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>
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_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を超えるファイルをスキップします。
- 単一レイヤーの最大サイズ制限は512 MBです。スキャンは512 MBを超えるレイヤーをスキップします。
プロキシ設定
CLIツールは、次のオプションの環境変数セットからプロキシ設定を読み込みます:
環境変数
|
必須/オプション
|
説明
|
NO_PROXY |
オプションかどうか
|
CLIツールのプロキシの設定をスキップしたい場合は、アーティファクトスキャンサービスおよび不正プログラムスキャンサービスのエンドポイントをホスト名のカンマ区切りリストに追加してください。アスタリスク
'*' のみがすべてのホストに一致することに注意してください。
|
HTTP_PROXY |
オプションかどうか
|
http://proxy.example.com |
HTTPS_PROXY |
オプションかどうか
|
https://proxy.example.com プロキシサーバがSOCKS5プロキシである場合、socks5://socks_proxy.example.com としてURLにSOCKS5プロトコルを指定する必要があります |
PROXY_USER |
オプションかどうか
|
Proxy-Authorization で使用される認証ヘッダーのオプションのユーザー名 |
PROXY_PASS |
オプションかどうか
|
PROXY_USER が構成されている場合にのみ使用される、Proxy-Authorization で使用される認証ヘッダーのオプションパスワード。 |
一時ファイルをクリーンアップ
トレンドマイクロ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": [] } ] } } }