🎯 Clinicafy — Auditoria cs-*

⚖️ cs-quality-regulatory — Quality & Regulatory Compliance (LGPD/Healthcare)

Auditoria técnica e estratégica pela ótica cs-quality-regulatory — Quality & Regulatory Compliance (LGPD/Healthcare). Achados classificados por severidade, plano de ação e matriz de decisão.

Veredito: Dados de saúde (categoria especial LGPD) expostos sem autenticação em rotas críticas — violação direta da Lei 13.709/2018 com risco de multa ANPD.

Clinicafy processa dados de saúde — categoria especial pela LGPD (Art.11). A exposição de rotas /api/pacientes sem auth (HANDOFF.md:91) configura violação direta do Art.46 (segurança adequada) e Art.48 (comunicação de incidente). CSP ausente, CORS aberto, sem DPO nomeado e sem Política de Privacidade específica para dados médicos. O risco legal é crítico para um produto de saúde.

VIOLAÇÃO
LGPD Art.46 (segurança)
AUSENTE
DPO / Encarregado LGPD
AUSENTE
Política de Privacidade de saúde
AUSENTE
CSP Header (XSS protection)
SEM CRIPTOGRAFIA
Dados em trânsito internos

Dimensões Analisadas

Pontuação por área de análise.

LGPD Compliance

15

Dados de saúde processados sem: DPO, RIPD, Política de Privacidade adequada, consentimento granular.

3 achados 2 bloqueante(s)

Segurança de Dados

25

Auth Firebase robusta mas rotas sem auth expõem todos os dados. CSP ausente. CORS aberto.

3 achados 2 bloqueante(s)

CFM / Prontuário Digital

50

ConsultationPage tem status (draft/finalized/amended) e adendos — alinhado à Resolução CFM 1.821/2007. Sem assinatura digital.

1 achados

Audit Trail

20

audit_logs mencionado no HANDOFF mas sem código que escreve nele. Sem rastreabilidade de acesso.

2 achados

🔎 Achados (5)

2 crítico(s) · 3 alto(s) · 2 bloqueante(s). Clique para expandir.

Dados de saúde acessíveis sem autenticação — violação LGPD Art.46CríticaBloqueanteEsforço medioLGPD Art.46 / OWASP A01

O que é: HANDOFF.md:91-92: rotas /api/pacientes (e outras) respondem sem verifyAuth. Pacientes contêm: CPF, diagnósticos CID10, alergias, medicações, histórico familiar, anamnese — dados de saúde = categoria especial LGPD. Acessíveis sem token.

Onde: HANDOFF.md:91-92 + server.ts (rotas legadas sem auth)

Impacto: Multa ANPD: até 2% do faturamento, limitado a R$50M por infração. Danos à imagem irreparáveis. Responsabilidade civil.

✅ Correção: Auditoria urgente: grep 'app.get\|app.post\|app.put\|app.delete' server.ts. Para cada rota sem verifyAuth, adicionar: const user = await verifyAuth(req); if (!user) return res.status(401).json({error:'Unauthorized'});
Sem DPO (Encarregado de Proteção de Dados) nomeadoCríticaBloqueanteEsforço baixoLGPD Art.41 / Obrigação Legal

O que é: LGPD Art.41 exige nomeação de Encarregado para controladores que processam dados sensíveis (saúde = sensível). Não há menção de DPO no produto, landing page ou políticas.

Onde: index.html (ausência de referência a DPO) + site (ausência de página de privacidade)

Impacto: Irregularidade direta com a ANPD. Em caso de incidente, ausência de DPO agrava penalidade.

✅ Correção: Nomear DPO (pode ser o próprio fundador inicialmente). Publicar nome e contato no site (requisito legal). Registrar no formulário ANPD.
Prontuário sem assinatura digital ICP-BrasilAltaEsforço altoCFM Resolução 1.821/2007 / Prontuário Eletrônico

O que é: ConsultationPage.tsx tem status draft/finalized/amended e adendos (types.ts:165-170) — correto. Mas a Resolução CFM 1.821/2007 exige certificação digital ICP-Brasil para prontuários eletrônicos que dispensem a versão em papel.

Onde: src/types.ts:165-170 + src/pages/ConsultationPage.tsx

Impacto: Prontuário digital sem assinatura ICP-Brasil pode não ter validade jurídica plena. Risco em processos éticos no CFM.

✅ Correção: Integrar provedor de assinatura digital ICP-Brasil (ex: Certisign, D4Sign) para finalização de consultas. Ou manter backup em papel até implementar.
audit_logs sem implementação — rastreabilidade de acesso inexistenteAltaEsforço medioLGPD Art.37 / Registro de Atividades

O que é: HANDOFF.md:46: 'audit_logs: investigado — nenhum código escreve nele; é só regra órfã no firestore.rules.' Sem trilha de auditoria de quem acessou quais dados de pacientes. LGPD Art.37 exige registros de operações de tratamento.

Onde: HANDOFF.md:46

Impacto: Impossível responder a investigação da ANPD ou do paciente sobre 'quem acessou meus dados'. Sem evidência de controle.

✅ Correção: Implementar tabela audit_log no Prisma: {id, userId, tenantId, action, resource, resourceId, ip, timestamp}. Inserir em todas as rotas que acessam dados de pacientes.
Sem Política de Privacidade específica para dados de saúdeAltaEsforço medioLGPD Art.9 / Transparência

O que é: index.html e LandingPage.tsx não incluem link para Política de Privacidade específica para dados de saúde. LGPD Art.9 exige informar categorias de dados, finalidade, prazo de retenção, compartilhamento.

Onde: index.html + src/pages/LandingPage.tsx

Impacto: Não conformidade legal desde o início. Usuários não têm base para dar consentimento informado.

✅ Correção: Criar /privacidade com: dados coletados (incluindo dados de saúde = categoria especial), finalidade, prazo retenção, DPO, como exercer direitos LGPD. Exigir aceite no cadastro.

📋 Plano de Ação

Cronograma de implementação recomendado.

1

Auth em todas as rotas (1 dia) — URGENTE LGPD

Auditoria completa de rotas sem verifyAuth + correção imediata
lgpd
1 dia · CRÍTICO
2

Nomear DPO (1h)

Designar fundador como DPO interino. Publicar contato no site. Registrar na ANPD.
lgpd
1h · CRÍTICO
3

Política de Privacidade de saúde (3 dias)

Redigir política específica para dados sensíveis de saúde. Adicionar aceite no cadastro.
lgpd
3 dias · CRÍTICO
4

Audit log table (1 semana)

Prisma model AuditLog + insert em rotas de paciente/consulta/exame
compliance
1 semana
5

Assinatura digital prontuário (longo prazo)

Integrar D4Sign ou Certisign para finalizações de consulta
cfm
1-2 meses

Matriz de Decisão

CritérioFonteStatusBloqueante
LGPD Art.46 (segurança)cs-quality-regulatoryRotas sem auth — violação diretaSIM
DPO Nomeado (Art.41)cs-quality-regulatoryAusenteSIM
Política de Privacidadecs-quality-regulatoryAusente para dados de saúdenão
Audit Trailcs-quality-regulatoryaudit_logs sem implementaçãonão
CFM Prontuáriocs-quality-regulatoryStatus/adendo OK, sem assinatura ICPnão