Imagem de capa do projeto: Nexus IAST Agent EM ANDAMENTO

Resumo técnico

Plugin de IAST que observa requests reais em aplicações PHP e identifica quando entradas do usuário alcançam sinks de SQL, comandos, arquivos, desserialização ou redirecionamento. O agente standalone opera em modo básico ou com hooks uopz, envia findings autenticados ao NEXUS e oferece deduplicação, heartbeat, self-test e criação automática de tarefas com roteamento por projeto.

Escopo executado

  • Agent runtime standalone agent/nexus-iast.php (417 linhas): boot (config + config_file opcional), captureSources, isTainted/matchingSource, report (com sample_rate, max_findings, stack trace via debug_backtrace), checagens por tipo de vuln com heurísticas, tryUopzHooks (hooks em shell_exec/exec/system/passthru/file_get_contents/fopen/unserialize), flush no shutdown (curl ou stream file_get_contents, header X-IAST-Token), NexusIast::exec/readFile (helpers sem uopz) e NexusIastPDO extends PDO (query/exec/prepare instrumentados).
  • Schema (iast_install() no load, sem install.sql): iast_findings (id PK, agent_id, project, vuln_type, severity, file_path, line_number, function_name, user_input, sink_function, stack_trace MEDIUMTEXT, request_url, request_method, evidence, fingerprint, status, task_id, índices por agent/type/sev/status/fp/created) + iast_agents (agent_id PK, label, project, last_seen_at, findings_count, meta JSON) + migração leve da coluna source (runtime/self_test/manual).
  • 13 actions de API via PluginManager::registerApiAction — iast_stats, iast_settings, iast_settings_save, iast_findings (page/limit + filtros severity/status/vuln_type/agent_id/q), iast_finding_status (open/resolved/ignored), iast_agents, iast_ingest (público com token, batch ≤ 100), iast_self_test, iast_purge_demo, iast_capabilities, iast_fastr, iast_fastr_suggest, iast_agent_snippet (snippet ajustado ao modo recomendado do host).
  • Detecção de ambiente iast_env_capabilities(): perfil por sinais (open_basedir, funções sensíveis desabilitadas, uopz, max_execution_time) → shared_hosting/vps_full/vps_or_shared_basic, modo recomendado (full se uopz, senão basic), com limites orientativos; funciona em compartilhada e VPS (requires_vps: false).
  • Multi-projeto: iast_resolve_task_project() com modos default (sempre o projeto padrão), from_agent (usa project do agent se existir no NEXUS) e map (rotas agent→projeto, até 50, validadas contra projetos ativos via projects_read()).
  • Criação de tarefas: iast_create_task_for_finding() — título [IAST][SEV] TIPO via SINK, descrição markdown com input/evidence, projeto resolvido, prioridade por severidade (critical 4 → low 1), status pending; dispara quando auto_create_tasks e severidade ≥ min_severity_for_task.
  • Ingestão: iast_validate_ingest_token (header X-IAST-Token ou body, hash_equals; sem token configurado aceita master/sessão), iast_fingerprint, dedupe por janela (dedupe_hours 1–168), upsert de heartbeat em iast_agents.
  • Comando /iast via fastr.json (arg_suggest_action: iast_fastr_suggest): stats, findings, open, env, selftest com respostas markdown legíveis.
  • UI Alpine.js tab.php (25 KB): sub-abas Findings (filtros + self-test + purge demo), Agents (heartbeat), Instalar (snippet com endpoint/token/modo recomendado) e Config (token com rotate, auto_create_tasks, min_severity, dedupe_hours, project_mode e rotas).
  • Whitelist core: iast_ingest em bypass de auth no api.php (linha ~58, junto com incoming_webhook/github_callback).

Stack e ferramentas

  • PHP 8 (sem framework) — agent standalone compatível com qualquer app PHP
  • MySQL 8 (iast_findings, iast_agents)
  • cURL (telemetria do agent) + stream fallback (allow_url_fopen)
  • uopz (uopz_set_return — modo completo, opcional)
  • Alpine.js + Tailwind CSS
  • Sistema de plugins do NEXUS (PluginManager + whitelist de auth no api.php)

Tags operacionais

  • IAST
  • Runtime
  • PHP
  • DevSecOps
  • SQLi
  • CMDi
  • Security Agent
  • Plugin NEXUS

Resultado operacional

  • Cobertura runtime real: findings gerados a partir de requests reais (não de análise estática), com stack trace, URL, método e input tainted — complementa o SAST/DAST do NEXUS.
  • Funciona em qualquer host: modo básico em compartilhada/VPS sem root/SSH, e modo completo em VPS com uopz para hooks nativos automáticos sem alterar o código da app.
  • Zero impacto na app: findings enviados no shutdown (curl assíncrono, timeout 800 ms), sample_rate configurável e max_findings para host com CPU limitada.
  • Dedupe por fingerprint + heartbeat de agents mantêm o dashboard fiel e sem ruído; self-test valida o pipeline sem gerar falsos positivos em produção (purge de demos com um clique).
  • Integração com tarefas: findings de alta severidade viram tarefas automaticamente no projeto correto (default/from_agent/map), com prioridade por severidade.
  • /iast no chat: stats, findings, ambiente e self-test direto do editor de comentários.

Andamento no GitHub (issues)

Painel em tempo real com as issues mais recentes do repositório.

abertas (amostra): -- fechadas (amostra): -- base: -- ultimas issues

carregando andamento...

Resultados reais

IAST runtime PHP do NEXUS (DevSecOps) que observa requests reais dentro da app alvo e reporta input do usuário atingindo sinks perigosos — modo básico (compartilhada/VPS, sem root) e completo (VPS + uopz) — com criação automática de tarefas multi-projeto.

Arquitetura e organização

Execução e operação

O projeto segue fluxo reprodutível de execução com validação técnica em ambiente de produção/similar.

Screenshots

Falar sobre este projeto

Aplique este modelo no seu ambiente e acelere a entrega com consistência técnica.