{"generated_at":"2026-10-30T23:17:17.159Z","posture":{"updated_at":"2026-09-26","tests":{"regression":{"api":{"suites":181,"tests":1669},"web":{"suites":95,"tests":968},"executed_at":"2026-09-26"},"evidence":[{"id":"v1-producao","label":"Exercício ponta a ponta da API /v1","description":"Todos os 27 caminhos do OpenAPI com casos de sucesso e de falha, webhooks, rate limit, escopos e ciclo de vida da chave (emitida pelo painel do administrador de homologação e revogada ao final), LGPD, origem própria do ambiente e borda do servidor, sobre o curso oficial.","checks":169,"passed":169,"executed_at":"2026-09-26","target":"Homologação em produção"},{"id":"jornada-producao","label":"Jornada completa do aluno","description":"Acesso pelo endereço próprio, conteúdo sem gabarito, estudo dos 7 módulos em ordem, questões corrigidas no servidor, reflexões fora da nota, tentativas de burla, certificado negado antes das 16 horas e emitido ao cruzar 960 minutos, desistência, prazo vencido, força bruta, exclusão LGPD e eventos de integração — pelas mesmas chamadas do aplicativo.","checks":158,"passed":158,"executed_at":"2026-09-26","target":"Homologação em produção"},{"id":"navegador-producao","label":"Jornada do aluno em navegador real","description":"Marca pública do ambiente, caminho antigo redirecionado, login white-label no endereço próprio, sessão isolada por origem, dashboard, matrícula, player com módulos bloqueados (sem tempo mínimo por tela), vídeo pela mídia própria, reflexão com a resposta registrada, tempo de estudo creditado por heartbeat, Certificados com o tempo que falta, verificação pública, status e pausa do relógio por ausência — capturas com o endereço real.","checks":33,"passed":33,"executed_at":"2026-09-26","target":"Homologação em produção (endereço próprio do ambiente)"},{"id":"guia-producao","label":"Guia de Integração × API de produção","description":"Cada afirmação verificável do Guia de Integração Técnica executada contra a API real: 335 afirmações, 278 verificáveis em produção (todas conferem, 0 divergências) e 57 cobertas pela regressão automatizada; inclui 169 entregas reais de webhook com assinatura válida.","checks":278,"passed":278,"executed_at":"2026-09-26","target":"Homologação em produção"},{"id":"sso-validacao","label":"SSO OIDC de ponta a ponta","description":"Fluxo OIDC com PKCE, state e nonce, validação do id_token, ticket de uso único preso à origem, provisionamento JIT, avisos de erro no endereço próprio do ambiente e tela de SSO do administrador — pela API e em navegador, com provedor de identidade de teste.","checks":110,"passed":110,"executed_at":"2026-09-26","target":"Ambiente de validação"}],"pentest":{"kind":"Avaliação interna, caixa-cinza, não destrutiva, contra produção","executed_at":"2026-09-09","window":"09/09/2026, 00:13–00:15 BRT (janela de manutenção)","checks":28,"passed":28,"exploitable":0,"scope":["Transporte (HSTS, recusa de TLS 1.0/1.1, ausência de banner de servidor)","Cabeçalhos de segurança (nosniff, proteção contra clickjacking)","CORS (origem desconhecida não é espelhada)","Autenticação (rota sem credencial, assinatura inválida, freio de força bruta, política de senha)","Autorização / IDOR (aluno × dados de outro aluno; aluno × rotas de admin e superadmin)","API pública e SCIM (chave sem escopo, chave revogada, ausência de chave, SCIM sem credencial)","Superfície pública (verificação de certificado inexistente, path traversal em /media, /.env)","Cadeia de entrega (auditoria de dependências contra baseline; CodeQL no CI)"],"out_of_scope":["Fuzzing de payloads","Testes de negação de serviço (proibidos em produção)","Engenharia social","Revisão manual de código dos módulos de IA/voz"],"next_round":"março/2027 (semestral) ou após mudança arquitetural relevante"},"sast":{"tool":"CodeQL","cadence":"A cada alteração (push e pull request) e semanalmente, como portão do pipeline: achado de severidade alta fora do baseline triado reprova a integração (gate fail-closed).","last_full_review_at":"2026-09-09","fixes_applied":7,"dependency_audit":"Auditoria de dependências (alta/crítica) a cada alteração, contra baseline versionado: vulnerabilidade nova quebra o build; as conhecidas seguem em plano de atualização."}},"controls":[{"id":"16.1.1","name":"TLS 1.2+ em trânsito","status":"implemented","summary":"TLS 1.0 e 1.1 recusados; HSTS na API e no site.","evidence":"Teste de intrusão interno de 09/09/2026 (bloco de transporte)."},{"id":"16.1.2","name":"Segredos cifrados em repouso","status":"implemented","summary":"AES-256-GCM para credenciais de integração, segredos de webhook e documentos dos condutores (CPF, telefone e nº da CNH); senhas com bcrypt custo 12.","evidence":"Suíte automatizada regulatory-encryption; teste de intrusão de 09/09/2026."},{"id":"16.1.3","name":"Perfis e menor privilégio","status":"implemented","summary":"Papéis condutor/gestor/admin/superadmin; escopos mínimos por chave de API, com revogação imediata.","evidence":"Suítes automatizadas a1-users-admin, api-keys.integration e login-tenant-host."},{"id":"16.1.4","name":"Segundo fator obrigatório para administradores","status":"implemented","summary":"Política por ambiente (security.requireMfaForAdmins), sem carência: o próprio login conduz o cadastro do segundo fator; Passkey/WebAuthn.","evidence":"Suíte automatizada mfa-admin-enforcement; verificação em navegador com capturas (agosto/2026)."},{"id":"16.1.5","name":"Sessão do usuário","status":"implemented","summary":"Sessão de curta duração com renovação rotativa (renovação antiga invalidada); logout encerra a sessão imediatamente; freio por conta e por origem no login.","evidence":"Suítes automatizadas session-lifecycle e login-tenant-host; jornada do aluno (grupos de acesso, sessão e força bruta) e jornada em navegador no endereço próprio do ambiente."},{"id":"16.1.6","name":"Freio de tentativas de autenticação por conta","status":"implemented","summary":"Bloqueio de 15 minutos após 10 falhas por conta.","evidence":"Teste de intrusão de 09/09/2026: 11ª tentativa respondida com 429."},{"id":"16.1.7","name":"Segregação lógica testada","status":"implemented","summary":"Isolamento por tenant em toda rota, coberto por testes automatizados.","evidence":"Suítes enrollments.security e a1-api-public; tentativas de acesso cruzado negadas no teste de intrusão de 09/09/2026."},{"id":"16.1.8","name":"Trilhas de auditoria por 24 meses","status":"implemented","summary":"Registro de auditoria com IP e navegador; retenção automática de 24 meses.","evidence":"Suíte automatizada active-users-report (evento de login); PSI-06."},{"id":"16.1.9","name":"Backup (RPO 24 h / RTO 8 h)","status":"implemented","summary":"Cópia lógica diária do banco (pg_dump às 01:30 em Brasília) gravada em volume próprio, separado do banco, com verificação de integridade, hash SHA-256 e retenção de 14 dias; teste de restauração automático toda semana. Primeiro teste registrado: base restaurada em segundos, 77 tabelas e 11.668 linhas com contagens idênticas à produção. Além disso, cópias agendadas do provedor (diária, semanal e mensal) do volume do banco e do volume de arquivos enviados. Procedimento completo de recuperação em instância nova na PSI-09.","evidence":"Serviço postgres-backup (Railway) com script versionado scripts/manutencao/backup-postgres-railway.sh; registro docs/seguranca/registros/registro-backup-restauracao.md; doc 04 §6.8; PSI-09."},{"id":"16.1.10","name":"Análise estática e auditoria de dependências","status":"implemented","summary":"CodeQL com portão fail-closed contra baseline triado; auditoria de dependências com baseline.","evidence":"Triagem completa do CodeQL em 09/09/2026; execução a cada alteração no CI."},{"id":"16.1.11","name":"Teste de intrusão semestral com relatório","status":"implemented","summary":"Rodada de setembro/2026: 28 verificações, 28 aprovadas, 0 vulnerabilidades exploráveis.","evidence":"Relatório executivo de 09/09/2026, disponível ao cliente mediante solicitação."}],"infrastructure":{"summary":"Hospedagem, isolamento e operação da plataforma, aspecto a aspecto, com o estado de cada um e a fonte de cada afirmação.","items":[{"id":"hospedagem","area":"Hospedagem e dados","status":"implemented","summary":"API e banco PostgreSQL gerenciado na Railway Corp.; aplicação web na Vercel Inc. (conteúdo estático com distribuição em borda); e-mail transacional na Resend, Inc.; vídeos do curso no Cloudflare R2 (Cloudflare, Inc., sem dado pessoal); assistente de IA da Central de ajuda na API Gemini (Google LLC), que recebe só o texto da pergunta. Todos têm acordo de tratamento arquivado; Railway, Vercel e Resend passaram pela avaliação de terceiros de 20/08/2026, e Cloudflare e Google (Gemini) foram incluídos em 26/09/2026. Produção e homologação do cliente são tenants separados no mesmo código.","evidence":"Doc 09 §1; doc 11 §3; avaliação de suboperadores de 20/08/2026; acordos arquivados em docs/seguranca/registros/acordos-suboperadores (Cloudflare e Google em 26/09/2026)."},{"id":"transporte","area":"Transporte e certificados","status":"implemented","summary":"TLS 1.2 ou superior em toda a borda, com HSTS; TLS 1.0 e 1.1 recusados; certificados emitidos e renovados automaticamente pelos provedores, inclusive o certificado curinga dos endereços próprios por cliente (*.intellicreate.online); nenhum banner de servidor exposto.","evidence":"Teste de intrusão de 09/09/2026 (bloco de transporte); verificação dos endereços próprios em produção."},{"id":"isolamento","area":"Isolamento por tenant e por origem","status":"implemented","summary":"Toda consulta leva o identificador do tenant (isolamento lógico) e cada cliente tem endereço próprio (<cliente>.intellicreate.online): o login só emite sessão para contas do tenant daquele endereço, contas de ambiente com endereço próprio não entram pela raiz, o cabeçalho de tenant vindo de fora é descartado (só o host define o tenant) e as chaves de segurança ficam presas à origem.","evidence":"Suítes tenant-url, login-tenant-host, tenant-public e middleware; jornada em navegador no endereço próprio."},{"id":"credenciais","area":"Configuração e credenciais","status":"implemented","summary":"Credenciais e segredos ficam só em variáveis de ambiente do provedor, fora do código e do repositório; chaves de API de integração com escopos mínimos, rotação com período de graça e revogação imediata; senhas de usuários com bcrypt (custo 12) e política de senha aplicada no servidor; segundo fator obrigatório para administradores.","evidence":"PSI-05; doc 04 §1.4; suítes api-keys.integration, password-policy e mfa-admin-enforcement."},{"id":"cifragem","area":"Cifragem em repouso","status":"implemented","summary":"CPF, telefone e número da CNH cifrados com AES-256-GCM na aplicação, no cadastro e no titular congelado de cada certificado, além da cifragem de disco do provedor; credenciais de integração e segredos de webhook cifrados; mascaramento em consultas, integrações e na verificação pública.","evidence":"Suíte regulatory-encryption; doc 09 §5.6."},{"id":"rede","area":"Rede, CORS e cabeçalhos","status":"implemented","summary":"CORS com lista de origens permitidas (raiz e endereços próprios *.intellicreate.online; origem desconhecida não é espelhada); cabeçalhos de segurança (nosniff, proteção contra enquadramento); limitação de requisições por origem e freio por conta no login; proteção anti-SSRF nas URLs cadastradas (hosts de metadados de nuvem e faixas privadas bloqueados).","evidence":"Teste de intrusão de 09/09/2026; teste interno reexecutável (21 casos, 0 achados); suíte cors-origin; doc 09 §5."},{"id":"monitoramento","area":"Monitoramento e incidentes","status":"implemented","summary":"Amostragem por minuto dos componentes (API, banco, webhooks, armazenamento) com histórico público de disponibilidade em /status, medido pela própria plataforma; registro formal de incidentes com comunicação ao Controlador em até 24 horas do conhecimento. Verificação externa independente implantada no GitHub Actions (infraestrutura separada da Railway e da Vercel): 14 verificações sobre API, aplicação, login de cada cliente e certificados TLS, com chamado automático e e-mail ao responsável em caso de falha; a agenda horária roda pela conta do GitHub da IntelliCreate. Verificação rápida a cada 5 minutos pelo UptimeRobot (API com o banco, login de cada cliente, integração, status e site), com alerta por e-mail à equipe de suporte e resultado público na própria página /status.","evidence":"Suítes status.service e status-sampler.service; PSI-08; workflow monitor-externo.yml e script scripts/monitoramento/monitor-externo.mjs (14 verificações); UptimeRobot configurado por scripts/monitoramento/configurar-uptimerobot.mjs, com o resultado exibido na página /status; doc 04 §6.1."},{"id":"entrega","area":"Entrega de software","status":"implemented","summary":"Código versionado com análise estática CodeQL a cada alteração, com portão fail-closed contra a linha de base triada (achado novo falha a execução e avisa); suíte de regressão completa da API e do web antes de cada publicação; publicação a partir da branch principal com migrations versionadas e rollback documentado.","evidence":"Doc 04 §2; análise estática e regressão na seção Testes e evidências."},{"id":"copias","area":"Cópias de segurança e recuperação","status":"implemented","summary":"Cópia lógica diária do banco em volume próprio, separado do volume do banco, com verificação de integridade, hash e retenção de 14 dias; teste de restauração automático toda semana e plano de continuidade e recuperação aprovado (PSI-09). Primeiro teste de restauração registrado com contagens idênticas à produção em todas as 77 tabelas. Cópias agendadas do provedor (diária, semanal e mensal) do volume do banco e do volume de arquivos enviados, independentes da cópia lógica. As cópias ficam no mesmo provedor; cópia fora do provedor é opção documentada, não contratada.","evidence":"Serviço postgres-backup (Railway); script versionado; registro docs/seguranca/registros/registro-backup-restauracao.md; PSI-09; doc 04 §6.8."}]},"lgpd":{"role":"Operadora — o cliente corporativo é o Controlador e define finalidade e base legal.","dpo_email":"lgpd@intellicreate.online","data_collected":"Identificação (nome, e-mail, data de nascimento, CPF), contato (telefone, opcional), habilitação (registro da CNH, categoria, validade, EAR), uso e desempenho (tempo de estudo, itens, respostas, notas, conclusão), certificação e registros de acesso (data/hora, IP).","not_collected":"Dados sensíveis (art. 5º, II da LGPD), geolocalização, dados bancários e dados de familiares. Nenhum dado de condutor (nome, e-mail, CPF, CNH ou dados de estudo) é enviado a provedor de IA: o assistente da Central de ajuda, quando habilitado, envia ao Google (Gemini) apenas o texto da pergunta digitada, com aviso na tela para não digitar dados pessoais.","encryption_at_rest":"CPF, telefone e nº da CNH cifrados com AES-256-GCM na aplicação, no perfil e no titular congelado de cada certificado, além da cifragem de disco do provedor; senhas com bcrypt (custo 12).","masking":"CPF, telefone e CNH mascarados em consultas, integrações e na verificação pública; o dado integral aparece só no certificado do próprio titular.","retention":"Registros de Conformidade (tempo de estudo, avaliações, conclusão e certificado com titular congelado) por 5 anos da emissão do certificado, por exigência regulatória; trilhas de auditoria por 24 meses; cópias em backup até 30 dias.","anonymization":"A exclusão de um titular anonimiza o cadastro na hora (identificadores removidos, conta bloqueada) e preserva matrícula, tempo, notas e certificado como Registros de Conformidade; titular sem matrícula nem certificado é excluído definitivamente; purga automática após 60 meses.","incident_notification":"Incidente que envolva dados pessoais é comunicado ao Controlador em até 24 horas do conhecimento, com o que se sabe naquele momento, e atualizado conforme a investigação avança.","rights":["Acesso e portabilidade: o próprio titular exporta todos os seus dados em formato estruturado pela plataforma, com registro na trilha de auditoria.","Correção: dados cadastrais são corrigidos pelo Controlador (API ou painel); registros de desempenho são registros de fato e não são editáveis.","Eliminação e demais direitos: requisições recebidas pela Operadora são comunicadas de imediato ao Controlador, sem resposta direta ao titular.","Informação: Política de Privacidade e página LGPD públicas em /legal/privacy e /legal/lgpd."]},"subprocessors":{"assessed_at":"2026-08-20","assessment":"Avaliação anual do ciclo 2026: nenhum fornecedor avaliado como inadequado; duas ressalvas registradas (concentração de backend, banco e backups em um provedor, mitigada por rota de saída documentada; dependência de e-mail transacional, sem impacto na emissão de certificados). Cloudflare e Google (Gemini) incluídos em 26/09/2026, com acordo arquivado: o primeiro só armazena e entrega os vídeos do curso, sem dado pessoal; o segundo recebe apenas o texto da pergunta feita ao assistente da Central de ajuda.","items":[{"name":"Railway Corp.","purpose":"Aplicação, banco de dados e backups","region":"Estados Unidos","agreement_source":"https://railway.com/legal/dpa","agreement_captured_at":"2026-09-21","agreement_sha256":"3d237b7b389c277527f31f83c1347e66008a60b376cccdbc090f2e9f46206a3c"},{"name":"Vercel Inc.","purpose":"Hospedagem e distribuição do frontend (conteúdo estático, sem dado pessoal)","region":"Estados Unidos, com borda global","agreement_source":"https://vercel.com/legal/dpa","agreement_captured_at":"2026-09-21","agreement_sha256":"8f7d21ec91ff7ef1a2aafebd429f645b4fc0f06dc38b83988630c3387d47e404"},{"name":"Resend, Inc.","purpose":"E-mail transacional (recebe apenas nome e e-mail para entrega)","region":"Estados Unidos","agreement_source":"https://resend.com/legal/dpa","agreement_captured_at":"2026-09-21","agreement_sha256":"14df2afb4dc9b6c0595e73e3c9a24829dfd351c692fe35efd488cad328e620e2"},{"name":"Cloudflare, Inc.","purpose":"Armazenamento e entrega dos vídeos do curso (Cloudflare R2, midiaintellicreate.online; sem dado pessoal)","region":"Estados Unidos, com rede global","agreement_source":"https://www.cloudflare.com/cloudflare-customer-dpa/","agreement_captured_at":"2026-09-26","agreement_sha256":"d02924a179546996cbb0d0b034c154e5e1a2f38d0ecc8d1e98ac0a0de2ff4a11"},{"name":"Google LLC (Gemini API)","purpose":"Assistente de IA da Central de ajuda: recebe apenas o texto da pergunta digitada (sem nome, e-mail, CPF ou dados de estudo)","region":"Estados Unidos","agreement_source":"https://ai.google.dev/gemini-api/terms","agreement_captured_at":"2026-09-26","agreement_sha256":"1beb6a1c8a1a2034ff9789bd36bc42473c6a499a3f01016ac857e2edf8360538"}]},"policies":[{"id":"PSI-01","name":"Política de Segurança da Informação (PSI)","version":"1.0","approved_at":"2026-08-20"},{"id":"PSI-02","name":"Política de Classificação e Manuseio da Informação","version":"1.0","approved_at":"2026-08-20"},{"id":"PSI-03","name":"Política de Gestão de Ativos","version":"1.0","approved_at":"2026-08-20"},{"id":"PSI-04","name":"Procedimento de Controle e Revisão de Acessos","version":"1.0","approved_at":"2026-08-20"},{"id":"PSI-05","name":"Procedimento de Gestão de Chaves e Segredos","version":"1.0","approved_at":"2026-08-20"},{"id":"PSI-06","name":"Baseline de Configuração Segura (Hardening)","version":"1.0","approved_at":"2026-08-20"},{"id":"PSI-07","name":"Programa de Gestão de Riscos de Terceiros","version":"1.0","approved_at":"2026-08-20"},{"id":"PSI-08","name":"Plano de Resposta a Incidentes de Segurança","version":"1.0","approved_at":"2026-08-20"},{"id":"PSI-09","name":"Plano de Continuidade de Negócios e Recuperação (BCP/DRP)","version":"1.0","approved_at":"2026-08-20"},{"id":"PSI-10","name":"Política de Trabalho Remoto e Segurança de Estações","version":"1.0","approved_at":"2026-08-20"},{"id":"PSI-11","name":"Modelagem de Ameaças — Cursos regulados","version":"1.0","approved_at":"2026-08-20"},{"id":"PSI-12","name":"Programa de Conscientização em Segurança da Informação","version":"1.0","approved_at":"2026-08-20"},{"id":"PSI-13","name":"Relatório de Auditoria Interna de Segurança — 2026","version":null,"approved_at":"2026-08-20"},{"id":"PSI-14","name":"Teste de Intrusão Interno — 2026","version":null,"approved_at":"2026-08-20"},{"id":"PSI-15","name":"Código de Ética, Conduta e Anticorrupção","version":"1.0","approved_at":null}],"incidents":{"registered":0,"since":"2026-08-20","as_of":"2026-09-22","exercises":[{"date":"2026-09-09","kind":"Teste de intrusão interno","result":"28 verificações contra produção; 0 vulnerabilidades."}]}},"live":{"status":"operational","uptime":{"last_24h":100,"last_7d":100,"last_30d":100},"incidents_30d":0}}