14-16 Mar 2026

Apendice — Documentos Originais

3 documentos

Os tres documentos fonte desta auditoria: ANALISE_SISTEMA.md (achados e analise), LOGICA_SISTEMA.md (mapeamento de logica de negocio) e PLANO_ACAO.md (acoes priorizadas). Todo o conteudo do portal e derivado destes documentos.

Este conteudo e renderizado a partir dos dados estruturados extraidos do documento original.

Perguntas respondidas

1. Os segredos expostos ja foram usados por pessoas fora da equipe?

Resposta: Nao, somente a equipe de desenvolvimento tem acesso. Impacto: Risco reduzido, mas nao eliminado. Qualquer dev com acesso tem todas as credenciais de producao.

2. O repositorio Git e publico ou privado?

Resposta: Privado, acesso restrito aos desenvolvedores. Impacto: Urgencia de rotacao de secrets e menor, mas a pratica de armazenar credenciais no codigo continua inaceitavel.

4. Quantos tenants ativos? Taxa de crescimento?

Resposta: 22 tenants ativos, meta de no maximo 150 no auge. Impacto: Com 22 tenants, workers paralelos sao toleraveis. Com 150, Redis 2MB e Task.WhenAll sem limite serao gargalos criticos. Indices ausentes provavelmente ja impactam performance.

7. ScraperOrchestrator: desativado permanentemente ou WIP?

Resposta: Desativado permanentemente. Impacto: Todo o codigo do scraper (event handlers comentados, CargaAdicionalScraperService, RegistrarOfertasWorker) deve ser removido do repositorio para evitar reativacao acidental e reduzir complexidade.

8. URL Galileu nestle-br e a URL real?

Resposta: Sim, e o site que automatizam e tem API que utilizam no sistema. Impacto: Todos os tenants usam o mesmo endpoint Galileu, multitenancy e por login/senha. URL hardcoded no codigo impede troca sem redeploy.

9. Senha admin 1q2w3E* usada em producao?

Resposta: Sim. Impacto: URGENCIA MAXIMA. A conta admin de producao esta com senha conhecida e exposta no repositorio. Qualquer desenvolvedor pode logar como admin. Deve ser alterada imediatamente.

12. Existe processo de rotacao de secrets?

Resposta: Nao. Secrets sao criados uma vez e nunca rotacionados. Senha do tenant so muda no primeiro acesso. Impacto: Risco acumulado. Todos os secrets (WhatsApp token, passphrase Galileu, credenciais CargaAdicional) provavelmente sao os mesmos desde a criacao do sistema.

Perguntas pendentes (a confirmar com equipe de desenvolvimento)

3. O banco de dados PostgreSQL de producao e gerenciado (ex: AWS RDS) ou self-hosted? Ha backups automaticos configurados? Afeta o plano de recuperacao em caso de incidente (CRIT-02) e a estrategia de migracao para maior disponibilidade.

5. Qual e o volume atual de registros na tabela AppOfertas? Ha algum mecanismo de arquivamento ou retencao configurado no banco? Determina a urgencia dos indices ausentes (SCALE-H2) e da subquery O(n²) (SCALE-H1). Com poucos registros, o impacto e baixo; com milhoes de registros, pode ser o principal gargalo de performance.

6. O runner gemini mencionado no pipeline de producao (runs-on: gemini) e o mesmo servidor k3s de desenvolvimento ou e uma maquina dedicada? Se for o mesmo servidor, ha risco de que o ambiente de desenvolvimento contamine o pipeline de producao.

10. Existe algum sistema de logging centralizado em uso (CloudWatch, Datadog, ELK)? Determina se os logs com PII (HIGH-04) estao sendo indexados e possivelmente expostos a terceiros.

11. A chave passphrase de criptografia das credenciais Galileu (testePassPhrase) e a mesma em producao, ou foi substituida via Kubernetes Secret? O configmap de producao nao define GalileuCredentials__PassPhrase, sugerindo que o valor fraco do appsettings.json esta sendo usado. Confirmacao necessaria.

13. O AbpGdprModule esta ativo? Existe processo para atender solicitacoes LGPD Art. 18 (exclusao/portabilidade)? Necessario para avaliar conformidade LGPD e risco regulatorio.


Perguntas da Segunda Passagem (a confirmar com equipe de desenvolvimento)

14. O RegistrarOfertasWorker esta ativo ou desativado em producao? A analise da segunda passagem identificou que este worker (logica legada) esta registrado no DI e potencialmente ativo em paralelo ao ProcessarOfertasWorker (logica nova). A autenticacao invertida (P-02) sugere que pode estar sempre falhando — o que seria ironicamente uma "protecao" contra P-01. Confirmar com a equipe se este worker foi intencionalmente mantido ativo, se ha algum mecanismo de desativacao por feature flag, ou se o bug P-02 esta mascarando sua atividade.

15. Os contadores QuantidadeCarros e CargaAdicionalQuantidadeVeiculos chegam a valores negativos em producao? O over-accept identificado como race condition (secao 8.2) pode ja estar ocorrendo silenciosamente. Existe alguma query de monitoramento ou alerta para contadores negativos? Existe algum processo manual de reconciliacao desses contadores?

16. O endpoint POST /api/app/ofertas/cotar (CotarOfertaAsync) e usado por usuarios do frontend ou apenas por processos internos? O nivel de permissao necessario para esta operacao financeira depende de quem a usa. Se e apenas um processo interno, pode ser protegido de forma diferente de um endpoint exposto ao usuario final. A ausencia de permissao especifica (SEC2-07) e mais grave se usuarios comuns podem acessar.

17. O campo Senha retornado no GalileuCredentialDto (SEC2-04) e consumido pelo frontend? Para que finalidade? Se o frontend nao usa este campo, ele pode ser removido imediatamente sem impacto. Se e usado para exibir ou pre-preencher formularios, a arquitetura de seguranca precisa ser redesenhada.

18. Qual e o volume atual de registros em AppApiStatuses? A retention policy esta funcionando corretamente? O RegistrarOfertasWorker registra o status da API Galileu a cada ciclo (~5 minutos por tenant). Com 22 tenants, isso gera ~288 registros/dia/tenant = ~2.3 milhoes de registros/ano (todos os tenants). Confirmar se a tabela esta crescendo descontroladamente ou se a retention esta contendo o crescimento.

19. O bundle Angular de producao ja foi medido? Qual e o tamanho atual do bundle inicial? Com 15+ CSS bundled (Font Awesome, Bootstrap Icons, Lepton-X, Ionic, ngx-datatable), o bundle pode superar 3MB. Para um PWA mobile com conexao 4G variavel, isso impacta diretamente o tempo de carregamento inicial. O budget atual permite ate 2.5MB como erro — se ja esta sendo violado, o build de CI/CD deveria estar falhando.

20. A API Galileu tem limite de rate (throttling/rate limit) documentado? Com 22 tenants cada executando multiplos ciclos de requisicoes HTTP em paralelo, o sistema pode ja estar proximos ao limite da API Galileu. Com 150 tenants e Task.WhenAll sem semaforo, o rate limit seria atingido com certeza. Esta informacao e critica para dimensionar o SemaphoreSlim correto nos workers.

21. O OfertaRecordController (api/%%entity-name-root-prefix%%/oferta-records) esta funcionando em producao? Usuarios conseguem acessar o historico de alteracoes de ofertas? O placeholder nao substituido (SEC2-06) pode estar tornando este endpoint inacessivel em producao. Confirmar se ha impacto operacional real para os usuarios.


Perguntas da Varredura Final — Infraestrutura (a confirmar com equipe de infra/dev)

22. Os arquivos docker-compose-ec2-dev.yml e docker-compose-ec2-hom.yml sao atualmente usados em ambiente real (EC2)? Se sim, as senhas root e 1b64a555... estao em uso nos bancos de dados ativos? A rotacao deve ser imediata se esses arquivos estiverem ativos em instancias EC2 rodando os ambientes dev e homolog.

23. A VonBraunLabs tem ciencia de que o ABP License Code esta publico no repositorio (INFRA-02)? O repositorio e publico ou privado? Se privado, quem alem da equipe de dev tem acesso? Necessario para avaliar o risco real de reutilizacao da licenca e para decidir se e necessario notificar a Volosoft.

24. O branch master tem branch protection rules configuradas no GitHub (requerir PR, requerir reviews)? Quantos desenvolvedores tem permissao de push direto para master (INFRA-04)? Determina a urgencia de configurar o gate de aprovacao manual — se nenhum dev pode dar push direto sem PR, o risco e menor.

25. O Redis de producao (com emptyDir — INFRA-11) ja sofreu restart de pod? Usuarios relataram ser deslogados sem motivo aparente? Logout massivo sem causa aparente seria explicado pela perda de sessao no Redis apos restart do pod.

26. O ECR da AWS (971422688330.dkr.ecr.us-east-1.amazonaws.com) e privado com politica de acesso restrita? As imagens Docker que contem o pfx do OpenIddict embutido (INFRA-01) sao acessiveis alem da equipe de infra? Se o ECR for acessivel por qualquer conta AWS autenticada, o pfx hardcoded na imagem pode ja estar comprometido.

27. O CronJob ecr-token-renewal-devel (INFRA-19) esta ativo em producao? O Role com permissao sobre todos os secrets do namespace cargofleet afeta secrets de producao ou apenas do cluster de desenvolvimento? Se o CronJob roda no cluster de producao (EKS) com esse Role, o risco e imediato — qualquer comprometimento do pod expoe todos os secrets de producao.

Referencias de Arquivos Auditados

Os arquivos abaixo foram lidos diretamente durante esta auditoria:

  • aspnet-core/src/cargo_fleet.HttpApi.Host/appsettings.json
  • aspnet-core/src/cargo_fleet.HttpApi.Host/appsettings.secrets.json
  • aspnet-core/src/cargo_fleet.HttpApi.Host/cargo_fleetHttpApiHostModule.cs
  • aspnet-core/src/cargo_fleet.HttpApi.Host/Controllers/HomeController.cs
  • aspnet-core/src/cargo_fleet.HttpApi.Host/BackgroundJobs/ProcessarOfertasWorker.cs
  • aspnet-core/src/cargo_fleet.HttpApi.Host/BackgroundJobs/AtualizarOfertasWorker.cs
  • aspnet-core/src/cargo_fleet.HttpApi.Host/BackgroundJobs/RegistrarOfertasWorker.cs
  • aspnet-core/src/cargo_fleet.HttpApi.Host/BackgroundJobs/RetentionPolicyWorker.cs
  • aspnet-core/src/cargo_fleet.HttpApi.Host/BackgroundJobs/VerificarRotasWorker.cs
  • aspnet-core/src/cargo_fleet.HttpApi/DeviceToken/DeviceTokenController.cs
  • aspnet-core/src/cargo_fleet.Application/GalileuCredentials/GalileuCredentialsAppService.cs
  • aspnet-core/src/cargo_fleet.Application/GalileuCredentials/GalileuCredentialsAppService.Extended.cs
  • aspnet-core/src/cargo_fleet.Application/CargasAdicionais/CargaAdicionalService.cs
  • aspnet-core/src/cargo_fleet.Application/CargaAdicionalScraper/CargaAdicionalScraperService.cs
  • aspnet-core/src/cargo_fleet.Application/Ofertas/Aceite/OfertasAceitePreparationService.cs
  • aspnet-core/src/cargo_fleet.Application/Scryber/PrintingAppService.cs
  • aspnet-core/src/cargo_fleet.Application/Metricas/MetricasAppService.cs
  • aspnet-core/src/cargo_fleet.EntityFrameworkCore/Ofertas/EfCoreOfertaRepository.cs
  • aspnet-core/src/cargo_fleet.Domain/cargo_fleet.Domain.csproj
  • aspnet-core/src/cargo_fleet.Application.Contracts/cargo_fleet.Application.Contracts.csproj
  • angular/src/environments/environment.prod.ts
  • angular/android/app/google-services.json
  • angular/src/app/ofertas-abertas/components/cotar/cotar.component.ts
  • angular/package.json
  • angular/nginx.conf
  • .github/workflows/Production.yaml
  • .github/kubernetes/production/configmap.yaml
  • .github/kubernetes/production/redis.yml
  • .github/kubernetes/production/dbmigrator.yml
  • .github/kubernetes/develop/api.yml
  • .github/kubernetes/ingress-k3s-gemini.yml
  • .gitignore

Data da auditoria: 2026-03-14 (atualizado com respostas do usuario em 2026-03-14) Versao do sistema analisado: 1.3.1 Contexto: 22 tenants ativos, repositorio privado, meta de 150 tenants Disclaimer: Esta analise foi baseada no codigo-fonte do repositorio e em respostas parciais do responsavel pelo sistema. Nao houve acesso ao ambiente de producao, banco de dados ativo ou logs. Achados classificados como "risco provavel" ou "hipotese" devem ser validados no ambiente real. A ordem de prioridade e uma recomendacao tecnica ajustada com o contexto informado pelo usuario.

Nota

Os achados de seguranca, escalabilidade e arquitetura estao disponiveis no Catalogo de Achados com filtros avancados. O plano completo esta em Plano de Acao.

Referencias de Arquivos Auditados

Os arquivos abaixo foram lidos diretamente durante esta auditoria:

  • aspnet-core/src/cargo_fleet.HttpApi.Host/appsettings.json
  • aspnet-core/src/cargo_fleet.HttpApi.Host/appsettings.secrets.json
  • aspnet-core/src/cargo_fleet.HttpApi.Host/cargo_fleetHttpApiHostModule.cs
  • aspnet-core/src/cargo_fleet.HttpApi.Host/Controllers/HomeController.cs
  • aspnet-core/src/cargo_fleet.HttpApi.Host/BackgroundJobs/ProcessarOfertasWorker.cs
  • aspnet-core/src/cargo_fleet.HttpApi.Host/BackgroundJobs/AtualizarOfertasWorker.cs
  • aspnet-core/src/cargo_fleet.HttpApi.Host/BackgroundJobs/RegistrarOfertasWorker.cs
  • aspnet-core/src/cargo_fleet.HttpApi.Host/BackgroundJobs/RetentionPolicyWorker.cs
  • aspnet-core/src/cargo_fleet.HttpApi.Host/BackgroundJobs/VerificarRotasWorker.cs
  • aspnet-core/src/cargo_fleet.HttpApi/DeviceToken/DeviceTokenController.cs
  • aspnet-core/src/cargo_fleet.Application/GalileuCredentials/GalileuCredentialsAppService.cs
  • aspnet-core/src/cargo_fleet.Application/GalileuCredentials/GalileuCredentialsAppService.Extended.cs
  • aspnet-core/src/cargo_fleet.Application/CargasAdicionais/CargaAdicionalService.cs
  • aspnet-core/src/cargo_fleet.Application/CargaAdicionalScraper/CargaAdicionalScraperService.cs
  • aspnet-core/src/cargo_fleet.Application/Ofertas/Aceite/OfertasAceitePreparationService.cs
  • aspnet-core/src/cargo_fleet.Application/Scryber/PrintingAppService.cs
  • aspnet-core/src/cargo_fleet.Application/Metricas/MetricasAppService.cs
  • aspnet-core/src/cargo_fleet.EntityFrameworkCore/Ofertas/EfCoreOfertaRepository.cs
  • aspnet-core/src/cargo_fleet.Domain/cargo_fleet.Domain.csproj
  • aspnet-core/src/cargo_fleet.Application.Contracts/cargo_fleet.Application.Contracts.csproj
  • angular/src/environments/environment.prod.ts
  • angular/android/app/google-services.json
  • angular/src/app/ofertas-abertas/components/cotar/cotar.component.ts
  • angular/package.json
  • angular/nginx.conf
  • .github/workflows/Production.yaml
  • .github/kubernetes/production/configmap.yaml
  • .github/kubernetes/production/redis.yml
  • .github/kubernetes/production/dbmigrator.yml
  • .github/kubernetes/develop/api.yml
  • .github/kubernetes/ingress-k3s-gemini.yml
  • .gitignore

Data da auditoria: 2026-03-14 (atualizado com respostas do usuario em 2026-03-14) Versao do sistema analisado: 1.3.1 Contexto: 22 tenants ativos, repositorio privado, meta de 150 tenants Disclaimer: Esta analise foi baseada no codigo-fonte do repositorio e em respostas parciais do responsavel pelo sistema. Nao houve acesso ao ambiente de producao, banco de dados ativo ou logs. Achados classificados como "risco provavel" ou "hipotese" devem ser validados no ambiente real. A ordem de prioridade e uma recomendacao tecnica ajustada com o contexto informado pelo usuario.