"Claro, o Firebase foi (parcialmente) o culpado"
- Foi constatado que, durante o processo de download do instalador do editor de IA Cursor, havia uma tentativa de conexão com o ToDesktop por meio do firewall Lulu
- ToDesktop é um serviço que fornece empacotamento de apps Electron, SDK, atualizações etc.
- Após confirmar que o app usava Firestore, foi iniciada uma investigação básica sobre o Firebase por meio das ferramentas de desenvolvedor
- Firebase: plataforma de backend para apps fornecida pelo Google, que oferece armazenamento e processamento de dados no lado do cliente por meio do banco de dados NoSQL Firestore
- Usando as ferramentas de desenvolvedor (DevTools) e sourcemaps, foram analisadas as coleções usadas no Firestore
- Foi encontrada uma coleção chamada
temporaryApplications, mas ela continha apenas uma lista antiga e não tinha informações sensíveis (não era atualizada desde 2022) - Foi confirmado que a maior parte da lógica principal e das tarefas de deploy era realizada por meio do pacote npm
@todesktop/cli - Como
@todesktop/clitambém tinha sourcemaps, a estrutura do código-fonte original foi identificada com sourcemapper
Analisando o ToDesktop CLI
- O ToDesktop CLI é responsável por funções principais como deploy do app, upload do código-fonte etc.
- Ao analisar os sourcemaps do CLI, foi encontrada uma vulnerabilidade que permitiria abusar da Firebase Cloud Function
getSignedURLpara tentar um upload arbitrário para S3, mas parecia difícil encontrar um caminho de arquivo realmente útil na prática
Sequestrando o pipeline de deploy por meio de um script postinstall
- Objetivo: obter capacidade de execução de código no contêiner (servidor) onde o build é realizado
- Foi inserido um payload de reverse shell no script
postinstalldopackage.json, recebendo a conexão a partir do contêiner de build - O acesso ao interior do contêiner foi obtido com sucesso, permitindo examinar a estrutura do ambiente de build e arquivos importantes
- Foi identificado o arquivo
config.json.encryptede também o método de descriptografia, o que permitiu extrair os segredos reais (config.json) - Além disso, uma chave do Firebase Admin (com permissões amplas) também foi encontrada internamente
Pós-exploração
- Com essa vulnerabilidade, era possível distribuir atualizações arbitrárias de apps, permitindo a execução imediata de código malicioso quando o usuário reiniciasse o app
- De fato, após distribuir uma atualização para um app de teste, foi reproduzido RCE (execução remota de código) no lado do cliente
Impacto
- Como era possível distribuir atualizações maliciosas para todos os apps que usam o ToDesktop, tratava-se de um problema com potencial de afetar milhões de usuários
- Apps mencionados como exemplo:
- ClickUp (https://clickup.com)
- Cursor (https://cursor.com) (agora já migrou para seu próprio sistema de build)
- Linear (https://linear.app)
- Notion Calendar (https://calendar.notion.so)
- Em especial, muitos desses usuários trabalham no setor de TI e tecnologia, o que aumenta o potencial de dano em caso de ataque
The fix
- Após o reporte, houve contato imediato com a equipe do ToDesktop para conduzir o processo de correção
- O ToDesktop corrigiu o problema rapidamente e ainda ofereceu uma recompensa adicional
- A arquitetura foi alterada para que tarefas críticas, como assinatura e upload, sejam executadas em um contêiner sidecar com privilégios separados do contêiner de build
- O relatório oficial do incidente de segurança do ToDesktop pode ser consultado aqui
- Incidentes de segurança podem acontecer em qualquer empresa, mas o importante é a forma de resposta, e o ToDesktop deixou uma impressão positiva ao agir com rapidez e cooperação
Ainda não há comentários.