
Knostic의 OpenAnt는 검증된 보안 결함을 사전에 찾아내고 오탐(false positive)과 미탐(false negative)을 모두 최소화하도록 방어자를 돕는 선도적인 오픈 소스 LLM 기반 취약점 발견 제품입니다. 1단계는 탐지합니다. 2단계는 공격합니다. 살아남는 것이 진짜입니다.
Knostic의 OpenAnt는 오픈소스 LLM 기반 취약점 발견 제품으로, 방어자가 오탐(false positive)과 미탐(false negative)을 모두 최소화하면서 검증된 보안 결함을 사전에 찾아낼 수 있도록 돕습니다. 1단계는 탐지합니다. 2단계는 공격합니다. 살아남는 것이 진짜입니다.
저희는 이 제품에 꽤 자부심을 가지고 있으며, 발견 결과에 대해 취약점 공개(vulnerability disclosure) 절차를 진행 중입니다. 다만 이 제품이 연구 프로젝트로 시작되었고 일부 기능은 아직 베타 단계라는 점을 유의하시기 바랍니다. 더 나은 제품을 위한 기여를 환영합니다.
AI가 발견하는 취약점이 폭발적으로 증가하는 상황을 고려할 때, OpenAnt가 오픈소스 관리자들이 공격자보다 한 발 앞서 나가도록 돕는 도구가 되기를 바랍니다. 관리자들은 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에 출력합니다.
어디서든 openant를 실행할 수 있도록 PATH에 심볼릭 링크를 생성합니다:
ln -sf "$(pwd)/apps/openant-cli/bin/openant" /usr/local/bin/openant
참고: $(pwd)가 올바른 절대 경로로 해석되도록 저장소 루트에서 실행하세요.
OpenAnt는 각 파이프라인 단계를 구성 가능한 (프로바이더, 모델) 쌍으로 라우팅합니다. 가장 빠른 방법은 대화형 마법사입니다:
openant setup llm
구성 이름을 지정하고(예: my-llm), 파이프라인 단계별로 프로바이더(anthropic, openai 또는 google)를 선택하고, 프로바이더별로 API 키를 한 번 입력하면, 마법사가 ~/.config/openant/config.json을 작성하기 전에 각 고유한 프로바이더+모델 쌍을 1토큰 요청으로 프로브합니다. --llm-config를 사용하여 스캔을 실행합니다:
openant scan /path/to/repo --llm-config my-llm
마법사의 기본값은 프로젝트의 단계별 권장 사항을 반영합니다(탐지 / 검증 / 도달 가능성 검토에는 더 강력한 추론 모델, 컨텍스트·리포트·테스트 생성에는 더 가벼운 모델) — 원하는 대로 답변을 변경할 수 있습니다.
세 프로바이더 모두 도구 호출(tool calling)을 지원하므로, 에이전트형 도구 사용 루프를 사용하는 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 파일 하나, 계약 테스트 하니스를 위한 팩토리 하나, 레지스트리 항목 하나로 구성되며, 이것만으로도 수동 작성 구성에서 어댑터를 실행하기에 충분합니다. 또한 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는 두 개의 디렉터리를 생성합니다:
~/.config/openant/ — CLI 구성(config.json). API 키, 활성 프로젝트, 기본 설정을 저장합니다. 파일 권한은 0600으로 제한됩니다.~/.openant/ — 프로젝트 데이터. 초기화된 각 프로젝트는 ~/.openant/projects/<org>/<repo>/ 아래에 작업 공간을 가지며, 여기에는 project.json과 커밋별 출력물이 담긴 scans/ 디렉터리가 포함됩니다.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
또는 한 명령으로 전체 파이프라인을 실행합니다:
openant scan --verify
파이프라인은 한 번에 하나의 프로젝트를 대상으로 실행됩니다. openant init을 실행하면 새로 초기화된 프로젝트가 활성 프로젝트로 설정되므로 이후의 모든 명령은 기본적으로 해당 프로젝트를 대상으로 합니다.
여러 프로젝트를 작업하는 경우 두 가지 옵션이 있습니다:
# 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 및 관련 개발자, 연구자, 관리자는 이 도구의 사용으로 인해 발생하는 어떠한 오용, 손해 또는 결과에 대해서도 책임을 지지 않습니다.
소유한 코드나 명시적 테스트 허가를 받은 코드만 스캔하세요. 합법적인 방법으로 다른 사람의 프로젝트에서 취약점을 발견한 경우, 조율된 취약점 공개(coordinated vulnerability disclosure) 관행을 따르고 공개 전에 관리자에게 신고해 주시기 바랍니다.
| 프로바이더 유형 | API 키 발급처 | 비고 |
|---|
anthropic | console.anthropic.com | 참조 어댑터. Claude Pro / Max 구독에는 포함되지 않음 — 별도 청구. |
openai | platform.openai.com | ChatGPT / Codex 구독에는 포함되지 않음 — 별도 청구. |
google | aistudio.google.com | Gemini Advanced에는 포함되지 않음 — 별도 청구. |