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_fileopcional),captureSources,isTainted/matchingSource,report(comsample_rate,max_findings, stack trace viadebug_backtrace), checagens por tipo de vuln com heurísticas,tryUopzHooks(hooks emshell_exec/exec/system/passthru/file_get_contents/fopen/unserialize),flushno shutdown (curl ou streamfile_get_contents, headerX-IAST-Token),NexusIast::exec/readFile(helpers sem uopz) eNexusIastPDO 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 colunasource(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 (fullse uopz, senãobasic), com limites orientativos; funciona em compartilhada e VPS (requires_vps: false). - Multi-projeto:
iast_resolve_task_project()com modosdefault(sempre o projeto padrão),from_agent(usaprojectdo agent se existir no NEXUS) emap(rotas agent→projeto, até 50, validadas contra projetos ativos viaprojects_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 quandoauto_create_taskse severidade ≥min_severity_for_task. - Ingestão:
iast_validate_ingest_token(headerX-IAST-Tokenou body,hash_equals; sem token configurado aceita master/sessão),iast_fingerprint, dedupe por janela (dedupe_hours1–168), upsert de heartbeat emiast_agents. - Comando
/iastviafastr.json(arg_suggest_action: iast_fastr_suggest):stats,findings,open,env,selftestcom 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_ingestem bypass de auth noapi.php(linha ~58, junto comincoming_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 noapi.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_rateconfigurável emax_findingspara 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.
/iastno 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.
live feed
abrir issues no githubcarregando andamento...
não foi possivel carregar as issues agora. abra no github pelo link acima.
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
- PHP 8
- MySQL 8
- Alpine.js
- Tailwind CSS
- uopz
- cURL
- Plugin NEXUS
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.