GBR: ADR-0003 Arquitetura 'Shadow Token' para Interoperabilidade com Sistemas Legados | Wiki
GBR: ADR-0003 Arquitetura "Shadow Token" para Interoperabilidade com Sistemas Legados
- *Status:* Proposto -> (Aceito)
- *Data:* 2026-05-12
*Contexto:*
A matemática ZCAP-LD é invisível para bancos de dados antigos e diretórios corporativos (LDAP/Active Directory), que operam com sessões estatais ou tokens legados. O GleamBR/Monitor v2.0 precisa consultar o banco de dados do cliente sem quebrar a postura Zero-Trust.
O sistema deve falar com o "mundo sujo" (Legacy). O Agente de borda torna-se um alvo (HVT) pois guarda segredos corporativos (senhas de banco) na RAM.
*Decisão:*
O Agente atua como *Tradutor & Validador Semântico. Os segredos são isolados em *Enclaves Rust (NIF Resources)**. Utilizamos mlock() para impedir Swap em disco e Opaque Types no Gleam para impedir vazamento em logs (Fator Humano).
- *Enclave Tradutor:* O Agente de borda (Monitor v2.0) atuará como um "Tradutor Juramentado". Ele recebe o ZCAP-LD, valida a sua integridade e escopo.
- *Credenciais JIT (Just-In-Time):* Após validação do ZCAP-LD, o Agente utilizará credenciais de serviço armazenadas em um estado opaco (isolado na BEAM) para solicitar um token de sessão curto ou realizar a query direta no sistema legado (ex: conexão JDBC ou proxy reverso).
- *Blindagem do Segredo:* Sob nenhuma circunstância as credenciais corporativas legadas ou os tokens emitidos por elas viajarão pela malha P2P Yamux. Elas nunca abandonam a memória RAM do Agente de borda no cliente.
*Consequências:*
- *Positivas:* Viabiliza a venda do produto GleamBR/Monitor v2.0 para grandes empresas sem necessidade de reescrita da sua infraestrutura; protege a rede P2P da contaminação com arquiteturas legadas.
- *Positivas:* Interoperabilidade segura com sistemas legados. Proteção contra memory dumps e erros de desenvolvedores juniores.
- Negativas: O Agente de borda torna-se um alvo de alto valor (HVT - High Value Target) para atacantes locais buscando extrair o estado opaco da memória. (Mitigado)
Análise da Negativa
Quando o Agente atua como "Tradutor Juramentado", ele se torna o guardião do segredo corporativo. Vamos dissecar as entranhas deste risco, entender como um atacante pensa e construir a blindagem necessária para mitigá-lo de forma implacável.
1. A Autópsia da Ameaça: Por que o Agente é um "HVT" (High-Value Target)?
No mundo ZCAP-LD, se um atacante roubar uma mensagem, ele só vê matemática inútil. Mas para o Agente GleamBR/Monitor v2.0 "traduzir" essa matemática e abrir uma conexão JDBC com o banco Oracle do cliente, ele *precisa ter a senha do banco de dados na sua memória (RAM)*.
Se um atacante interno (um funcionário mal-intencionado ou um malware no servidor) focar os ataques na máquina onde o Monitor v2.0 roda, ele tentará extrair esse segredo de três formas:
Vetor 1: O "Memory Dump" (Extração de RAM)
O atacante com privilégios de root (ou explorando uma vulnerabilidade do SO) usa ferramentas para ler a memória física do processo (/proc/kcore no Linux) e extrair a string da senha em texto plano.
Vetor 2: O Calcanhar da Erlang VM (erl_crash.dump)
A BEAM (nossa Erlang VM) é famosa pelo "Let it Crash". Quando um nó sofre um pânico irreversível, ele gera um arquivo de texto gigante chamado erl_crash.dump. Este arquivo contém *o estado de todos os processos no momento do crash*. Se a senha do banco estava no estado do Ator OTP, ela é gravada em texto plano no disco.
Vetor 3: Paging / Swap File
Se o servidor estiver sem memória, o Linux pega páginas da RAM (que podem conter a nossa senha) e as escreve no disco (Swap). Um atacante que roubar o disco rígido, mesmo com a máquina desligada, pode ler o arquivo de paginação e encontrar a senha.
2. A Blindagem de Titânio: Estratégias de Mitigação
Nós não podemos eliminar o risco totalmente (pois o legado exige o segredo), mas podemos torná-lo tão difícil e restrito que o custo do ataque supere o valor do dado. Aplicaremos *Defesa em Profundidade*:
Nível 1: Mitigação Específica da BEAM (Software)
-
*Ofuscação de Estado OTP:* No Gleam/Erlang, não guardaremos a credencial como uma
Stringsimples no estado do Ator. Vamos customizar a funçãoformat_statusdo comportamento OTP (via FFI Erlang) para que, caso o estado seja inspecionado ou ocorra um crash, a credencial seja substituída pela string[REDACTED]. -
*Desativação de Crash Dumps Completos:* O Monitor v2.0 em produção será configurado via variáveis de ambiente (
ERL_CRASH_DUMP_BYTES=0) para nunca escrever dados de memória em disco durante uma falha crítica.
Nível 2: Mitigação Criptográfica via Rustler (Memória Segura)
-
**Uso de
mlock():** O segredo legado não ficará na memória gerenciada pelo Garbage Collector da BEAM. Ele viverá dentro de um Enclave no nossogbr_crypto(NIF em Rust). O código Rust usará bibliotecas comosecrecye a chamada de sistemamlock()para "trancar" essa região da memória, proibindo o Sistema Operacional de movê-la para o Swap (disco). - *Zeroization (Expurgo Automático):* Quando o ZCAP-LD expirar ou a tarefa BPMN terminar, o NIF Rust sobrescreve a região da memória com zeros de forma determinística antes de liberá-la.
Nível 3: A Solução de Classe Enterprise (Dynamic Secrets)
Se o cliente for uma grande corporação (banco/governo), o Agente Monitor *não guardará a senha real do banco de dados*.
- Ele será integrado a um cofre de segredos como o *HashiCorp Vault*.
- O Agente usa o ZCAP-LD para pedir ao Vault: "Me dê uma senha para o Banco X que dure apenas 5 minutos".
- Mesmo que o atacante consiga fazer o memory dump do Agente e roubar a credencial, quando ele for usá-la, ela já terá expirado.
3. Veredito para o ADR
O risco é alto, mas as mitigações que a combinação *Gleam (OTP) + Rust (NIFs)* nos proporciona são de padrão militar.
*Atualização do Status do Risco no ADR:*
- *Negativa Original:* "O Agente de borda torna-se um alvo de alto valor (HVT)…"
- *Tratamento do Risco:* *MITIGADO (Risco residual aceito).*
-
*Medidas Incorporadas:*
1. Credenciais residem estritamente em Enclaves Rust com proteção anti-swap (
mlock). 2. Implementação deformat_statusno OTP para ocultação em logs e Crash Dumps desativados. 3. Adoção prioritária de credenciais efêmeras (Just-In-Time) gerenciadas via Cofres Externos (Vault) em ambientes de missão crítica.