{"schemaVersion":2,"updatedAt":"2026-10-24T12:31:37Z","assessment":{"id":"BAOBA-2026-10-22-02","title":"Reteste interno das correções de segurança","status":"completed","startedAt":"2026-10-22T17:24:00Z","finishedAt":"2026-10-22T17:31:39.277481+00:00","environment":"Ambiente local isolado, com banco descartável e contas fictícias","independent":false,"scope":["Superfícies públicas do site","Autenticação e sessões","Autorização entre contas, projetos e agentes","Consentimento de suporte","Criptografia no armazenamento"],"methods":["Scan ativo OWASP ZAP","Testes direcionados de abuso da API","Testes de isolamento e autenticação","Verificação no navegador","Testes de adulteração de registros criptografados","Restauração e migração com verificação de preservação","Scan completo dos pacotes OS e Python da imagem final"],"limitations":["Não avalia a infraestrutura ou os domínios de produção.","Não é uma auditoria independente nem uma certificação.","Resultados se referem ao escopo e à versão testados; não garantem ausência de falhas.","O scan público não equivale à exploração autenticada de todas as funções.","O scan ativo excluiu arquivos estáticos e a regra DOM XSS com navegador embutido (40026). Quatro testes direcionados de HTML/Markdown armazenados foram executados separadamente; não equivalem a uma varredura completa de DOM XSS.","O scan ativo foi limitado a um minuto por regra e quatro minutos no total. Uma primeira execução não exportou o relatório por permissão do volume e não foi contada; a execução final produziu os artefatos e foi analisada."]},"independentPentest":null,"evidence":{"backendTests":124,"frontendUnitTests":7,"browserTests":11,"activeScan":{"completed":true,"urls":16,"requests":3496,"alerts":10},"targetedChecks":{"passed":57,"failed":0},"google":"Login Google real confirmado pelo proprietário em 22/10/2026.","dependencies":{"javascriptKnownVulnerabilities":0,"pythonKnownVulnerabilities":0,"pythonPackages":96,"cpuWheelBinaryAudited":false,"runtimeImage":{"digest":"sha256:8a15e5420df2a5e4079e28903f035b84dddbca5a99e3b95101f2f9d1eb19f26d","osPackages":19,"pythonPackages":96,"critical":0,"high":0,"medium":22,"low":10,"unknown":0,"scope":"Imagem final do servidor, pacotes OS e Python; não inclui host ou outras imagens","remainingAlerts":"Alertas médios e baixos em bibliotecas necessárias do sistema, sem FixedVersion no banco consultado; não foram declarados corrigidos."}},"storedHtmlChecks":{"passed":4,"failed":0},"cryptography":{"format":"obenc2","recordBindingVerified":true,"apiTransplantChecks":4,"backupRestorationVerified":true,"migrationPreservationVerified":true}},"findings":[{"id":"STYLE-CSP","severity":"medium","status":"fixed","title":"Proteções de estilo mais restritas","description":"A política do navegador passou a exigir fontes próprias ou um nonce por resposta para estilos e bloqueia atributos de estilo injetados. Estilos fixos usam classes; mapa e animações usam JavaScript autorizado. O teste real do navegador bloqueou as duas formas de injeção sem violações nas páginas legítimas exercitadas; o antigo alerta CSP não apareceu no scan ativo.","nextStep":"Manter os testes de CSP, mapa, animações e mobile ao alterar componentes.","verifiedAt":"2026-10-22T17:31:39.277481+00:00"},{"id":"BASE-OS","severity":"high","status":"fixed","title":"Servidor com apenas os componentes necessários","description":"A imagem final usa uma base mínima estável fixada por digest. Os componentes responsáveis pelos oito CVEs altos anteriores foram removidos. O novo scan de pacotes OS e Python encontrou zero alertas altos ou críticos. Permanecem 22 alertas médios e 10 baixos em bibliotecas necessárias, registrados nos detalhes; não foram considerados corrigidos.","nextStep":"Repetir o scan da imagem final a cada atualização e antes de publicar. Este resultado local não comprova a segurança da infraestrutura de produção.","verifiedAt":"2026-10-22T17:31:39.277481+00:00"},{"id":"ROW-BINDING","severity":"medium","status":"fixed","title":"Criptografia vinculada à memória e à versão","description":"O conteúdo criptografado agora autentica tabela, campo, identidade e os vínculos de Brain e versão aplicáveis. Trocas entre registros, Brains, campos e versões foram recusadas. A migração foi ensaiada em uma restauração isolada e aplicada localmente com preservação integral verificada antes do commit.","nextStep":"Manter restrições de escrita no banco e proteção das chaves. O vínculo não impede um operador privilegiado nem o rollback consistente de todo o banco.","verifiedAt":"2026-10-22T17:31:39.277481+00:00"},{"id":"CSRF-ORIGIN","severity":"medium","status":"false_positive","title":"Detecção de CSRF nos formulários","description":"O scanner procurou campos de token CSRF. As rotas que alteram autenticação validam a origem exata e Fetch Metadata, com cookie SameSite. As tentativas de outra origem foram recusadas. O POST nativo na página de cadastro não criou uma conta.","nextStep":"Manter os testes de origem em novas rotas e formulários."},{"id":"SVG-PII","severity":"high","status":"false_positive","title":"Coordenadas da ilustração confundidas com dados pessoais","description":"Todas as evidências desse alerta correspondiam a coordenadas de paths SVG da marca. Não eram informações pessoais de contas.","nextStep":"Revisar novamente se o conteúdo ou o detector mudar."},{"id":"REDIRECT","severity":"low","status":"false_positive","title":"Corpo de redirecionamento do framework","description":"Uma resposta de redirecionamento ao login foi marcada pelo tamanho. A verificação dessa resposta confirmou o redirecionamento e não encontrou os marcadores de conteúdo protegido usados no laboratório.","nextStep":"Preservar o bloqueio de acesso a dados na API e repetir a verificação ao mudar páginas protegidas."},{"id":"LOCAL-HTTP","severity":"medium","status":"environment","title":"Teste executado em HTTP local","description":"O scanner identificou HTTP no laboratório. Isso não atesta TLS nem cookies Secure em produção; a implantação pública ainda precisa dessa validação.","nextStep":"Verificar HTTPS, certificados e cookies no domínio público antes do lançamento."}],"operations":[{"title":"Infraestrutura de produção","status":"pending","description":"HTTPS, certificados, redirecionamento de HTTP e cookies Secure foram verificados no domínio em 24/10/2026. WAF, entrega real de e-mail, backups e permissões operacionais ainda exigem validação própria."},{"title":"Acesso humano à infraestrutura","status":"pending","description":"O consentimento funciona na aplicação. A restrição de acesso humano direto a banco, backups e chaves exige controles de infraestrutura separados."},{"title":"Avaliação independente","status":"pending","description":"Ainda não há empresa avaliadora, certificado ou relatório independente emitido para esta versão."}],"references":[{"label":"OWASP Web Security Testing Guide","url":"https://owasp.org/projects/web-security-testing-guide/"},{"label":"OWASP ASVS","url":"https://owasp.org/projects/asvs/"},{"label":"Escopo do scan ativo ZAP","url":"https://www.zaproxy.org/docs/docker/full-scan/"}],"previousAssessment":"BAOBA-2026-10-22-01","billingReview":{"id":"BAOBA-2026-10-24-PLANS","title":"Revisão da proteção de planos e pagamentos","finishedAt":"2026-10-24","environment":"API e PostgreSQL de teste, com dados descartáveis e respostas de pagamento controladas","status":"review","deployment":"Correções verificadas em teste e em revisão. A cobrança ainda não foi ativada em produção.","backendTests":224,"billingTests":68,"independent":false,"controls":["Preço e plano definidos pelo servidor; alterações pelo cliente são recusadas.","Fatura vinculada ao mesmo cliente, assinatura, item e período.","Eventos repetidos e concorrentes não devem conceder benefícios extras.","Limites de uso compartilhados entre pessoas, projetos e agentes.","Operações recusadas não deixam consumo ou dados parciais.","Estorno ou disputa da fatura atual detectados também pela reconciliação."],"verification":"Em oito requisições HTTP simultâneas com uma escrita disponível, uma foi aceita e sete foram bloqueadas, com uma memória e um único débito.","limitations":["A integração com a conta real do provedor de pagamento e o portal ainda precisa de validação em sandbox.","O teste não comprova ausência de falhas, capacidade sob carga ou segurança de toda a infraestrutura.","Eventos históricos, reembolso de faturas anteriores após mudança de plano e políticas de disputa precisam de validação operacional.","O agendamento e os alertas da reconciliação precisam estar configurados antes da cobrança real."]}}