
OpenAnt de Knostic es el producto líder de código abierto de descubrimiento de vulnerabilidades basado en LLM, que ayuda a los defensores a encontrar de forma proactiva fallos de seguridad verificados mientras minimiza tanto los falsos positivos como los falsos negativos. La Etapa 1 detecta. La Etapa 2 ataca. Lo que sobrevive es real.
OpenAnt de Knostic es un producto de código abierto basado en LLM para el descubrimiento de vulnerabilidades que ayuda a los defensores a encontrar de forma proactiva fallos de seguridad verificados, minimizando a la vez los falsos positivos y los falsos negativos. La etapa 1 detecta. La etapa 2 ataca. Lo que sobrevive es real.
Estamos bastante orgullosos de este producto y estamos en proceso de divulgación responsable de sus hallazgos, pero ten en cuenta que esto comenzó como un proyecto de investigación y que algunas de sus funciones siguen en beta. Agradecemos las contribuciones para mejorarlo.
Teniendo en cuenta la explosión de vulnerabilidades descubiertas por IA, esperamos que OpenAnt sea la herramienta que ayude a los mantenedores de código abierto a adelantarse a los atacantes, ya sea utilizándola ellos mismos o enviando su repositorio para que sea escaneado sin coste alguno.
Además, dado que el enfoque de Knostic se centra en proteger agentes y asistentes de codificación, y no en la investigación de vulnerabilidades ni en la seguridad de aplicaciones, y como nos gusta el código abierto, decidimos publicar OpenAnt bajo la licencia Apache 2. Por otra parte, puede que hayas oído hablar de Aardvark de OpenAI (ahora Codex Security) y de Claude Code Security de Anthropic, y no tenemos ninguna intención de competir con ellos.
Para conocer los detalles técnicos, las limitaciones y los costes de tokens, consulta esta entrada de blog: https://knostic.ai/blog/openant
Para enviar tu repositorio para que sea escaneado: https://knostic.ai/blog/oss-scan
Investigación e ideación: Nahum Korda.
Productización: Alex Raihelgaus, Daniel Geyshis.
Agradecimientos a: Michal Kamensky, Imri Goldberg, Gadi Evron, Daniel Cuthbert. Josh Grossman y Avi Douglen.
Si te gusta nuestro trabajo, echa un vistazo a lo que hacemos en Knostic para defender tus agentes y asistentes de codificación, evitar que borren tu disco duro y tu código, y controlar los riesgos asociados de la cadena de suministro, como los servidores MCP, las extensiones y las skills.
Compila el binario de la CLI (requiere Go 1.25+):
cd apps/openant-cli && make build
Esto compila el código fuente de Go y genera el binario en apps/openant-cli/bin/openant.
Crea un enlace simbólico en tu PATH para poder ejecutar openant desde cualquier lugar:
ln -sf "$(pwd)/apps/openant-cli/bin/openant" /usr/local/bin/openant
Nota: ejecuta esto desde la raíz del repositorio para que $(pwd) se resuelva a la ruta absoluta correcta.
OpenAnt enruta cada fase del pipeline a través de un par (proveedor, modelo) configurable. La vía más rápida es el asistente interactivo:
openant setup llm
Tú pones nombre a la configuración (p. ej. my-llm), eliges un proveedor para cada fase del pipeline (anthropic, openai o google), introduces una clave de API una vez por proveedor, y el asistente prueba cada par único proveedor+modelo con una solicitud de 1 token antes de escribir ~/.config/openant/config.json. Ejecuta un escaneo con ella usando --llm-config:
openant scan /path/to/repo --llm-config my-llm
Los valores predeterminados del asistente reflejan las recomendaciones por fase del proyecto (modelos de razonamiento más potentes para detección / verificación / revisión de alcanzabilidad; modelos más ligeros para generación de contexto, informes y pruebas) — puedes anular cualquier respuesta a tu gusto.
Los tres admiten tool calling, por lo que cualquiera de ellos puede impulsar las fases enhance y verify, que usan el bucle agéntico de uso de herramientas.
Si quieres los valores predeterminados actuales de Claude por fase y nada más, sáltate el asistente:
openant set-api-key sk-ant-...
openant scan /path/to/repo
Esto utiliza la configuración integrada openant-default (compilada en el binario, no se necesita config.json) — Claude Opus 4.6 para las fases de detección y Sonnet 4 para el resto.
El asistente escribe ~/.config/openant/config.json por ti, pero también puedes editarlo directamente. Cada llm-config debe enumerar las siete fases del pipeline:
{
"$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"}
}
}
}
Los proveedores aceptan un base_url personalizado para proxies compatibles con OpenAI / Anthropic (OpenRouter, vLLM, Bedrock, pasarelas internas). La configuración openant-default (Claude en todas las fases) está integrada y siempre disponible, independientemente del contenido del archivo.
La capa de adaptadores de OpenAnt es una pequeña receta de Python — un archivo Python que implementa el protocolo LLMAdapter, una fábrica para el banco de pruebas de contrato y una entrada de registro —, y con solo eso basta para ejecutar el adaptador desde una configuración escrita a mano. Para que además el asistente openant setup llm lo ofrezca y supere su prueba previa al guardado, añade algunos puntos de integración en Go en apps/openant-cli/cmd/setup.go (la lista de proveedores compatibles, un case de prueba, los mapas de modelos predeterminados por fase) además de una función de prueba en Go. Las 12 pruebas de contrato se ejecutan automáticamente contra tu adaptador una vez que esté conectado. Consulta docs/features/llm-providers/HOW_TO_ADD_AN_ADAPTER.md para ver la receta completa.
El código de parsing, mejora, análisis y generación de informes de OpenAnt requiere Python 3.11+. La CLI de Go elige un intérprete en este orden:
OPENANT_PYTHON (configúrala para fijar un intérprete concreto — p. ej. OPENANT_PYTHON=python3.11).~/.openant/venv/ (se crea automáticamente en el primer uso). La CLI usa bin/python en Linux/macOS y Scripts\python.exe en Windows.python3 / python en PATH.Si ninguno proporciona Python 3.11+, el comando finaliza con un error que apunta a python.org. Para reconstruir un venv gestionado obsoleto (p. ej. después de actualizar Python), elimina ~/.openant/venv/ y vuelve a ejecutar cualquier comando openant.
OpenAnt crea dos directorios:
~/.config/openant/ — Configuración de la CLI (config.json). Almacena tu clave de API, el proyecto activo y tus preferencias. Los permisos de archivo están restringidos a 0600.~/.openant/ — Datos del proyecto. Cada proyecto inicializado recibe un espacio de trabajo en ~/.openant/projects/<org>/<repo>/ que contiene project.json y un directorio scans/ con los resultados por commit.Apunta OpenAnt a un repositorio. La bandera -l (idioma) es obligatoria — usa go o 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>
Esto crea un espacio de trabajo de proyecto y lo establece como proyecto activo. Todos los comandos posteriores operan automáticamente sobre el proyecto activo — no se necesitan argumentos de ruta.
Cada paso recoge la salida del anterior desde el directorio de escaneo del proyecto:
openant parse
openant enhance
openant analyze
openant verify
openant build-output
openant report -f summary
O ejecuta el pipeline completo con un solo comando:
openant scan --verify
El pipeline opera sobre un proyecto a la vez. Ejecutar openant init establece el proyecto recién inicializado como activo, por lo que todos los comandos posteriores lo toman como destino por defecto.
Si trabajas con varios proyectos, tienes dos opciones:
# 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
Cosas en la lista, sin ningún orden en particular:
openant setup llm lo ofrezca), según la guía para colaboradores. Reduce la barrera para la inferencia local / on-prem.Se aceptan PRs sobre cualquiera de estos temas — abre primero un issue si el alcance no es trivial, para que podamos alinearnos antes de que empieces a construir.
Este proyecto está licenciado bajo Apache 2. Consulta el archivo LICENSE para más detalles.
Este proyecto está pensado únicamente para fines defensivos y de investigación. OpenAnt sigue en fase de investigación; úsalo con cuidado y bajo tu propio riesgo. Knostic, OpenAnt y los desarrolladores, investigadores y mantenedores asociados no asumen responsabilidad alguna por cualquier uso indebido, daño o consecuencia que surja del uso de esta herramienta.
Escanea únicamente código que te pertenezca o para el que tengas permiso explícito de prueba. Si descubres una vulnerabilidad en el proyecto de otra persona por medios legítimos, sigue las prácticas de divulgación coordinada de vulnerabilidades e infórmalo a los mantenedores antes de hacerlo público.
| Tipo de proveedor | Dónde obtener la clave de API | Notas |
|---|
anthropic | console.anthropic.com | Adaptador de referencia. NO incluido en las suscripciones de Claude Pro / Max — facturación separada. |
openai | platform.openai.com | NO incluido en las suscripciones de ChatGPT / Codex — facturación separada. |
google | aistudio.google.com | NO incluido en Gemini Advanced — facturación separada. |