Segurança no Termalin
O Termalin é um cliente SSH: ele guarda as credenciais mais sensíveis que você tem. Esta página explica — sem rodeios — o que nossos servidores guardam, o que eles nunca conseguem ler e por que você não precisa confiar muito neles.
Criptografia de ponta a ponta, na prática
Tudo o que importa é criptografado no seu dispositivo antes de ser enviado a qualquer lugar, com uma chave derivada da sua senha mestra (PBKDF2-HMAC-SHA256, 600.000 iterações → AES-256-GCM). A senha mestra nunca sai do seu dispositivo. Não conseguimos ler seus dados e não conseguimos redefini-la para você — isso é por design, não um bug. A sua garantia fica com você: defina um código de recuperação opcional e você consegue voltar a entrar se um dia esquecer a senha; pule essa etapa, e uma senha esquecida significa que os dados se foram. De um jeito ou de outro, o poder de recuperar fica com você, nunca conosco.
O que nossos servidores veem
| Dado | O servidor consegue ler? |
|---|---|
| Seus hosts, chaves SSH, senhas, snippets (sincronização) | Não — apenas um blob criptografado |
| Gravações de sessões de terminal (conteúdo) | Não — apenas um blob criptografado |
| Sua senha mestra | Nunca enviada |
| E-mail e senha da conta | E-mail, sim; a senha é guardada como um hash Argon2 |
| Título da gravação e rótulo do host | Não — criptografados com sua senha mestra, como a gravação |
| Metadados da gravação (duração, tamanho, se um agente de IA agiu) | Sim — usados para listas e cotas |
| Plano da assinatura, nomes de dispositivos, carimbos de data/hora | Sim |
| Sessões do terminal web (o painel web) | Passam pelo nosso servidor enquanto estão ativas; não são armazenadas. O host, a porta e o nome de usuário são registrados |
| Comandos que apps de IA executam pelo endpoint MCP hospedado | Sim — o texto do comando fica no seu registro de atividade; a saída só é guardada se você ativar isso, criptografada com uma chave que só você tem |
| Métricas e alertas de servidores com Connector | Sim — necessários para desenhar os gráficos e disparar os alertas (veja a política de privacidade, em inglês) |
| Sal de derivação de chave | Sim — um sal não é segredo; ele permite que o painel web derive sua chave no seu navegador |
As atualizações não podem ser forjadas
As atualizações automáticas são assinadas com uma chave Ed25519 off-line; a chave pública correspondente vem embutida no app. Antes de instalar qualquer coisa, o app verifica a assinatura do manifesto da versão e o SHA-256 do instalador em relação a ela. Nosso próprio servidor não é uma parte confiável aqui: mesmo um servidor de atualizações totalmente comprometido (ou um redirecionamento de DNS/hosts) pode reter atualizações — mas não consegue injetar nenhuma.
O app autentica o servidor, não só o TLS
Antes de enviar as credenciais da sua conta a qualquer lugar, o app desafia o servidor com
um nonce aleatório; o servidor precisa assiná-lo com sua chave de identidade, verificada contra uma
chave pública embutida no app. Um backend falso — alcançado por um arquivo hosts
ou um redirecionamento de DNS, ou uma máquina configurada para confiar num certificado TLS extra — não
consegue produzir essa assinatura, então nunca vê sua senha.
Nenhum segredo no binário
O app de desktop embute apenas chaves públicas. Inspecionar os arquivos do app não revela nada aproveitável. Tudo o que é pago é controlado no lado do servidor.
O painel web, com honestidade
O painel web descriptografa as gravações no seu navegador com sua senha mestra — a senha nunca sai da página. A ressalva honesta que todo produto web com E2E compartilha: o servidor entrega o código daquela página, então um servidor comprometido poderia servir uma página modificada. O app de desktop, com suas atualizações assinadas, continua sendo o caminho de maior confiança; o painel web é pela conveniência.
Na sua máquina
- As chaves de host SSH são fixadas no primeiro uso (TOFU) em
~/.termalin/known_hosts. - Sua conta termal.in oferece autenticação de dois fatores (TOTP com códigos de backup) e passkeys — o app de desktop pode entrar pelo navegador, então a senha nunca toca o app.
- As gravações guardam a saída do terminal e marcadores de eventos — nunca as teclas em si.
Uma senha digitada num prompt oculto (
sudoe afins) nunca aparece na tela, então nunca vai parar numa gravação; tudo o que o terminal exibe faz parte da fita. - “Lembrar senha mestra” (opcional, desativado por padrão) é protegido pelo keystore do seu sistema operacional — Windows DPAPI, o Keychain do macOS ou o Secret Service do Linux — vinculado ao seu usuário do sistema.
Infraestrutura
O backend roda em Docker atrás da Cloudflare, com TLS 1.2+ (certificados Let's Encrypt). O banco de dados só é acessível pelo localhost do host — nunca exposto à internet — e os backups são criptografados. Coletamos o mínimo possível: sem SDKs de analytics, sem rastreadores de anúncios, e não vendemos dados.
Conformidade e roadmap
Preferimos dizer exatamente onde estamos a insinuar mais do que fizemos:
| Área | Status |
|---|---|
| Cofres AES-256-GCM, PBKDF2-HMAC-SHA256, atualizações assinadas com Ed25519 | Entregue |
| Minimização de dados + exclusão completa de conta/dados sob solicitação (postura GDPR) | Entregue |
| Teste de intrusão independente por terceiros | Planejado antes do GA |
| SOC 2 | No roadmap — pergunte em que pé está |
Reportar uma vulnerabilidade
Escreva para security@termal.in (veja nosso security.txt) com o que você encontrou, como reproduzir e qual acha que é o impacto. Confirmamos o recebimento em até 3 dias úteis e dizemos o que decidimos — inclusive quando decidimos que não é um problema, e por quê.
Por favor, teste apenas na sua própria conta, pare ao comprovar a falha (sem exfiltração de dados, sem persistência, sem negação de serviço, sem dados de terceiros ou de usuários) e nos dê um prazo razoável antes de publicar. Fique dentro desses limites e não vamos persegui-lo por isso.
Não pagamos recompensas por bugs. O Termalin é um projeto pequeno e ainda sem receita, e não há orçamento para recompensas; preferimos dizer isso de cara a deixar alguém passar um fim de semana trabalhando por nada. O que oferecemos: crédito nos agradecimentos do nosso security.txt sob o nome e o link que você escolher, uma referência por escrito descrevendo seu relato e uma licença Pro por alguns meses. Se a descoberta for séria, também avisamos quando a correção for lançada.
Agradecimentos
Nossos agradecimentos aos pesquisadores que relataram falhas de forma responsável e nos ajudaram a tornar o Termalin mais seguro:
- MD Rabbi Hossain — reforço do registro de clientes OAuth no fluxo de autorização do MCP (set. 2026).