
AgentField上のAIネイティブなコードセキュリティ監査ツールで、判定、トレース、実用的なエビデンスを用いて悪用可能性を証明します。
他のツールはパターンをフラグ付けします。SEC-AFは悪用可能性を証明します:すべての検出結果には、判定、データフローのトレース、そして行動に移せる証拠が付属します。無料、オープンソース、APIコール1回。30件の検証済み検出結果を含む完全な監査は、LLM呼び出しで約1.40ドルのコストです。
af CLIでトリガーします(af ≥ 0.1.87が必要)— ライブ進捗をストリーム表示し、結果を出力します:```bash
af call sec-af.audit --in '{"repo_url": "https://github.com/dolevf/Damn-Vulnerable-GraphQL-Application"}'
生のHTTPがお好みですか?curlで直接APIを叩いてください:```bash
curl -X POST http://localhost:8080/api/v1/execute/async/sec-af.audit \
-H "Content-Type: application/json" \
-d '{"input": {"repo_url": "https://github.com/dolevf/Damn-Vulnerable-GraphQL-Application"}}'
これはSEC-AFがDVGA(意図的に脆弱なGraphQLアプリケーション)を監査した実際の結果です:```jsonc { "title": "OS Command Injection in run_cmd Helper Function", "severity": "critical", "verdict": "confirmed", // not "maybe" — confirmed exploitable "evidence_level": 5, "cwe_id": "CWE-78",
"rationale": "Tracer confirms complete data flow from GraphQL parameters (host, port, path, scheme, cmd, arg) to os.popen(cmd).read() sink. Sanitization functions are bypassable in Easy mode...",
"proof": { "verification_method": "composite_subagent_chain:sast", "data_flow_trace": [ { "description": "core/views.py:203 — GraphQL args defined (host, port, path, scheme)", "tainted": true }, { "description": "core/views.py:210 — URL constructed from user input", "tainted": true }, { "description": "core/views.py:211 — helpers.run_cmd(f'curl {url}') called", "tainted": true }, { "description": "core/helpers.py:9 — os.popen(cmd).read() executes input", "tainted": true } ] },
"location": { "file_path": "core/helpers.py", "start_line": 9, "code_snippet": "def run_cmd(cmd):\n return os.popen(cmd).read()" } }
すべての発見結果には、**判定** (`confirmed` / `likely` / `inconclusive` / `not_exploitable`)、証明オブジェクト(完全な汚染経路トレース付き)、そして正確なコード位置が含まれます。「これは問題かもしれません」といった曖昧なものではありません。SEC-AFはデータをソースからシンクまで追跡し、実際に悪用可能かどうかを証明します。
> 完全なベンチマーク出力(30件の発見結果):[`exampl/dvga-benchmark-result.json`](https://github.com/agent-field/sec-af/blob/HEAD/exampl/dvga-benchmark-result.json) | パフォーマンス分析:[`exampl/benchmark-analysis.json`](https://github.com/agent-field/sec-af/blob/HEAD/exampl/benchmark-analysis.json)
## ベンチマーク:DVGA
SEC-AFを [Damn Vulnerable GraphQL Application](https://github.com/dolevf/Damn-Vulnerable-GraphQL-Application) に対して実行しました。これは21の文書化されたセキュリティシナリオを持つ、意図的に脆弱に作られたアプリケーションです。
| メトリクス | 値 |
|---|---|
| 生の発見結果数 | 106 |
| AI重複除去後 | 61 |
| **敵対的検証後** | **28件確認済み** |
| 結論が出ず(手動レビューが必要) | 1 |
| 悪用不可(正しく却下) | 1 |
| ノイズ削減率 | 94% |
| DAGエッジ数(リーズナー呼び出し) | 82 |
| エージェント呼び出し数 | 約166~255 |
| 実行戦略数 | 11 |
| ウォールクロック時間 | 約78分 |
| 推定コスト(Kimi K2.5) | 約$0.18~$0.90 |
<details>
<summary><strong>内訳:カテゴリ別確認済み発見結果30件</strong></summary>
| カテゴリ | 件数 | 例 |
|---|---|---|
| 認証欠如 | 8 | ImportPaste、delete_all_pastes、system_debug、CreateUser、ファイルアップロード |
| コマンドインジェクション | 4 | ImportPaste、system_debug、system_diagnostics 経由の `os.popen(cmd)` |
| SQLインジェクション | 3 | `resolve_pastes` での未サニタイズ `filter`、LIKEパターンインジェクション、ログイン |
| 認証バイパス | 3 | JWT署名無効、JWT認可バイパス、脆弱なパスワード認証 |
| 平文クレデンシャル | 3 | 平文パスワード保存、平文比較、診断内のパスワード |
| SSRF | 2 | ImportPasteミューテーションがユーザー指定URLをサーバーサイドで辿る |
| ビジネスロジック/URLサニタイズ | 2 | 不十分なURLサニタイズ、認証なし大量削除 |
| DoS/リソース枯渇 | 3 | users/auditsクエリにページネーションなし、制御不能なsimulate_load |
| 設定/シークレット | 2 | ハードコードされたJWT/Flaskシークレット、本番環境でデバッグモード有効 |
</details>
<details>
<summary><strong>設計パターン:AIネイティブなセキュリティ分析の仕組み</strong></summary>
SEC-AFは、単一のモノリシックスキャンを実行するのではなく、多数の特化型AIエージェントを構成することで初めて可能となる、いくつかのアーキテクチャパターンを適用しています。これらのパターンは、AI駆動型セキュリティ分析における根本的な課題に対処します。
**1. 敵対的エージェントの緊張関係(HUNT vs. PROVE)**
ほとんどのAIセキュリティツールは、単一のモデルに「これは脆弱ですか?」と尋ね、その答えを受け入れます。SEC-AFは、発見エージェントと反証エージェントを構造的に分離します。ハンターは脆弱性を見つけるように動機づけられ、プローバーはそれらを反証するように動機づけられます。各発見結果は、4エージェントによる検証チェーンを通過します。トレーサーがデータフローを再構築し、サニタイゼーションアナライザーがハンターが見逃したかもしれない緩和策を探し、エクスプロイト仮説生成器が具体的な攻撃シナリオを構築し、判定エージェントがすべての矛盾する証拠を評価します。エージェント間のこの敵対的緊張こそが94%のノイズ削減を実現する原動力であり、アーキテクチャ自体が懐疑性をエンコードしています。
**2. 段階的絞り込みによるシグナルカスケード**
すべての発見結果をユーザーにそのまま提示する代わりに、パイプラインは各段階でシグナルを圧縮します:106の生の発見 → AI重複除去後61 → 敵対的検証後30。各フェーズがフィルターとして機能します。これは、人間のセキュリティチームがトリアージを行う方法——最初に広く発見し、その後厳格な精査を進める——を反映しています。重要な洞察は、各フィルターが異なる種類のAI推論であることです:重複除去には意味的類似性、検証には汚染分析、確認にはエクスプロイト構築です。
**3. コンテキストプルーニングによる情報経済**
LLMは無関係なコンテキストを与えられると幻覚を起こしやすくなります。SEC-AFは各エージェントが必要とする情報のみをルーティングします:インジェクションハンターはデータフローマップと入力エントリポイントに絞られた偵察コンテキストを受け取り、暗号ハンターは依存関係ツリーと鍵管理パターンを受け取ります。検証者は、特定の検証方法に必要なフィールドのみを含む発見結果の投影ビューを受け取ります。この戦略ごとのコンテキストプルーニングにより、幻覚とコストの両方が削減され、エージェントは決して見ることのない情報で混乱することがなくなります。
**4. ストリーミングによるフェーズオーバーラップ**
従来のパイプラインは順次実行されます:偵察を完了し、ハンティングを開始し、証明を開始します。SEC-AFは `asyncio.Queue` を介してフェーズをオーバーラップさせます——ハンターは偵察出力が到着次第消費を開始し、各ハンターが完了するにつれて重複除去が発見結果を処理します。プローバーは、後のハンターがまだ実行中であっても、最初の重複除去済み発見結果の検証を開始します。このストリーミングアーキテクチャにより、シグナルカスケードを犠牲にすることなくウォールクロック時間が短縮されます。各発見結果は依然としてすべてのフィルターを通過しますが、より早期に通過します。
**5. AIゲートによる動的ルーティング**
パイプラインは、発見された内容に基づいて実行時に適応します。AIゲートが偵察出力を調べ、アクティブにするハント戦略を選択します。JWT認証付きFlaskアプリは、gRPCを使用するGoマイクロサービスとは異なるハンターをトリガーします。別のCWE拡張ゲートは、検出されたテクノロジースタックに基づいて脆弱性ターゲットリストを動的に拡大します。到達可能性ゲートは、依存関係の脆弱性に悪用可能な呼び出しパスがあるかどうかを評価し、到達不能なコードに検証リソースを浪費するのを防ぎます。
**6. コーディングエージェントのためのガイド付き自律性**
SEC-AFは、AgentFieldハーネスを介してコーディングエージェント(Claude Code、OpenCode、Codex)上で動作します。エージェントに単一の巨大なプロンプトを与える代わりに、各リーズナーはフェーズ認識型のガイド付き自律性を提供します:エージェントは狭いタスク定義、平坦な出力スキーマ(2~4フィールド)、および戦略固有のコンテキストを受け取ります。エージェントはこれらの境界内で完全な自律性を持ち——ファイルの読み取り、コードのトレース、自由な推論が可能——ハーネスは出力の「形状」を制約します。これにより、自律エージェントがタスクから逸脱したり、非構造化された結果を生成したりするという一般的な失敗モードを防止します。
**7. 完全な観測可能性を持つ構成可能なリーズナーDAG**
すべてのエージェント呼び出しはAgentFieldコントロールプレーンを流れ、監査の完全な有向非巡回グラフ(DAG)を作成します。どのハンターがどの発見結果を見つけたか、各検証にどれだけ時間がかかったか、プローバーがどのような証拠を生成したか、パイプラインがどこで時間を費やしたかを確認できます。新しい脆弱性クラスの追加は1ファイル——新しいハンター——で可能です。オーケストレーターがそれを発見し、コンテキストをルーティングし、その発見結果を既存の重複除去→証明→修復パイプラインに統合します。DAGこそがアーキテクチャです。
</details>
<details>
<summary><strong>見逃したもの(とその理由)</strong></summary>
見逃した9つのシナリオは、主に**GraphQLプロトコルレベルの攻撃**です:バッチクエリ、深い再帰、エイリアスの悪用、フィールド重複、イントロスペクションの露出。これらにはランタイム/DAST分析が必要です。SEC-AFは現在SASTに焦点を当てています。プロトコルレベルの検出はロードマップにあります。
</details>
## 仕組み
SEC-AFは [Composite Intelligence](https://github.com/Agent-Field/agentfield) の哲学に基づいて構築されています。単一のモノリシックなLLM呼び出しに依存する代わりに、多数の焦点を絞ったガイド付きLLM呼び出しを、**リーズナーDAG** に構成します。このDAGでは、アーキテクチャ自体が知能をエンコードしています(このパターンの詳細については、[The Atomic Unit of Intelligence](https://www.santoshkumarradha.com/writing/atomic-unit-of-intelligence) を参照)。各LLM呼び出しは、平坦なPydanticスキーマ(2〜4属性)を持つ、小さく明確に定義されたタスクを処理します。オーケストレーターはコンテキストフロー、並列処理、動的ルーティングを管理します。
### アーキテクチャ:リーズナー呼び出しグラフ(DAG)
すべてのフェーズは `@reasoner` であり、AgentFieldコントロールプレーンを介してサブリーズナーを呼び出し、特定のクエリに対して合計約200〜300のエージェントが同期的に動作します。
<p align="center">
<img src="https://assets.kitploit.com/production/public/readmes/7491/d3e99c5c9b7067b17005f71ecb0f7c7abeb9d7fc8843d33938de9f755f416b7b.png" alt="SEC-AF シグナルカスケードパイプライン — RECON → HUNT → DEDUP → PROVE → OUTPUT" width="100%" />
</p>
### シグナルカスケードパイプライン
各フェーズでシグナルが絞り込まれます。生の発見結果は、徐々に厳しくなるゲートを通じてフィルタリングされます。
| フェーズ | 目的 | 並列処理 |
|---|---|---|
| **RECON** | アーキテクチャ、依存関係、データフロー、セキュリティコンテキストをマッピング | 3方向並列(arch + deps + config)、その後2方向(data flow + security) |
| **HUNT** | 10以上の専門戦略ハンターを実行 | セマフォ制限付き並列(デフォルト4同時実行)、インクリメンタル重複除去 |
| **PROVE** | 敵対的検証:各発見結果を**反証**することを試みる | セマフォ制限付き並列(デフォルト3同時実行) |
| **REMEDIATION** | 確認済み/可能性が高い発見結果に対する修正提案を生成 | セマフォ制限付き並列(デフォルト3同時実行) |
### マルチリーズナーアーキテクチャの理由
ほとんどのAIセキュリティツールは1つの大きなプロンプトを実行し、LLMが正しく答えてくれることを期待します。SEC-AFは問題を約258の焦点を絞ったエージェント呼び出しに分解し、各エージェントは平坦なスキーマ(2〜4フィールド)と狭いタスクを持ちます。アーキテクチャが推論戦略をエンコードしており、プロンプトではありません(これが重要な理由については [The Atomic Unit of Intelligence](https://www.santoshkumarradha.com/writing/atomic-unit-of-intelligence) を参照)。
- **1つの強力なエージェントよりも多くの焦点を絞ったエージェント。** 単一のLLM呼び出しでは、アーキテクチャのマッピング、データフローのトレース、インジェクションのハンティング、悪用可能性の検証、修正の提案を同時に行うことはできません。SEC-AFはこれらの各タスクを、1つのことをうまく実行する個別のリーズナーに割り当てます。オーケストレーターが構成、並列処理、コンテキストルーティングを処理します。
- **確証バイアスではなく、敵対的検証。** PROVEフェーズは、発見結果ごとに反対の目標を持つ4つのサブエージェントを実行します。トレーサーはデータフローを再構築し、サニタイゼーションアナライザーはブロックを探し、エクスプロイト仮説生成器は攻撃を構築し、判定エージェントはすべての証拠を評価します。エージェント間のこの緊張関係により、単一モデルに「これは悪用可能ですか?」と尋ねるよりも高い信頼性が得られます。
- **AIゲートによる動的ルーティング。** システムは実行時に適応します。AIゲートが偵察出力を調べ、アクティブにするハント戦略を選択します。別のゲートは、検出されたスタックに基づいてCWEターゲットリストを拡張します。JWT認証付きFlaskアプリは、gRPCを使用するGoマイクロサービスとは異なるハンターを取得します。
- **段階的なシグナル絞り込み。** 106の生の発見結果は、重複除去後61、敵対的検証後30となり、94%のノイズ削減を実現します。各フェーズはフィルターです。パイプラインはノイズを圧縮し、脆弱性を検出してそのまま出力するだけではありません。
- **情報経済。** 各エージェントは必要なものだけを見ます。ハンターは戦略に合わせてプルーニングされた偵察コンテキストを受け取ります。検証者は最小限のフィールドを持つ発見結果の投影ビューを受け取ります。これにより幻覚が減少し、コストが削減され、各LLM呼び出しの焦点が保たれます。
- **インクリメンタルストリーミング。** 重複除去はハンターがまだ生成中であってもコンシューマーとして実行されます。各ハンターが完了するにつれて発見結果はフィンガープリントベースで重複除去され、最後にセマンティックパスがクロス戦略の重複を捕捉します。パイプラインはバッチ処理ではなくストリーミング処理を行います。
## 比較
> 主張は公式ドキュメントと料金ページからの引用です。誤りがある場合は、[イシューを開いて](https://github.com/Agent-Field/sec-af/issues)ください。
| | SEC-AF | Nullify | Snyk Code | Semgrep | CodeQL |
|---|---|---|---|---|---|
| **アプローチ** | **AIネイティブ** | **AIネイティブ** | **AI支援** | **ルールベース** | **ルールベース** |
| | マルチリーズナーDAG・LLMがコードを推論 | 自律型セキュリティワークフォース | DeepCode AIエンジン | パターン+汚染マッチング | セマンティック分析+データフロー |
| **オープンソース** | ✅ Apache 2.0 | ❌ プロプライエタリ | ❌ プロプライエタリ | エンジン:LGPL-2.1・Proルール:プロプライエタリ | クエリ:MIT・エンジン:プロプライエタリ |
| **検証済み発見結果** | ✅ 敵対的PROVEフェーズ・発見結果ごとに判定+証明 | ✅ エクスプロイトの証拠生成 | ❌ 優先度スコア(不透明)・エクスプロイト証明なし | ❌ パターンマッチのみ | ❌ 静的解析アラート |
| **発見結果ごとの証拠** | 汚染伝播付きデータフロートレース | エクスプロイトパス+再現手順 | ソースからシンクへのフロー表示 | - | パスクエリがデータフローを示す |
| **アーキテクチャ** | 完全な観測可能性を持つ構成可能なリーズナーDAG | モノリシックエージェント | シングルパスエンジン | ルールエンジン | クエリエンジン |
| **並列処理** | ✅ 並列ハンター、検証者、修復者、インクリメンタル重複除去 | 文書化されていない | 文書化されていない | ✅ ルール並列処理 | ✅ クエリ並列処理 |
| **スコアリング** | ✅ 公開された複合計算式 | 内部 | 不透明な優先度スコア | 内部 | - |
| **SARIF** | ✅ ネイティブ2.1.0 | 文書化されていない | ✅ | ✅ | ✅ ネイティブ |
| **コンプライアンスマッピング** | PCI-DSS、SOC2、OWASP、HIPAA、ISO27001 | 文書化されていない | プラットフォームコンプライアンスのみ | OWASPルールあり | - |
| **言語** | LLMがサポートするすべての言語 | 文書化されていない | 14以上 | 35以上(パーサーベース) | 10 |
| **料金** | **無料・オープンソース**(監査あたり約$0.18~$0.90のLLMコスト) | **$6,000/月** | 開発者あたり$25~$105/月 | OSSエンジン:無料で使用可能・Pro:寄稿者あたり$30/月 | パブリックリポジトリは無料・コミッターあたり$49/月(GHAS) |
**SEC-AFが最も強い点**:証明オブジェクトによる検証済み発見結果、透明なスコアリング、コンプライアンスマッピング、完全なDAG観測可能性を備えた構成可能なマルチエージェントアーキテクチャ、そして完全なオープンソース。
**他のツールがより強い点**:SemgrepとCodeQLは、35以上の言語にわたる長年の実戦テスト済みルールカバレッジを持っています。Snykは深いIDE/SCA統合を持っています。Nullifyはランタイムクラウドコンテキストと自動修復キャンペーンを追加します。SEC-AFは新しいツールであり、現在はAI駆動型のコードレベル分析に最も強みがあります。
> **同じアーキテクチャ、異なるドメイン:** [Contract-AF](https://github.com/Agent-Field/contract-af) は、敵対的HUNT→PROVEを法的契約に適用します。エージェントがエージェントを生成し、単独のLLMが見逃す条項間の相互作用を見つけます。
### マルチエージェントアーキテクチャが重要な理由
従来のセキュリティスキャナーはモノリシックです。1つのエンジン、1回のパス、1セットのルール。SEC-AFのマルチリーズナーアーキテクチャは構造的な利点を提供します。
- **専門化**:各ハンターはガイド付きLLMスペシャリストです。インジェクションハンターは暗号ハンターとは異なる方法で推論します。アーキテクチャは、プロンプトだけでなくルーティングにドメイン知識をエンコードします。
- **構成可能性**:1つのハンターファイルを追加することで、新しい脆弱性クラスを追加できます。オーケストレーターが自動的に発見して実行します。パイプラインへの変更は不要です。
- **敵対的検証**:PROVEフェーズはHUNTから構造的に分離されています。ハンターは脆弱性を見つけようとし、プローバーはそれらを反証しようとします。この敵対的緊張により、偽陽性が減少します。
- **観測可能性**:すべてのリーズナー呼び出しはコントロールプレーンを流れ、完全なDAGを作成します。どのハンターがどの発見結果を見つけたか、各フェーズにどれだけ時間がかかったか、各ステップでLLMが何を推論したかを正確に確認できます。
- **コスト効率**:コンテキストプルーニングとスキーマビューにより、各LLM呼び出しは必要なコンテキストのみを受け取ります。30件の検証済み発見結果を含む標準的な深さの監査は、LLM呼び出しで推定約$0.18~$0.90(OpenRouter経由のKimi K2.5)のコストがかかります。
## クイックスタート
### AgentFieldへのインストール(`af install`)
すでに [AgentField](https://github.com/Agent-Field/agentfield) コントロールプレーンを実行していますか?GitHubから直接SEC-AFをインストールしてください。クローンもローカルセットアップも不要です。**(訳注:以降の内容はチャンク8以降に続きます)**```bash
af install https://github.com/Agent-Field/sec-af
af run sec-af
af install はリポジトリをクローンし、隔離されたPython環境をプロビジョニングし、sec-af ノードをコントロールプレーンに登録します。初回のaf runでは、必要な OPENROUTER_API_KEY の入力を求められます — これは暗号化されて保存され、すべてのノードで再利用されるため、一度だけ入力すれば済みます。その後、監査を実行します:```bash
af call sec-af.audit --in '{"repo_url": "https://github.com/dolevf/Damn-Vulnerable-GraphQL-Application"}'
AgentFieldは初めてですか?まずコントロールプレーンをインストールしてください(`curl -fsSL https://agentfield.ai/install.sh | bash`)。または以下のDocker / Railwayオプションをご利用ください。
### ワンクリックデプロイ(Railway)
[](https://railway.com/deploy/sec-af)
AgentFieldコントロールプレーンとSEC-AFエージェントをデプロイします。`OPENROUTER_API_KEY`が必要です。
### ローカル(Docker Compose)```bash
git clone https://github.com/Agent-Field/sec-af.git && cd sec-af
cp .env.example .env # Add OPENROUTER_API_KEY
docker compose up --build
AgentField制御プレーン(http://localhost:8080)+ SEC-AFエージェントを起動します。
監査をトリガーする:```bash
curl -X POST http://localhost:8080/api/v1/execute/async/sec-af.audit
-H "Content-Type: application/json"
-d '{"input": {"repo_url": "https://github.com/dolevf/Damn-Vulnerable-GraphQL-Application"}}'
結果をポーリング:```bash
curl http://localhost:8080/api/v1/executions/<execution_id>
前提条件: Python 3.11+、Git、OpenRouter APIキー
ステップ1 — リポジトリをクローンする```bash git clone https://github.com/Agent-Field/sec-af.git cd sec-af
**ステップ2 — 仮想環境を作成して有効化する**```bash
python3 -m venv .venv
source .venv/bin/activate
ステップ3 — パッケージをインストールする```bash pip install -e .
**ステップ4 — 環境変数を設定する**```bash
cp .env.example .env
.envを開き、キーを入力してください:```
OPENROUTER_API_KEY=sk-or-...
オプション — 権限の問題を避けるためにカスタムワークスペースディレクトリを設定してください:```
SEC_AF_WORKSPACES_DIR=~/.sec-af/workspaces
ステップ5 — AgentField制御プレーンを起動 (別のターミナルで)```bash af server
これはデフォルトで `http://localhost:8080` で実行されます。
**ステップ 6 — SEC-AFエージェントを起動する** (別のターミナルで、venvがアクティブな状態で)```bash
python3 main.py
エージェントはコントロールプレーンに自身を登録し、リクエストを受け付ける準備が整います。
ステップ7 — 監査をトリガーする```bash
curl -X POST http://localhost:8080/api/v1/execute/async/sec-af.audit
-H "Content-Type: application/json"
-d '{"input": {"repo_url": "https://github.com/dolevf/Damn-Vulnerable-GraphQL-Application"}}'
## API
<details>
<summary><strong>完全なリクエストオプション</strong></summary>```bash
curl -X POST http://localhost:8080/api/v1/execute/async/sec-af.audit \
-H "Content-Type: application/json" \
-d '{
"input": {
"repo_url": "https://github.com/org/repo",
"branch": "main",
"depth": "thorough",
"severity_threshold": "high",
"scan_types": ["sast", "sca", "secrets", "config"],
"output_formats": ["sarif", "json", "markdown"],
"compliance_frameworks": ["pci-dss", "soc2", "owasp", "hipaa"],
"max_cost_usd": 15.0,
"max_provers": 30,
"max_duration_seconds": 1800,
"include_paths": ["src/"],
"exclude_paths": ["tests/", "vendor/"]
}
}'
| 判定 | 意味 |
|---|---|
confirmed | 具体的な証拠をもとに実証可能なエクスプロイト可能性 |
likely | 強力な指標、部分的な検証済み |
| 形式 | 利用者 | 説明 |
|---|---|---|
sarif |
jobs: security-audit: runs-on: ubuntu-latest permissions: contents: read security-events: write steps: - uses: actions/checkout@v4
- name: Trigger SEC-AF
run: |
RESPONSE=$(curl -sS -X POST "$AGENTFIELD_SERVER/api/v1/execute/async/sec-af.audit" \
-H "Content-Type: application/json" \
-d '{
"input": {
"repo_url": "${{ github.event.repository.clone_url }}",
"branch": "${{ github.head_ref }}",
"commit_sha": "${{ github.event.pull_request.head.sha }}",
"base_commit_sha": "${{ github.event.pull_request.base.sha }}",
"depth": "standard",
"output_formats": ["sarif"]
}
}')
echo "execution_id=$(echo "$RESPONSE" | jq -r '.execution_id')" >> "$GITHUB_ENV"
env:
AGENTFIELD_SERVER: ${{ secrets.AGENTFIELD_SERVER }}
- name: Wait for results
run: |
for i in {1..60}; do
RESULT=$(curl -sS "$AGENTFIELD_SERVER/api/v1/executions/$execution_id")
STATUS=$(echo "$RESULT" | jq -r '.status')
[ "$STATUS" = "succeeded" ] && { echo "$RESULT" | jq -r '.result.sarif' > results.sarif; exit 0; }
[ "$STATUS" = "failed" ] && { echo "Audit failed"; exit 1; }
sleep 10
done
echo "Timed out"; exit 1
env:
AGENTFIELD_SERVER: ${{ secrets.AGENTFIELD_SERVER }}
- uses: github/codeql-action/upload-sarif@v3
with:
sarif_file: results.sarif
</details>
## 設定
<details>
<summary><strong>環境変数</strong></summary>
| 変数 | 必須 | デフォルト値 | 説明 |
|---|---|---|---|
| `AGENTFIELD_SERVER` | はい | `http://localhost:8080` | コントロールプレーンURL |
| `OPENROUTER_API_KEY` | はい | - | LLMプロバイダの認証情報 |
| `HARNESS_MODEL` | いいえ | `moonshotai/kimi-k2.5` | 深い`.harness()`分析のためのモデル |
| `AI_MODEL` | いいえ | `moonshotai/kimi-k2.5` | 高速な`.ai()`ゲートおよび判定のためのモデル |
| `SEC_AF_MAX_TURNS` | いいえ | `50` | 呼び出しあたりの最大ハーネスターン数 |
| `AGENTFIELD_API_KEY` | いいえ | 未設定 | セキュリティ保護された環境向けAPIキー |
| `SEC_AF_WORKSPACES_DIR` | いいえ | `/workspaces` | クローンされたリポジトリのディレクトリ(書き込み不可の場合は`~/.sec-af/workspaces`にフォールバック) |
| `HARNESS_PROVIDER` | いいえ | `opencode` | ハーネスバックエンドプロバイダ |
| `SEC_AF_AI_MAX_RETRIES` | いいえ | `3` | モデル呼び出しのリトライ回数 |
</details>
## 開発環境のセットアップ```bash
python -m venv .venv && source .venv/bin/activate
pip install -e .[dev]
pytest
ruff check src tests
| プロファイル | 戦略 | 検証 | 標準時間 | 標準コスト |
|---|
quick | 5つのコア戦略 | 上位の所見のみ | 2~5分 | ~$0.10-0.40 |
standard | 11の戦略(コア+拡張) | 上位30の所見 | 15~80分 | ~$0.18-0.90 |
thorough | 全戦略セット | すべての所見 | 30~120分 | ~$2-8 |
コストはOpenRouter経由のKimi K2.5に基づく(入力$0.22/M、出力$0.88/M)。DVGAベンチマーク(標準深度、30検証済み所見、推定166~255回のLLM呼び出し、82 DAGエッジ)のコストは約**$0.18~$0.90**でした。完全な分析:exampl/benchmark-analysis.json。OpenRouter互換のモデルならどれでも動作します — HARNESS_MODELとAI_MODELを設定して切り替えます。
inconclusive | 証拠不十分、手動レビューが必要 |
not_exploitable | 実用的なエクスプロイト経路がないことを示す証拠 |
| GitHub Code Scanning、セキュリティツール |
| SARIF 2.1.0(重要度と位置情報付き) |
json | パイプライン、API | 判定、証明、コストを含む完全な構造化結果 |
markdown | セキュリティチーム | 所見と修復を含むナラティブレポート |
SWE-AF — 自律型エンジニアリングチーム。1回のAPI呼び出しで、計画、コーディング、テスト、レビューされたコードを出荷。スコア95/100。
Contract-AF — 法的契約リスク分析ツール。エージェントが実行時にエージェントを生成。敵対的レビューにより、単独のLLMが見逃す問題を発見。
SEC-AFは AgentField 上に構築されています。これはプロダクショングレードの自律エージェントのためのオープンインフラストラクチャです。他に何を構築しているか見る →