
nuguard v0.9.1
エージェンティックAIアプリケーションを検証するためのオープンソースリポジトリ: redteam, behavior, supply-chain, static analysis
NuGuard Open Source
NuGuard はオープンソースの AI アプリケーションセキュリティツールキットです。その目標は、エージェンティック AI アプリケーションに対して、最も広範なレッドチーミングと振る舞いの検証を提供することです。
NuGuard により、AI 開発者はアプリケーションの構築に集中でき、NuGuard はサプライチェーン攻撃、プロンプトインジェクション、MCP ツールの悪用、API 攻撃、データ流出など、幅広いセキュリティリスクに対して継続的にテストと検証を行います。NuGuard は開発者がセキュリティワークフローを加速し、自信を持って本番環境に迅速に移行することを可能にします。
NuGuard の商用版は、追加機能とサポートを備えた SaaS 製品として利用可能です。詳細は http://nuguard.ai をご確認ください。
機能
- ローカルコードベースまたは Git リポジトリから AI-SBOM を生成
- SBOM を分析し、構造的な AI セキュリティリスクとサプライチェーンの問題を特定
- SBOM に基づいて AI 動作ポリシーを提案
- AI-SBOM と動作ポリシーに特化した静的およびランタイム動作テストを実行
- サンドボックス化された AI アプリケーションをレッドチームでテスト:最も広範かつ最新の攻撃ベクトルカタログとカスタム構築シナリオ。これにはプロンプトインジェクション、ツールの悪用、データ流出、およびターゲットシステムのさまざまなサブエージェント、ツール、機能を行使する関連攻撃シナリオが含まれます。
- 発見事項に対する自動修正提案(コードスニペットやポリシー調整を含む)
- 発見事項をテキスト、JSON、Markdown、SARIF 指向のワークフローでエクスポート
現在の CLI サーフェス
実装済みで現在使用可能なコマンド:
nuguard sbomnuguard analyzenuguard scannuguard policynuguard behaviornuguard redteam
必要条件
- Python 3.12+
- 推奨されるローカルワークフローには
uv
インストール
Python CLI:
pip install nuguard
以下の手順では、ローカル開発環境のセットアップ方法を説明します。これは、最新のコードを実行したい場合、プロジェクトに貢献したい場合、またはローカル環境変数の設定が必要な LLM 支援機能を備えた CLI を実行したい場合に推奨されます。
uv sync --dev
CLI を実行するには:
uv run nuguard --help
または、仮想環境から:
. .venv/bin/activate
nuguard --help
Claude ユーザーはプラグインコマンドを使用できます。
docs/plugin-guide.md の指示に従って、Claude 用の NuGuard プラグインをセットアップし、会話内から /nuguard-sbom、/nuguard-analyze、/nuguard-redteam などのコマンドを直接実行できます。
クイックスタート
1. AI-SBOM の生成
nuguard sbom generate --source . --output app.sbom.json
リモートリポジトリをスキャンすることもできます:
nuguard sbom generate \
--from-repo https://github.com/org/repo \
--ref main \
--output app.sbom.json
2. 静的解析の実行
nuguard analyze --sbom app.sbom.json --format markdown
典型的な出力形式:
- 人間によるレビュー用の
markdown - 自動化用の
json - コードスキャンパイプライン用の
sarif
3. 動作テスト
nuguard behavior \
--sbom app.sbom.json \
--target http://localhost:3000 \
--format markdown
4. ライブアプリのレッドチームテスト
nuguard redteam \
--config nuguard.yaml \
--output reports/redteam.md \
--format markdown
より豊富なレッドチームカバレッジのために、以下も指定できます:
--policyによる認知ポリシー--canaryによるカナリア値--configによる設定ファイル
5. 統合パイプラインの実行
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 でトラステッドパブリッシャーを以下のように設定してください:
- owner/org:
NuGuardAI - repository:
nuguard - workflow file:
publish-testpypi.ymlまたはpublish-pypi.yml - environment:
testpypiまたはpypi
推奨されるリリースフロー:
- GitHub Actions から TestPyPI ワークフローを手動で実行します。
- TestPyPI からパッケージのインストールと CLI の動作を確認します。
- GitHub リリースを作成して 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/の下にサンプル出力とベンチマークフィクスチャが含まれています。 - 一部のレッドチームテストとベンチマークテストはオプトインであり、環境変数によって制御されます。
- LLM 支援機能は、プロバイダーの認証情報が環境変数として利用可能であることに依存しています。
ライセンス
ライセンス情報は LICENSE ファイルに記載されています。