Skip to content
KitploitKITPLOIT
ツールエクスプロイトブログ
Log in
提出
ツールエクスプロイトブログ
提出

ハッキング、侵入テスト、サイバーセキュリティツールをあなたのセキュリティアーセナルに!

Kitploitはハッキング、サイバーセキュリティ、ペネトレーションテストのツールディレクトリです。最新のプロジェクトアップデートを見つけて、脆弱性の発見、システム分析、テストの自動化、セキュリティの強化を行いましょう。

フィードお問い合わせプライバシー© 2026 Kitploit

ツールディレクトリ

カテゴリ

すべてのカテゴリを見る
Loading categories
meles — コンテナイメージ向けマルウェアスキャナー:デーモンレス、レイヤー対応、ClamAV と YARA | Kitploit
ツール/GitHubGitHub/movray/meles
防御ツール静的分析脆弱性スキャナーコンテナセキュリティマルウェア分析クラウドセキュリティDevSecOpsサプライチェーンセキュリティインシデントレスポンス
GitHubmovray/meles

meles

コンテナイメージ向けマルウェアスキャナー:デーモンレス、レイヤー対応、ClamAV と YARA

31日前未レビュー

人気

すべて見る →

コミュニティで最も使われているツールを見つけましょう。

すべてのツールを探索

ツールコレクションを閲覧

すべてのツールを見る →
共有
リポジトリを見るウェブサイト

meles ロゴ: アナグマの頭

meles

meles はコンテナイメージ向けのマルウェアスキャナです。イメージ参照に対してコマンド1つで実行でき、Docker デーモンは不要、CI フレンドリーな終了コードを備えています。Kubernetes では、ポッドが実行するすべてのイメージもスキャンし、必要に応じて新しいポッドのイメージがスキャンされるまでポッドを保留します。

meles は、イメージが実行される前にその内容を検査します。これは脆弱性スキャナや Falco のようなランタイム検出を補完するものであり、それらを置き換えるものではありません。

名前は Meles meles(ヨーロッパアナグマ)に由来します。レイヤーを掘り進むのです。

得られるもの

meles ダッシュボード: クイックスキャンフォーム、追跡中および感染済みイメージのカウンター、要注意セクションにある感染した EICAR テストイメージ、最近の実行履歴
  • CLI と CI: meles image <ref> はマルウェアを検出するとパイプラインを失敗させます。出力はテーブル、JSON、SARIF 形式に対応し、誤検知のための無視ルールも利用できます。
  • Web UI: クイックスキャン、cron スケジュール、実行履歴、クラスタ全体のレポート。
  • Operator: すべてのポッドのイメージをスキャンし、ワークロードの隣に MalwareReport を書き込みます。オプションで Prometheus アラートも利用できます。
  • スキャンゲート: オプション機能で、名前空間ごとに新しいポッドのイメージがスキャンされるまでポッドを保留し、スキャン済みのダイジェストを固定します。
  • Harbor: プラグイン可能なスキャナとして、プッシュされたすべてのイメージをスキャンします。Trivy と連携して1つのレポートにまとめることもできます。

TL;DR

お使いのマシンで試してみてください(Linux amd64、Docker、bash):

curl -fsSL https://github.com/movray/meles/releases/download/v0.3.3/meles_0.3.3_linux_amd64.tar.gz | tar -xz meles
docker run -d --name clamd -p 127.0.0.1:3310:3310 clamav/clamav:1.4
export MELES_CLAMD=tcp://127.0.0.1:3310
until (exec 3<>/dev/tcp/127.0.0.1/3310 && printf 'zPING\0' >&3 && head -c4 <&3 | grep -q PONG) 2>/dev/null; do sleep 5; done
./meles selftest
./meles image alpine:3.20

またはクラスタ内(クラスタ管理者、デフォルトの StorageClass、ノード上に約 2 GB の空きメモリ):

kubectl create namespace meles
kubectl label namespace meles pod-security.kubernetes.io/enforce=baseline
helm install meles oci://ghcr.io/movray/charts/meles --version 0.3.3 -n meles --set operator.enabled=true
kubectl -n meles rollout status deploy/meles-clamd --timeout=15m
kubectl get malwarereports -A                            # every image running in your cluster
kubectl -n meles port-forward svc/meles-server 8080:80   # http://localhost:8080/

オペレーターは現在、すべての Pod のイメージをプルしてスキャンします。これはレジストリのプル制限にカウントされますが、レポートするだけで Pod には触れません。レポートは数分以内に表示されます。非常に大きなバイナリは Incomplete で終わることがあり、これは決してクリーンではありません: 結果の読み方を参照してください。

ポートフォワードは確認するための最も簡単な方法にすぎません。恒久的に使用する場合は、server.ingress または server.httpRoute で UI を公開し、server.oauth2Proxy でログインを前に置きます。これらはすべてチャートの values にあります: Web UI のログイン。meles 自体にはログイン機能がないため、ログインなしで UI を公開しないでください。

後続のレイヤーによって隠されたファイルから Kubernetes のスキャンゲートまでのステップバイステップのツアー: docs/getting-started.md。

なぜ

  • イメージスキャナーは通常、脆弱性、設定ミス、シークレットをカバーしますが、 meles はマルウェア検出を追加します。
  • meles は最終的なファイルシステムだけでなく、すべてのレイヤーを個別にスキャンします。後続のレイヤーが削除したファイル(ホワイトアウト)もイメージに同梱されており、それを追加したレイヤーと削除したレイヤーとともに検出されます。
  • マルチアーキテクチャイメージのすべてのプラットフォームがデフォルトでスキャンされます。そうでなければ amd64 の CI ランナーは arm64 バリアントのマルウェアを見逃してしまいます。
  • Docker ソケットは不要です。イメージはレジストリから直接プルされます。
  • スキャンは ClamAV の clamd によってソケットプロトコル経由で行われます。meles は libclamav にリンクせず、Apache-2.0 ライセンスのままです。
  • ClamAV のシグネチャに加えて、Helm チャートには暗号通貨マイナー、Linux マルウェア、ウェブシェル、コンテナへの攻撃に対応する約 140 の厳選された YARA ルールが同梱されており、これらも clamd によって実行されます。

デフォルトでは meles はレポートするだけで、何も削除しません。これはイメージ署名、SBOM、ランタイム検出の代替にはなりません。

ドキュメント

  • docs/getting-started.md: 最初のスキャンからクラスタ内のスキャンゲートまでのステップバイステップのツアー
  • docs/results.md: Clean、Infected、Incomplete、Error の意味、Clean が保証しないこと、制限と誤検知
  • docs/popular-images.md: 47 の人気イメージと 14 の既知の悪意あるイメージをスキャンした結果
  • この README: meles の使い方(CLI、Web UI、Kubernetes、Harbor)
  • docs/architecture.md: 仕組み、状態の保存場所、セキュリティモデル、設計上の決定
  • docs/development.md: ビルド、テスト、リリース
  • docs/architecture.md#planned-improvements: 計画されているがまだ実装されていないもの
  • CONTRIBUTING.md: イシューとプルリクエスト
  • SECURITY.md: 脆弱性の非公開報告

インストール

各リリースには、Linux および macOS 用のバイナリ(amd64、arm64)、マルチアーキテクチャイメージ、Helm チャートが含まれています:

VERSION=0.3.3
# Binary
curl -fsSLO https://github.com/movray/meles/releases/download/v$VERSION/meles_${VERSION}_linux_amd64.tar.gz
tar -xzf meles_${VERSION}_linux_amd64.tar.gz meles
# Image (linux/amd64, linux/arm64; no shell, runs as non-root)
docker run --rm ghcr.io/movray/meles:$VERSION version
# Helm chart (see Kubernetes below)
helm install meles oci://ghcr.io/movray/charts/meles --version $VERSION -n meles -f my-values.yaml
# From source
go install github.com/movray/meles/cmd/meles@v$VERSION

バイナリ、イメージ、チャートは リリースワークフローによってビルドされ、 署名付きのビルド来歴が付与されます。イメージは公開前に meles と Trivy でスキャンされます。 GitHub CLI で来歴を確認してください:

gh attestation verify meles_${VERSION}_linux_amd64.tar.gz -R movray/meles
gh attestation verify oci://ghcr.io/movray/meles:$VERSION -R movray/meles
gh attestation verify oci://ghcr.io/movray/charts/meles:$VERSION -R movray/meles

イメージとチャートも cosign(キーレス)で署名されているため、Kyverno や Sigstore policy-controller などのアドミッションポリシーで検証できます。 署名は OCI リファラとして保存された Sigstore バンドルです。cosign 3 で検証してください(cosign 2 では --new-bundle-format が必要です):

cosign verify ghcr.io/movray/meles:$VERSION \
  --certificate-oidc-issuer https://token.actions.githubusercontent.com \
  --certificate-identity-regexp '^https://github.com/movray/meles/\.github/workflows/release\.yml@refs/tags/v'

クイックスタート

稼働中の clamd が必要です。apt install clamav-daemon を実行すると、meles はソケット(/run/clamav/clamd.ctl)を自動的に見つけます。clamav/clamav イメージも使用できます(TL;DR を参照。シグネチャの読み込みには1〜2分かかります)。

meles selftest                     # checks the whole chain with EICAR test images
                                   # (--yara: also the default YARA rules, if loaded)
meles image alpine:3.20
meles image --format json --platform linux/amd64 ghcr.io/org/app:1.2
alpine:3.20 (d9e853e87e55)
engine: ClamAV 1.4.3, signatures 28159, scanned in 2.6s

PLATFORM        LAYERS  FILES  FINDINGS  SKIPPED
linux/amd64     1       87     0         0
linux/arm64/v8  1       87     0         0

No malware found.

終了コード

コード意味
0クリーン(または --exit-code 0 によるレポートのみのモードでの検出結果)
1マルウェアを検出、またはファイルがスキャンされなかった(--exit-code と --skipped-exit-code で変更可能)
2エラー: プル、エンジン、または設定。決してクリーンとして報告されない。

meles はデフォルトで検出結果があるとパイプラインを失敗させるため、追加のフラグなしでゲートとして機能します。

スキャンされなかったファイル(--max-file-size を超える、または clamd の制限のいずれかを超える)はスキップとして一覧表示され、レポートは不完全としてマークされます。テーブルには「No malware found.」の代わりに「Scan INCOMPLETE」と表示され、JSON レポートには "complete": false が含まれ、meles は検出時と同様に 1 で終了します。サイズ制限はファイルをそれより大きくすることで回避できるため、スキャンされていないファイルがセキュリティゲートを通過してはなりません。スキップされたファイルを報告するだけにするには --skipped-exit-code 0 を、エラーとして扱うには 2 を使用してください。

ツールをダウンロード