【Aviso importante】Após fazer engenharia reversa do app de entrada por voz “Typeless”, encontrei riscos de privacidade bastante graves e compartilho aqui.
■ Conclusão primeiro
O Typeless afirma “On-device history” e “Zero data retention”, mas, na prática, todos os dados de áudio são enviados para servidores da AWS (Ohio, EUA) para processamento. Não há absolutamente nenhum modelo local de reconhecimento de voz.
Se fosse só isso, seria apenas um “serviço de STT na nuvem” comum. O problema é que o escopo de dados não relacionados a áudio que ele coleta é muito amplo.
■ Que análises foram feitas
No macOS, fiz análise binária, análise de comunicações de rede, análise do DB local e análise de strings das bibliotecas nativas do Typeless v0.9.3.
■ Fatos já confirmados
- Processamento de áudio 100% na nuvem
No app não há modelos de STT como o Whisper. O áudio, após ser comprimido para Opus, é enviado em tempo real via WebSocket (wss://api.typeless.com/ws/rt_voice_flow) para servidores da AWS us-east-2.
http://api.typeless.com → http://prod-typeless-lb-565501648.us-east-2.elb.amazonaws.com
A política de privacidade oficial também diz “processed in real time on our cloud servers”, então não é uma falsidade completa, mas no marketing a expressão “On-device” se limita a “o histórico é armazenado localmente”, o que é muito fácil de interpretar mal.
- Além do áudio, também coleta uma ampla gama de dados
Por meio do banco SQLite local e da análise das bibliotecas nativas, foi confirmado que os seguintes dados são coletados:
・ URL completa dos sites sendo navegados (Gmail, Google Docs etc. também são registrados)
・ Nome do app em foco no momento e título da janela
・ Texto na tela (função collectVisibleTexts que coleta recursivamente via API de Acessibilidade)
・ Leitura e escrita da área de transferência (pode lidar com TransientType de gerenciadores de senha)
・ Monitoramento de entrada de teclado em nível de sistema via CGEventTap
・ Informações de elementos DOM do navegador (suporta Safari, Chrome, Edge, Firefox, Brave)
・ Conteúdo de texto editado pelo usuário (TrackEditTextService → sendTrackResultToServer)
-
O DB local armazena informações pessoais em texto claro
Emtypeless.db, o texto do resultado do reconhecimento de voz, URLs navegadas e informações de apps são salvos em texto claro. Embora afirme “Zero data retention”, localmente tudo é retido. Arquivos de áudio (.ogg) também não são apagados e ficam residuais. -
Solicitação de permissões excessiva
Como ferramenta de entrada por voz, além do microfone também solicita gravação de tela, câmera, Bluetooth e permissões de Acessibilidade, e ainda inclui funcionalidade de captura de tela. -
Transparência da empresa é praticamente zero
・ Termos e política de privacidade não indicam o nome da pessoa jurídica
・ Localização apenas como “Condado de San Francisco, Califórnia” (jurisdição nos termos)
・ WHOIS oculto (GoDaddy + Cloudflare)
・ Não há informações de auditorias de segurança como SOC2, ISO27001 etc.
・ O único contato éhello@typeless.com
■ Evidências técnicas (reproduzível)
Você pode verificar com os comandos abaixo:
# Destino de comunicação de rede
nslookup http://api.typeless.com
# URL da API dentro do app.asar
strings /Applications/Typeless.app/Contents/Resources/app.asar | grep "http://api.typeless.com"
# Protocolo de comunicação WebSocket
strings /Applications/Typeless.app/Contents/Resources/app.asar | grep "rt_voice_flow"
# Biblioteca nativa de monitoramento de teclado
strings /Applications/Typeless.app/Contents/Resources/lib/keyboard-helper/build/libKeyboardHelper.dylib | grep -i "key pressed"
# Coleta de texto na tela
strings /Applications/Typeless.app/Contents/Resources/lib/context-helper/build/libContextHelper.dylib | grep -i "collectVisibleTexts"
# Conteúdo do DB local
sqlite3 ~/Library/Application\ Support/Typeless/typeless.db ".schema history"
■ Onde está o problema
CGEventTap (monitoramento de teclado) + API de Acessibilidade (coleta de texto na tela) + acesso à área de transferência. A combinação desses três, tecnicamente, tem capacidade equivalente à de um keylogger.
E você concedeu essas permissões a um serviço cujo operador é desconhecido.
Para melhorar a precisão da entrada por voz, obter contexto (informações do app/campo de entrada atual) é um design em si razoável. Mas quando esses dados são enviados para a nuvem, a confiabilidade do operador e o seu sistema de segurança tornam-se cruciais. Se é possível confiar em uma empresa que nem sequer divulga o nome da pessoa jurídica, julgue por conta própria.
■ Alternativas
Existem ferramentas de entrada por voz que rodam totalmente localmente:
・ Whisper.cpp / MLX Whisper (open source, totalmente local, gratuito)
・ Entrada por voz nativa do macOS (em Apple Silicon, processamento no dispositivo)
・ Superwhisper (baseado em Whisper, voltado para Mac, mas ainda assim é preciso verificar por conta própria)
■ Resumo
・ O reconhecimento de voz do Typeless é 100% processado na nuvem (sem modelo local)
・ Além do áudio, há base técnica para coletar texto da tela, URL e entrada de teclado
・ Operador pouco transparente (não divulga nome da pessoa jurídica e localização)
・ Sem evidências de auditoria de segurança
Quem estiver usando, por favor decida após compreender os riscos. No mínimo, recomenda-se usar ferramentas como Little Snitch para monitorar a comunicação de rede.