14-16 Mar 2026

Resumo Executivo

v5.0 — Reauditoria Final

Auditoria tecnica do sistema CargoFleet — 5 rodadas de analise completa. Realizada em 14-16 Mar 2026.

Notas da auditoria

Nota de auditoria: Este documento consolida os resultados de tres revisores especializados (arquitetura, seguranca e escalabilidade). Toda observacao e classificada como achado confirmado (evidencia direta no codigo), risco provavel (padrao que quase certamente causa o problema descrito) ou hipotese (suspeita sem evidencia direta). Nenhum achado foi inventado.

Atualizacao 2026-03-14 (segunda rodada): Respostas parciais do usuario incorporadas. Perguntas 1, 2, 4, 7, 8, 9, 12 respondidas. Perguntas 3, 5, 6, 10, 11, 13 pendentes com equipe de desenvolvimento. Achados reclassificados conforme contexto real informado.

Atualizacao 2026-03-14 (terceira rodada — segunda passagem profunda): Adicionados achados de arquitetura (P-01 a P-14), seguranca (SEC2-01 a SEC2-17), e escalabilidade da segunda passagem. Total de achados novos: ~40.

Atualizacao 2026-03-15 (quarta rodada — verificacao profunda): Re-auditoria completa com 5 agentes especializados (arquitetura, seguranca, escalabilidade, frontend, infra/CI-CD). Adicionados ~30 achados novos: 2 Critical, 14 High, 7 Medium, 6 Low. Severidade de HIGH-01 e SEC2-08 reclassificada. Achados de frontend expandidos de 4 para 17.

Atualizacao 2026-03-16 (rodada final de fechamento): Deltas adicionados sem perda de historico: CORS no AuthServer (EXEC-06), logs sensiveis em integracoes (EXEC-07), acoplamento de runtime no CargaAdicionalService (EXEC-08), bug de service worker push (EXEC-09) e ausencia de gate de testes nos 3 workflows (EXEC-10).

Navegue pelas secoes no menu lateral para explorar cada area em detalhe. Os numeros abaixo refletem o total consolidado de todas as rodadas.

Roteiro recomendado

132

Total de achados

5 rodadas de analise

19

Critical

Risco imediato

42

High

Alta prioridade

50

Medium

Monitorar

21

Low

Baixo risco

1. Resumo Executivo

O CargoFleet e uma plataforma SaaS multitenancy de gerenciamento de fretes, construida sobre ABP Commercial 9.0 (.NET 9), com frontend Angular 17 + Ionic 8 e infraestrutura em AWS EKS (producao) e k3s (desenvolvimento). A auditoria identificou cinco achados de severidade Critical, todos confirmados diretamente no codigo-fonte, que expõem credenciais de producao e comprometem o controle de acesso da API.

Varredura final (2026-03-14): A varredura final identificou 24 achados de infraestrutura (5 Critical, 7 High, 8 Medium, 4 Low) e 4 achados de frontend (1 High, 2 Medium, 1 Low). O achado mais grave e a presenca de senha de certificado OpenIddict e ABP License Code em arquivos docker-compose versionados (INFRA-01, INFRA-02).

Verificacao profunda (2026-03-15): A quarta rodada com 5 agentes especializados identificou 2 novos achados Critical (DefaultPassPhrase do ABP hardcoded e senha do certificado OpenIddict hardcoded em codigo C#), 14 High (falhas de seguranca mobile, handlers inativos, ausencia de auth guards no frontend, indices ausentes), 7 Medium e 6 Low. HIGH-01 reclassificado para Critical e SEC2-08 para High.

O problema mais grave e a presenca de multiplas credenciais de producao em texto plano no repositorio Git: o token permanente da Meta/WhatsApp Graph API, a senha do PostgreSQL com usuario superusuario, a senha hardcoded da integracao com o microservico CargaAdicional, e chaves Firebase em tres plataformas distintas. Combinados com a politica CORS que permite qualquer origem (AllowAnyOrigin()), esses problemas representam risco imediato de comprometimento do ambiente de producao.

Do ponto de vista arquitetural, o sistema apresenta violacoes de camada confirmaveis: FirebaseAdmin referenciado no projeto Domain, e Application.Contracts referenciando diretamente Domain (em vez de apenas Domain.Shared). Os background workers criticos (ProcessarOfertasWorker, AtualizarOfertasWorker) executam em loop quase-continuo (Timer.Period = 1ms) sem limite de concorrencia entre tenants, e o Redis de producao esta configurado com limite de memoria de 2 MB — insuficiente para qualquer carga real e suficiente para derrubar DataProtection keys e distributed locks.

A divida tecnica acumulada inclui: ausencia total de execucao de testes no CI/CD, mismatch de versao entre ABP backend (9.0.0) e ABP frontend (8.3.3), validacao de origem/destino de rotas comentada (ValidarOrigemDestino()), worker legado (RegistrarOfertasWorker) com codigo ativo mas comentado, e ausencia de indices criticos na tabela AppOfertas. O sistema nao possui HPA nem mais de uma replica para nenhum componente em producao.

A auditoria foi realizada exclusivamente sobre o codigo-fonte do repositorio. Nao houve acesso ao ambiente de producao, logs ativos ou banco de dados. Todos os achados devem ser validados com o time tecnico antes de qualquer acao.

Segunda passagem (2026-03-14): A analise aprofundada da logica de negocio revelou problemas arquiteturais adicionais de severidade critica. O mais grave e a existencia de dois workers concorrentes (RegistrarOfertasWorker e ProcessarOfertasWorker) processando as mesmas ofertas Galileu simultaneamente, com logicas distintas e endpoints diferentes na API externa — o que pode causar aceites duplicados e estados inconsistentes. Agrava a situacao o fato de que o RegistrarOfertasWorker possui uma logica de autenticacao invertida (lanca excecao quando auth e bem-sucedida), o que se estiver ativo em producao significa falha sistematica em todos seus ciclos. A segunda passagem identificou tambem senhas em texto plano circulando em eventos internos (GalileuCredentialCreatedEto com campo Senha antes da criptografia), exposicao do campo de senha criptografada em DTOs de resposta da API, injection via Dynamic LINQ no parametro sorting sem whitelist de campos, e ausencia total de [Authorize] no DeviceTokenController. No total, a segunda passagem adicionou 2 achados Critical novos, 5 High, 7 Medium e 3 Low na dimensao de seguranca, mais 14 problemas arquiteturais (P-01 a P-14) e uma dezena de gargalos de performance confirmados.

Contexto operacional confirmado pelo usuario

FatoValorImpacto na auditoria
RepositorioPrivado, acesso restrito a equipe de devReduz urgencia de secrets expostos, mas nao elimina risco
Tenants ativos22 (meta: 150 no auge)Workers paralelos ainda suportaveis; com 150 tenants, Redis 2MB e Task.WhenAll sem limite serao criticos
Senha admin 1q2w3E*Confirmada em uso em producaoCRIT-03 reclassificado para urgencia maxima — conta admin comprometida
ScraperDesativado permanentementeCodigo comentado deve ser removido do repositorio
URL Galileu nestle-brURL real de producao, todos os tenants usamMultitenancy Galileu e por login/senha, nao por URL. URL hardcoded impede troca sem redeploy
Rotacao de secretsNao existe processo de rotacaoRisco acumulado — mesmos secrets desde a criacao do sistema
Total de acoes101

Acoes por fase

2a Pass. Curto7
2a Pass. Imediata4
2a Pass. Medio9
4a Rod. Baixa6
4a Rod. Curto12
4a Rod. Imediata3
4a Rod. Medio8
Curto Prazo8
Estrategica5
Imediata7
Medio Prazo7
Varredura Curto11
Varredura Imediata5
Varredura Medio9

Sistema em producao

Tenants ativos22
Meta de usuarios150
Background workers5
Pipelines CI/CD3
Redis heap limit2 MB
IDTitulo
CRIT-01Token permanente Meta/WhatsApp API hardcoded no repositoriover →
CRIT-02Credenciais PostgreSQL (superusuario) em texto plano em 3 arquivosver →
CRIT-03Senha hardcoded da integracao CargaAdicional em appsettings.jsonver →
CRIT-04CORS AllowAnyOrigin() em producaover →
CRIT-05Chaves Firebase expostas em tres plataformas no repositoriover →
SCALE-C1Redis maxmemory 2MB em producaover →
SCALE-C2ProcessarOfertasWorker sem limite de concorrencia entre tenantsver →
P-01Dois workers concorrentes processando as mesmas ofertas (RACE CONDITION SISTEMICA)ver →
2a Pass. Curto2a Pass. Curto7 acoes
2a Pass. Imediata2a Pass. Imediata4 acoes
2a Pass. Medio2a Pass. Medio9 acoes
4a Rod. Baixa4a Rod. Baixa6 acoes
4a Rod. Curto4a Rod. Curto12 acoes
4a Rod. Imediata4a Rod. Imediata3 acoes
4a Rod. Medio4a Rod. Medio8 acoes
Curto PrazoCurto Prazo8 acoes
EstrategicaEstrategica5 acoes
ImediataImediata7 acoes
Medio PrazoMedio Prazo7 acoes
Varredura CurtoVarredura Curto11 acoes
Varredura ImediataVarredura Imediata5 acoes
Varredura MedioVarredura Medio9 acoes

2. Stack Identificada

ComponenteTecnologiaVersaoEvidencia
Runtime backend.NET9.0cargo_fleet.Domain.csproj linha 6
Framework backendABP Commercial9.0.0cargo_fleet.Domain.csproj dependencias
ORMEntity Framework Core + PostgreSQL9.0.0cargo_fleet.EntityFrameworkCore.csproj
AuthOpenIddict Pro (via ABP)9.0.0cargo_fleet.Domain.csproj
MultitenancyVolo.Saas9.0.0cargo_fleet.Domain.csproj
PDFScryber.Core8.0.0.1-betacargo_fleet.Application.csproj
ExcelMiniExcel1.34.2cargo_fleet.Application.csproj
Cache e locksRedis + DistributedLock.Redis9.0.0 / 1.0.2cargo_fleetHttpApiHostModule.cs linhas 10-11
LoggingSerilog.AspNetCore8.0.0cargo_fleet.HttpApi.Host.csproj
Push backendFirebaseAdmin3.3.0cargo_fleet.Domain.csproj linha 16
Framework frontendAngular17.3.xangular/package.json linha 21
ABP frontendABP Angular (maioria)8.3.3angular/package.json linhas 15-18
ABP frontend (excecao)@abp/ng.tenant-management^9.0.2angular/package.json linha 19
Mobile frameworkIonic^8.5.3angular/package.json linha 43
Bridge nativoCapacitor7.2.0angular/package.json linhas 33-35
Biometriacapacitor-biometric-auth^9.0.0angular/package.json linha 31
Armazenamento segurocapacitor-secure-storage^6.0.1angular/package.json linha 32
Push frontendfirebase JS SDK^11.9.1angular/package.json linha 55
ConteineresDocker-aspnet-core/etc/docker/docker-compose.yml
Orquestracao (prod)Kubernetes / AWS EKS-.github/kubernetes/production/
Orquestracao (dev)k3s / Traefik-.github/kubernetes/ingress-k3s-gemini.yml
CDNCloudflare-Dominios observados via HAR
CI/CDGitHub Actions3 pipelines.github/workflows/
Versao API1.3.1-Informado na auditoria

MISMATCH CONFIRMADO: A maioria dos pacotes @abp/ng.* esta em ~8.3.3, enquanto o backend usa 9.0.0. A excecao e @abp/ng.tenant-management em ^9.0.2, criando inconsistencia dentro do proprio frontend. Isso representa risco de incompatibilidade de contrato de API.