termal.in

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

DadoO 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 mestraNunca enviada
E-mail e senha da contaE-mail, sim; a senha é guardada como um hash Argon2
Título da gravação e rótulo do hostNã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/horaSim
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 hospedadoSim — 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 ConnectorSim — 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 chaveSim — 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 (sudo e 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:

ÁreaStatus
Cofres AES-256-GCM, PBKDF2-HMAC-SHA256, atualizações assinadas com Ed25519Entregue
Minimização de dados + exclusão completa de conta/dados sob solicitação (postura GDPR)Entregue
Teste de intrusão independente por terceirosPlanejado antes do GA
SOC 2No 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).