
エージェンティックAIアプリケーションを検証するためのオープンソースリポジトリ: redteam, behavior, supply-chain, static analysis
NuGuard はオープンソースの AI アプリケーションセキュリティツールキットです。その目標は、エージェンティック AI アプリケーションに対して、最も広範なレッドチーミングと振る舞いの検証を提供することです。
NuGuard により、AI 開発者はアプリケーションの構築に集中でき、NuGuard はサプライチェーン攻撃、プロンプトインジェクション、MCP ツールの悪用、API 攻撃、データ流出など、幅広いセキュリティリスクに対して継続的にテストと検証を行います。NuGuard は開発者がセキュリティワークフローを加速し、自信を持って本番環境に迅速に移行することを可能にします。
NuGuard の商用版は、追加機能とサポートを備えた SaaS 製品として利用可能です。詳細は http://nuguard.ai をご確認ください。
実装済みで現在使用可能なコマンド:
nuguard sbomnuguard analyzenuguard scannuguard policynuguard behaviornuguard redteamuvPython CLI:
pip install nuguard
以下の手順では、ローカル開発環境のセットアップ方法を説明します。これは、最新のコードを実行したい場合、プロジェクトに貢献したい場合、またはローカル環境変数の設定が必要な LLM 支援機能を備えた CLI を実行したい場合に推奨されます。
uv sync --dev
CLI を実行するには:
uv run nuguard --help
または、仮想環境から:
. .venv/bin/activate
nuguard --help
docs/plugin-guide.md の指示に従って、Claude 用の NuGuard プラグインをセットアップし、会話内から /nuguard-sbom、/nuguard-analyze、/nuguard-redteam などのコマンドを直接実行できます。
nuguard sbom generate --source . --output app.sbom.json
リモートリポジトリをスキャンすることもできます:
nuguard sbom generate \
--from-repo https://github.com/org/repo \
--ref main \
--output app.sbom.json
nuguard analyze --sbom app.sbom.json --format markdown
典型的な出力形式:
markdownjsonsarifnuguard behavior \
--sbom app.sbom.json \
--target http://localhost:3000 \
--format markdown
nuguard redteam \
--config nuguard.yaml \
--output reports/redteam.md \
--format markdown
より豊富なレッドチームカバレッジのために、以下も指定できます:
--policy による認知ポリシー--canary によるカナリア値--config による設定ファイルnuguard scan \
--source . \
--output-dir nuguard-reports
デフォルトでは、SBOM 生成と静的解析を 1 回のパスで実行します。ポリシーとレッドチームの検証を含めるには、それらのステップをオプトインし、必要な入力を提供してください:
nuguard scan \
--source . \
--steps sbom,analyze,policy,redteam \
--policy cognitive_policy.md \
--target http://localhost:3000 \
--output-dir nuguard-reports
NuGuard は nuguard.yaml によるプロジェクト設定をサポートしています。編集可能なサンプルは nuguard.yaml.example にあります。
サンプル設定の主要項目:
sbom: 既存の SBOM パスsource: 生成元のソースディレクトリpolicy: 認知ポリシーパスllm: LLM 支援機能のモデル設定behavior: 動作テストのターゲット URL、エンドポイント、テストプロファイル設定redteam: ターゲット URL、エンドポイント、カナリアファイル、プロファイル、シナリオフィルター、ガイド付き会話設定、発見トリガー制御(finding_triggers.*)analyze: 最小重要度しきい値database: SQLite または Postgres バックエンドのストレージ設定output: 出力形式と失敗しきい値CLI フラグは nuguard.yaml よりも優先され、nuguard.yaml は環境変数と組み込みのデフォルトよりも優先されます。
NuGuard は、動的テスト中にシードされたカナリア値を監視し、信頼性の高い流出発見を生成できます。canary.example.json から始め、ローカルの canary.json を作成し、それらの値をターゲットシステムにシードしてから、--canary でそのファイルを nuguard redteam に指定します。
詳細は docs/redteam-engine.md を参照してください。
開発依存関係のインストール:
make dev
テストの実行:
make test
リンターと型チェックの実行:
make lint
コードベースのフォーマット:
make fmt
このリポジトリには、TestPyPI および PyPI へのトラステッドパブリッシングのための GitHub Actions ワークフローが含まれています:
ワークフローが公開できるようにするには、nuguard プロジェクトの TestPyPI と PyPI でトラステッドパブリッシャーを以下のように設定してください:
NuGuardAInuguardpublish-testpypi.yml または publish-pypi.ymltestpypi または pypi推奨されるリリースフロー:
TestPyPI または PyPI に公開する前に、クイックマルチアプリ健全性ゲートを実行してください。
ワンショットランナー:
bash tests/apps/prepublish-sanity.sh
このランナーは以下を実行します:
nuguard --help と重要なローカルテスト)intent_happy_path ワークフローを使用した動的モードでの動作実行profile: ci を使用したレッドチーム実行ランナーが使用する公開前設定ファイル:
tests/apps/openai-cs-agents-demo/nuguard.prepublish.yamltests/apps/Gemini-Auto-app/nuguard.prepublish.yamltests/apps/pinnacle-bank-app/nuguard-azure.prepublish.yaml必要に応じてアプリごとに手動で実行:
# OpenAI CS agents demo
uv run nuguard sbom generate --config tests/apps/openai-cs-agents-demo/nuguard.prepublish.yaml --format json -o tests/apps/openai-cs-agents-demo/openai-cs.sbom.json
uv run nuguard behavior --config tests/apps/openai-cs-agents-demo/nuguard.prepublish.yaml --mode dynamic --format json --format markdown --output tests/apps/openai-cs-agents-demo/reports/openai-cs-prepublish-behavior --verbose
uv run nuguard redteam --config tests/apps/openai-cs-agents-demo/nuguard.prepublish.yaml --format json --format markdown --output tests/apps/openai-cs-agents-demo/reports/openai-cs-prepublish-redteam --verbose
# Gemini Auto app
uv run nuguard sbom generate --config tests/apps/Gemini-Auto-app/nuguard.prepublish.yaml --format json -o tests/apps/Gemini-Auto-app/gemini-auto.sbom.json
uv run nuguard behavior --config tests/apps/Gemini-Auto-app/nuguard.prepublish.yaml --mode dynamic --format json --format markdown --output tests/apps/Gemini-Auto-app/reports/gemini-auto-prepublish-behavior --verbose
uv run nuguard redteam --config tests/apps/Gemini-Auto-app/nuguard.prepublish.yaml --format json --format markdown --output tests/apps/Gemini-Auto-app/reports/gemini-auto-prepublish-redteam --verbose
# Pinnacle Bank app
uv run nuguard sbom generate --config tests/apps/pinnacle-bank-app/nuguard-azure.prepublish.yaml --format json -o tests/apps/pinnacle-bank-app/pinnacle-bank.sbom.json
uv run nuguard behavior --config tests/apps/pinnacle-bank-app/nuguard-azure.prepublish.yaml --mode dynamic --format json --format markdown --output tests/apps/pinnacle-bank-app/reports/pinnacle-bank-prepublish-behavior --verbose
uv run nuguard redteam --config tests/apps/pinnacle-bank-app/nuguard-azure.prepublish.yaml --format json --format markdown --output tests/apps/pinnacle-bank-app/reports/pinnacle-bank-prepublish-redteam --verbose
重要:
|| true を使用しないでください。2 は発見事項またはポリシーゲートを示す可能性があります。シグナルとして扱い、レポート品質チェックに基づいて合格/不合格を判断してください。tests/output/ の下にサンプル出力とベンチマークフィクスチャが含まれています。ライセンス情報は LICENSE ファイルに記載されています。