Aigently

Alimenta de forma segura regras de segurança reais e atualizadas no Cursor, Claude Code e Windsurf — zero configuração, sem chave de API.

Documentação

Aigent.ly

License: Apache 2.0 MCP Compatible Daily CI Stacks Sources

🆕 O catálogo dobra para 12 stacks. Django, Rails, Go, iOS e Android passam a estar disponíveis — junto com uma nova stack AI / LLM Apps que cobre LangChain, LlamaIndex, Hugging Face transformers, vLLM e Ollama. Além disso, pontuação de probabilidade de exploração EPSS em cada CVE. Leia o post de lançamento →

O catálogo de CVEs, o pipeline e o servidor MCP de código aberto por trás do aigent.ly. Todos os dias, a CI ingere novas CVEs de seis fontes públicas de ameaças, enriquece-as com padrões de codificação gerados por IA e envia regras de segurança prontas para uso diretamente para este repositório — formatadas para Cursor, Claude Code, Windsurf, GitHub Copilot e Cline.

12 stacks · 6 fontes · CI diária · nativo MCP · Apache 2.0 · 0 chaves necessárias para consumir.


Como funciona

CVE published  →  pipeline detects it  →  Claude generates safe-code patterns
    →  rule committed to this repo  →  your IDE enforces it while you type

Assistentes de codificação com IA escrevem código de produção rapidamente. Eles não sabem quais CVEs chegaram na semana passada, nem como escrever ao redor delas. Aigent.ly preenche essa lacuna: transforma um feed de CVEs ao vivo em regras de IDE que acompanham seu projeto, aplicadas no momento da geração — não descobertas no momento da auditoria.

Por que existe

  • Assistentes de IA não sabem quais CVEs chegaram na semana passada.
  • SAST detecta problemas no momento da auditoria. Aigent.ly os detecta no momento da geração.
  • Dados abertos e gratuitos. Produto pago e privado. A fronteira de segurança é por design.

Início rápido

Nenhuma chave de API é necessária para consumir. A CI envia novos snapshots diariamente — aponte sua IDE para o servidor MCP e pronto.

Uso via MCP (recomendado)

Adicione à configuração MCP da sua IDE — funciona com Claude Code, Cursor, Windsurf, Copilot e Cline:

{
  "mcpServers": {
    "aigently": {
      "command": "npx",
      "args": ["-y", "@aigently/mcp-server@latest"]
    }
  }
}

O servidor MCP lê JSON estático de packages/catalog-data/ — sem banco de dados, sem chaves de API, sem configuração.

Ferramentas MCP disponíveis

FerramentaDescriçãoRetorna EPSS?
get_security_contextDetecta sua stack e retorna regras relevantes e principais CVEs✅
compose_guardrailGera um arquivo de regras pronto para IDE para sua stack–
search_threatsBusca de texto completo e facetada de CVEs; classifica por KEV → severidade → EPSS✅
get_threatDetalhe completo da CVE com padrões de código seguro gerados por IA✅
detect_project_stackIdentifica stack(s) a partir de uma lista de arquivos–
list_stacksEnumera todas as 12 stacks suportadas–
get_manifestVersão do catálogo + contagens–

🛡 O que está coberto

Stacks (12)

#StackEcossistemaFamíliaStatus
1Next.jsnpmowasp_webativo
2Express / Node.jsnpmowasp_webativo
3FastAPI / PythonPyPIowasp_webativo
4NestJSnpmowasp_webativo
5Nuxtnpmowasp_webativo
6React SPAnpmowasp_webativo
7DjangoPyPIowasp_web🆕 AGORA ATIVO
8Ruby on RailsRubyGemsowasp_web🆕 AGORA ATIVO
9GoGoowasp_web🆕 AGORA ATIVO
10iOS / SwiftSwiftURLowasp_web🆕 AGORA ATIVO
11Android / KotlinMavenowasp_web🆕 AGORA ATIVO
12AI / LLM AppsPyPIowasp_llm✨ NOVO

Para adicionar uma stack: abra packages/mvp-catalog/src/stack-registry.ts, adicione uma entrada StackConfig (defina family: "owasp_llm" para stacks de aplicações de IA; o padrão é owasp_web) e abra um PR.

Fontes (6)

FonteFunçãoAutenticaçãoLimite de taxa (grátis)
NVD (NIST)Registro autoritativo de CVEs. Preenche pontuações CVSS e IDs CWE.Chave de API opcional5 req/30s (50 com chave)
CISA KEVCVEs exploradas ativamente. Define isActivelyExploited como o sinal de priorização rígido.NenhumaFeed estático
GHSA (GitHub)Avisos em npm, PyPI, RubyGems, Maven, Go, Swift.Token Bearer5.000 req/h
OSV (Google)Vulnerabilidades por pacote, limitadas aos pacotes que suas stacks declaram.NenhumaSem limite publicado
npm AuditVarredura direta de avisos de pacotes por stack. Detecta avisos ainda não presentes no OSV/GHSA.NenhumaSem limite publicado
EPSS (FIRST.org)🆕 Pontuação de probabilidade de exploração atualizada diariamente (0–1) por CVE.Nenhuma1.000 req/min

🚦 Como as ameaças são priorizadas

Cada ameaça no catálogo carrega múltiplos sinais de classificação para que a camada MCP possa destacar as CVEs que realmente importam:

final_rank =  isActivelyExploited (CISA KEV)        ← ground truth: it's being exploited NOW
           +  severity (CVSS bucket)                 ← classic theoretical severity
           +  epssScore ≥ 0.5  (+1) / ≥ 0.9 (+2)    ← prediction: how likely 30-day exploitation
           +  family match (owasp_web | owasp_llm)   ← keep LLM threats from polluting web rankings
           +  intent overlap (auth/inject/csrf/rag)  ← what the developer is actually doing

EPSS é a diferença entre "CVSS 9.8 — corrija no próximo sprint" e "CVSS 9.8 com EPSS 0.94 — pare tudo." Expomos ambos.


🧠 Stack AI / LLM

A stack ai-llm ingere CVEs contra o conjunto de ferramentas de aplicações de IA e as classifica de acordo com o OWASP LLM Top 10 em vez do Web Top 10:

Pacotes monitorados: langchain, langchain-community, langchain-core, llama-index, llama-index-core, llama-cpp-python, transformers, huggingface_hub, vllm, gradio, ollama, anthropic, openai, pydantic-ai, crewai, autogen-agentchat, dspy-ai.

Mapeamento OWASP LLM (trecho — veja pipeline/scripts/lib/normalise.ts):

OWASP LLMCWEs comunsExemplo
LLM01 — Injeção de promptCWE-20 / 77 / 78 / 94 / 1321Contexto de recuperação não confiável concatenado ao prompt do sistema
LLM02 — Saída insegura / SSRFCWE-200 / 918Agente de chamada de ferramenta busca URLs internas arbitrárias a partir de um prompt manipulado
LLM05 — Cadeia de suprimentosCWE-116 / 502Desserialização não confiável de checkpoint de modelo
LLM06 — Informações sensíveis / AutorizaçãoCWE-284 / 285Armazenamentos de embeddings vazam segredos de dados de treinamento

As ameaças desta stack passam por um prompt dedicado e consciente de LLM em amplify-threats.ts para que as salvaguardas sejam formuladas no vocabulário de LLM (NEVER concatenate retrieved context into the system prompt without delimiters) em vez do vocabulário web.


Pipeline de inteligência de ameaças

Etapas do pipeline

Daily CI run (GitHub Actions, 06:00 UTC)

  Phase 0     CISA KEV map + stack registry preflight
  Phase 1–3   npm Audit + OSV + GHSA → raw advisories
  Phase 5     deduplicate (source-priority based)
  Phase 4a    EPSS exploit-probability enrichment    ← NEW (batched, 50 CVEs/req)
  Phase 4     NVD: backfill CVSS & CWE for low-confidence rows
  Phase 6–8   upsert threats + per-stack mapping + mitigation flags
  Phase 9     close sync log

  Amplify     Claude: 2–4 ALWAYS/NEVER patterns per CVE (family-aware prompt)
  Summarize   Claude: cluster CVEs into per-stack rule docs
  Synthesize  Claude: merge into pre-built guardrail blocks (patterns + deps)
  Export      write JSON snapshots to packages/catalog-data/
  Commit      auto-push catalog-data/ to this repo
Estrutura do repositório
CaminhoConteúdo
packages/catalog-data/Instantâneos de ameaças ao vivo — JSON commitado diariamente pela CI
packages/mcp-server/Servidor MCP (@aigently/mcp-server) — expõe o catálogo a agentes de IA
packages/db/Esquema Drizzle compartilhado entre o pipeline e o aplicativo web
packages/mvp-catalog/Registro de stacks — adicione uma entrada de stack aqui para integrá-la
packages/api-client/Cliente TypeScript gerado a partir da especificação OpenAPI
pipeline/scripts/sync, amplify, summarize, synthesize, export — o pipeline completo
pipeline/scripts/lib/sources/Um arquivo por fonte de dados (NVD, OSV, GHSA, npm-audit, CISA KEV, EPSS)
.github/workflows/sync-threats.ymlCI diária: ingere CVEs → guardrails de IA → commit

Execute o pipeline localmente

git clone https://github.com/aelbuni/aigently-catalog
cd aigently-catalog
npm install

cp pipeline/.env.example pipeline/.env   # default DATABASE_URL matches docker-compose
npm run db:setup                         # start Postgres, migrate, seed
# pipeline/.env — keys you need only when running the pipeline yourself:
ANTHROPIC_API_KEY=...   # required for amplify, summarize, synthesize
GITHUB_TOKEN=...        # required for GHSA source
NVD_API_KEY=...         # optional — increases NVD rate limit 10×
# EPSS requires no key.

npm run sync:threats           # ingest CVEs from all six sources
npm run amplify:threats        # Claude: ALWAYS/NEVER patterns per CVE (family-aware)
npm run summarize:rules        # Claude: cluster into per-stack rule docs
npm run synthesize:guardrails  # Claude: pre-build guardrail blocks
npm run export:catalog         # write JSON to packages/catalog-data/
Todos os scripts e variáveis de ambiente

Scripts

ScriptFinalidade
npm run db:upInicia o Postgres via Docker Compose
npm run db:setupConfiguração inicial: inicia o Postgres + migra + popula
npm run db:migrateAplica migrações Drizzle
npm run db:seedPopulação completa do catálogo
npm run db:seed:upsertUpsert não destrutivo
npm run sync:threatsIngere CVEs de todas as seis fontes
npm run amplify:threatsGera padrões de IA para novas ameaças
npm run summarize:rulesAgrupa CVEs por IA em resumos de regras
npm run synthesize:guardrailsPré-constroi blocos de guardrails por stack
npm run export:catalogExporta o banco de dados → JSON packages/catalog-data/

Variáveis de ambiente

VariávelObrigatóriaFinalidade
DATABASE_URLSempreString de conexão do Postgres
ANTHROPIC_API_KEYEtapas de IAAcesso à API Claude
GITHUB_TOKENSincronizaçãoFonte de avisos do GitHub (GHSA)
NVD_API_KEYOpcional10× limite de taxa do NVD
STACK_FILTEROpcionalLimita uma execução de sincronização a um slug de stack (ex.: ai-llm)
DRY_RUNOpcionalEnriquece e deduplica sem gravar no banco de dados

Pré-requisitos

  • Node.js 22+
  • Docker (para Postgres local)
  • Chave de API da Anthropic (somente etapas de IA do pipeline)

🗺 Roadmap

Já entregue: 12 stacks · 6 fontes · priorização classificada por EPSS · prompts amplificadores cientes de família (web + LLM).

Próximos passos (PRs bem-vindos):

  • Detecção de PoC / disponibilidade de exploit — GitHub + Exploit-DB + templates Nuclei
  • Avisos de fornecedores — MSRC + Red Hat + Ubuntu (para CVEs de imagem base / nível de SO)
  • Exportação STIX 2.1 — para ingestão em SIEM
  • Webhooks de lista de observação KEV / EPSS — alerta quando uma CVE na sua stack detectada entra no KEV ou ultrapassa um limite de EPSS
  • Stacks Spring Boot, Laravel, .NET — abertas a contribuições

Contribuindo

PRs são bem-vindos. As contribuições de maior valor são:

Veja CONTRIBUTING.md para as diretrizes completas.


Licença

Apache 2.0 — dados de ameaças provenientes de domínio público (NVD, CISA KEV, GHSA, OSV, EPSS).

"Disponibilizamos em código aberto tudo o que a comunidade precisa — os dados, o pipeline, o registro de stacks. O aplicativo web que executa o aigent.ly é privado. Porque um produto de segurança deve praticar o que prega."

Aigent.ly e o logotipo Aigent.ly são marcas registradas da Aigently, Inc.