
KnosticのOpenAntは、オープンソースのLLMベース脆弱性発見製品のリーダーであり、防御側が検証済みのセキュリティ欠陥を積極的に発見できるよう支援し、誤検知と検出漏れの両方を最小限に抑えます。ステージ1は検出、ステージ2は攻撃です。生き残ったものが本物です。
Knostic による OpenAnt は、LLMベースのオープンソース脆弱性発見プロダクトです。防御側が誤検知(false positives)と見逃し(false negatives)の両方を最小限に抑えながら、検証済みのセキュリティ上の欠陥をプロアクティブに発見できるよう支援します。ステージ1で検出し、ステージ2で攻撃します。生き残ったものが本物です。
私たちはこのプロダクトをかなり誇りに思っており、その発見結果については脆弱性情報開示のプロセスを進めています。ただし、これは研究プロジェクトとして始まったものであり、一部の機能はまだベータ版であることにご注意ください。より良いものにするためのコントリビューションを歓迎します。
AIによって発見される脆弱性が急増していることを踏まえ、OpenAntがオープンソースメンテナが攻撃者より先んじるためのツールとなることを願っています。メンテナ自身が利用するか、リポジトリを無料でスキャンに提出することができます。
また、Knosticの焦点は脆弱性研究やアプリケーションセキュリティではなく、エージェントやコーディングアシスタントの保護にあり、私たちはオープンソースを好むため、OpenAntをApache 2ライセンスでリリースすることにしました。さらに、OpenAIのAardvark(現在のCodex Security)やAnthropicのClaude Code Securityについて聞いたことがあるかもしれませんが、私たちは彼らと競争するつもりは全くありません。
技術的な詳細、制限事項、トークンコストについては、こちらのブログ記事をご覧ください: https://knostic.ai/blog/openant
リポジトリをスキャンに提出するには: https://knostic.ai/blog/oss-scan
研究とアイデア: Nahum Korda。
製品化: Alex Raihelgaus、Daniel Geyshis。
感謝: Michal Kamensky、Imri Goldberg、Gadi Evron、Daniel Cuthbert、Josh Grossman、Avi Douglen。
私たちの活動を気に入っていただけたら、Knostic での取り組みをご覧ください。エージェントやコーディングアシスタントを防御し、ハードドライブやコードを削除されることを防ぎ、MCPサーバー、拡張機能、スキルなどの関連するサプライチェーンリスクを管理します。
CLIバイナリをビルドします(Go 1.25+ が必要):
cd apps/openant-cli && make build
これによりGoソースがコンパイルされ、バイナリが apps/openant-cli/bin/openant に出力されます。
PATHにシンボリックリンクを追加すると、どこからでも openant を実行できます:
ln -sf "$(pwd)/apps/openant-cli/bin/openant" /usr/local/bin/openant
注:リポジトリルートから実行して、$(pwd) が正しい絶対パスに解決されるようにしてください。
OpenAntはパイプラインの各フェーズを、設定可能な(プロバイダー、モデル)ペアを介してルーティングします。最短の道は対話型ウィザードです:
openant setup llm
設定に名前を付け(例:my-llm)、パイプラインのフェーズごとにプロバイダー(anthropic、openai、google)を選択し、各プロバイダーにつき1回APIキーを入力すると、ウィザードは ~/.config/openant/config.json を書き込む前に、各固有のプロバイダー+モデルのペアに対して1トークンのリクエストでプローブを実行します。--llm-config でその設定を指定してスキャンを実行します:
openant scan /path/to/repo --llm-config my-llm
ウィザードのデフォルトは、プロジェクトのフェーズごとの推奨事項を反映しています(検出/検証/到達可能性レビューにはより強力な推論モデル、コンテキスト・レポート・テスト生成にはより軽量なモデル)— お好みに合わせて自由に上書きしてください。
3つすべてがツール呼び出しをサポートしているため、いずれもエージェンティックなツール使用ループを使用する enhance および verify フェーズを駆動できます。
現在のフェーズごとのClaudeデフォルトだけを使いたい場合は、ウィザードをスキップします:
openant set-api-key sk-ant-...
openant scan /path/to/repo
これは組み込みの openant-default 設定(バイナリにコンパイル済みで、config.json は不要)を使用します。検出フェーズにはClaude Opus 4.6、残りにはSonnet 4を使用します。
ウィザードが ~/.config/openant/config.json を書き込みますが、直接編集することもできます。各llm-configは、パイプラインの全7フェーズを列挙する必要があります:
{
"$schema_version": 2,
"default_llm": "my-llm",
"llm_providers": {
"anthropic": {"type": "anthropic", "api_key": "sk-ant-..."},
"openai": {"type": "openai", "api_key": "sk-proj-..."},
"google": {"type": "google", "api_key": "AIza..."}
},
"llm_configs": {
"my-llm": {
"app_context": {"provider": "openai", "model": "gpt-4o-mini"},
"llm_reach": {"provider": "anthropic", "model": "claude-opus-4-6"},
"enhance": {"provider": "openai", "model": "gpt-4o-mini"},
"analyze": {"provider": "anthropic", "model": "claude-opus-4-6"},
"verify": {"provider": "anthropic", "model": "claude-opus-4-6"},
"dynamic_test": {"provider": "google", "model": "gemini-2.0-flash"},
"report": {"provider": "google", "model": "gemini-2.0-flash"}
}
}
}
プロバイダーは、OpenAI互換/Anthropic互換プロキシ(OpenRouter、vLLM、Bedrock、内部ゲートウェイ)用のカスタム base_url を受け入れます。openant-default 設定(全フェーズでClaudeを使用)は組み込まれており、ファイルの内容に関係なく常に利用可能です。
OpenAntのアダプター層は小さなPythonレシピです — LLMAdapter プロトコルを実装するPythonファイル1つ、コントラクトテスト用ハーネスのファクトリ1つ、レジストリエントリ1つ — これだけで手書きの設定からアダプターを実行できます。さらに openant setup llm ウィザードでも提供され、保存前プローブを通過させるには、apps/openant-cli/cmd/setup.go にGoのタッチポイントをいくつか追加し(サポート対象プロバイダーリスト、プローブ用 case、フェーズごとのデフォルトモデルマップ)、Goのプローブ関数も追加します。配線が完了すると、12のコントラクトテストがアダプターに対して自動的に実行されます。完全なレシピは docs/features/llm-providers/HOW_TO_ADD_AN_ADAPTER.md を参照してください。
OpenAntのパース、エンハンスメント、分析、レポート生成コードはPython 3.11+です。Go CLIは次の順序でインタープリタを選択します:
OPENANT_PYTHON 環境変数(特定のインタープリタを固定するにはこれを設定します — 例:OPENANT_PYTHON=python3.11)。~/.openant/venv/ にある管理venv(初回使用時に自動作成)。CLIはLinux/macOSでは bin/python、Windowsでは Scripts\python.exe を使用します。PATH 上の python3 / python。いずれもPython 3.11+を提供しない場合、コマンドは python.org を指すエラーで終了します。古くなった管理venvを再構築するには(例:Pythonのアップグレード後)、~/.openant/venv/ を削除して任意の openant コマンドを再実行してください。
OpenAntは2つのディレクトリを作成します:
~/.config/openant/ — CLI設定(config.json)。APIキー、アクティブプロジェクト、プリファレンスを保存します。ファイル権限は 0600 に制限されています。~/.openant/ — プロジェクトデータ。初期化された各プロジェクトは、project.json と、コミットごとの出力を含む scans/ ディレクトリを持つ ~/.openant/projects/<org>/<repo>/ 配下のワークスペースを取得します。OpenAntをリポジトリに向けます。-l フラグ(言語)は必須です — go または python を使用します。
# Remote — clones the repo
openant init <repo-url> -l go
# Remote — pin to a specific commit
openant init <repo-url> -l go --commit <sha>
# Local — references the directory in-place
openant init <path-to-repo> -l go --name <org/repo>
これによりプロジェクトワークスペースが作成され、アクティブプロジェクトとして設定されます。以降のすべてのコマンドは自動的にアクティブプロジェクトに対して動作するため、パス引数は不要です。
各ステップは、プロジェクトのスキャンディレクトリから前のステップの出力を取得します:
openant parse
openant enhance
openant analyze
openant verify
openant build-output
openant report -f summary
または、1コマンドでパイプライン全体を実行します:
openant scan --verify
パイプラインは一度に1つのプロジェクトに対して動作します。openant init を実行すると、新しく初期化されたプロジェクトがアクティブとして設定され、以降のすべてのコマンドはデフォルトでそのプロジェクトを対象にします。
複数のプロジェクトを扱う場合、2つのオプションがあります:
# Option 1: switch the active project
openant project switch org/repo
openant parse
# Option 2: target a project directly with -p
openant parse -p org/repo
openant project list # shows all projects, marks active
openant project show # details of active project
openant project switch <org/repo> # switch active project
リストにある項目(順不同):
openant setup llm で提供したい場合は、コントリビューターガイドに従ってGoのウィザード/プローブ用タッチポイントもいくつか必要)。ローカル/オンプレミス推論への障壁を下げます。これらに対するPRはいつでも歓迎します。規模が大きい場合は、先にイシューを開いて、ビルドを始める前に調整しましょう。
このプロジェクトはApache 2ライセンスの下で提供されています。詳細はLICENSEファイルを参照してください。
このプロジェクトは防御および研究目的のみを意図しています。OpenAntはまだ研究段階にあり、注意してご自身の責任で使用してください。Knostic、OpenAnt、および関連する開発者、研究者、メンテナは、このツールの使用から生じるいかなる誤用、損害、結果についても一切の責任を負いません。
所有しているコード、または明示的なテスト許可を得たコードのみをスキャンしてください。正当な手段で他人のプロジェクトの脆弱性を発見した場合は、協調的な脆弱性情報開示の慣行に従い、公開する前にメンテナに報告してください。
| プロバイダータイプ | APIキーの取得元 | 備考 |
|---|
anthropic | console.anthropic.com | リファレンスアダプター。Claude Pro / Max サブスクリプションには含まれません — 別途請求。 |
openai | platform.openai.com | ChatGPT / Codex サブスクリプションには含まれません — 別途請求。 |
google | aistudio.google.com | Gemini Advanced には含まれません — 別途請求。 |