Malware Android automotivo: como BADBOX explora TWCore

Malware Android automotivo: como BADBOX explora TWCore

Quando li a notícia sobre malware Android infectando rádios automóveis, a primeira coisa que pensei foi: “finalmente alguém olhou para isso com seriedade”. Segundo o Sapo.pt, pesquisadores da Kaspersky confirmaram a primeira campanha de malware desenhada especificamente para atacar unidades centrais de infoentretenimento veiculares. Não é ataque conceitual, não é proof-of-concept de Black Hat. É malware em produção, operando em campo, transformando carros em nós de uma botnet ligada ao ecossistema BADBOX. E o vetor de ataque é, ironicamente, um componente legítimo de telemetria chamado TWCore, embutido em software da DoFun. Isso muda completamente a forma como devs e arquitetos de sistemas embarcados precisam pensar segurança automotiva.

Por que isso não é “só mais um malware IoT”

Na minha experiência lidando com sistemas embarcados e desenvolvimento Android, vejo muita gente tratar segurança automotiva como sinônimo de “segurança do CAN bus”. É um erro. O CAN bus é apenas uma camada. O verdadeiro problema mora nas camadas superiores — exatamente onde este malware atua.

O ataque documentado não tenta desligar travões ou trancar portas remotamente (pelo menos não nesse estágio). O objetivo é mais sutil e financeiramente mais interessante: sequestrar poder computacional, banda e, potencialmente, dados do usuário para construir uma rede zombie. Pense no que isso significa em escala: existem milhões de rádios universais Android no mercado de pós-venda. Cada carro infectado é um nó persistente, ligado à bateria do veículo, com conectividade 4G/5G constante. Isso é infraestrutura de botnet de altíssimo valor para quem opera esquemas de proxy residencial, cryptojacking ou campanhas de adware.

O detalhe técnico mais importante está no TWCore. Segundo a investigação da Kaspersky, este componente é uma ferramenta legítima do sistema usada para telemetria e gestão de atualizações OTA (over-the-air). Atacantes enviaram instruções remotas para este componente, que descarregou ficheiros maliciosos sem pedir permissões nem alertar o utilizador. Isso é devastador do ponto de vista de arquitetura: a falha não está num bug tradicional, mas no modelo de confiança do componente.

Anatomia técnica do ataque: o que devs precisam entender

Para quem programa em Android há algum tempo, o padrão é familiar. O TWCore funciona essencialmente como um update agent com privilégios elevados. Ele tem permissão para escrever em partições do sistema, instalar APKs e se comunicar com servidores remotos. Quando esse tipo de componente aceita comandos sem validação adequada de origem, vira uma backdoor involuntária.

Observem a estrutura lógica do problema — não estou compartilhando o malware real, apenas o padrão arquitetural que permite esse tipo de abuso:

// Pseudocódigo do padrão vulnerável típico em update agents
class TelemetryUpdateService : Service() {
    private val remoteControl = RemoteCommandReceiver()
    
    override fun onStartCommand(intent: Intent?, flags: Int, startId: Int): Int {
        remoteControl.registerHandler("download_module") { params ->
            // ⚠️ Problema crítico: aceita qualquer URL sem validar origem
            val downloadUrl = params.getString("url")
            val targetPath = params.getString("path") ?: "/data/local/tmp/update.bin"
            
            // Nenhuma verificação de assinatura
            // Nenhuma validação de origem
            // Nenhum prompt ao usuário
            executeSilentDownload(downloadUrl, targetPath)
        }
        return START_STICKY
    }
}

O que falta nesse padrão? Tudo que importa em segurança: autenticação mútua, validação criptográfica do comando, sandboxing rigoroso, e logs auditáveis. Quando o seu “update agent” aceita comandos de qualquer origem via internet, ele deixou de ser update agent — virou um C2 (command and control) client disfarçado.

Na Prática: como auditar se seu projeto embarcado tem o mesmo problema

Quando pego um projeto Android embarcado para revisão de segurança, sigo um checklist mental que raramente falha em encontrar vulnerabilidades. Vou compartilhar com você:

  1. Mapeie todos os componentes com privilégios elevados. Liste serviços, broadcast receivers e content providers que rodam com permissões de sistema ou signature-level. No caso automotivo, isso inclui módulos de telemetria, update agents e diagnósticos OBD.
  2. Identifique pontos de entrada remota. Procure por endpoints HTTP/HTTPS, listeners MQTT, intents implícitos expostos e sockets abertos. Para cada um, pergunte: “quem pode enviar dados aqui e como eu validei isso?”.
  3. Analise o fluxo de execução de comandos. Trace o caminho de uma instrução vinda da rede até uma ação local. Existe validação criptográfica? Assinatura? Whitelist de comandos?
  4. Verifique persistência e privilégios. O componente roda como system UID? Tem permissão INSTALL_PACKAGES? WRITE_EXTERNAL_STORAGE em partições críticas? Cada permissão elevada é um vetor potencial.
  5. Teste com fuzzing de comandos. Envie comandos malformados, URLs inesperados, payloads grandes. Sistemas maduros rejeitam entradas inválidas com logs claros, não travam silenciosamente.

Na minha experiência, o erro mais comum que vejo em sistemas embarcados Android é tratar o componente de update como “confiável por design”. O time foca em validar a assinatura do APK final, mas esquece que o canal de comando em si precisa de autenticação forte.

Erros Comuns que devs cometem em segurança automotiva

Vou listar os erros que mais vejo em code reviews e auditorias de sistemas embarcados Android. Reconheço que já cometi pelo menos dois desses em projetos passados:

  • Confiar no “arcanite” do OEM. Se você está desenvolvendo um app que roda num head unit de terceiros, assumir que “o fabricante cuida da segurança” é suicídio técnico. O incidente DoFun mostra exatamente o contrário — o fabricante embutiu uma backdoor funcional.
  • Hardcode de endpoints e chaves. Já vi projetos com AWS keys e URLs de API hardcoded no APK. Em head units, isso é especialmente grave porque o dispositivo é distribuído em escala e qualquer extração do APK vaza credenciais para toda a frota.
  • Logs excessivos em produção. Head units frequentemente rodam builds de debug em campo por anos. Logs com tokens, VIN numbers, coordenadas GPS e dados de telemetria viram mina de ouro para atacantes.
  • Ignorar a cadeia de supply chain. Seu código pode ser impecável, mas se você depende de uma biblioteca de terceiros (como TWCore) que aceita comandos arbitrários, a segurança do seu sistema depende da segurança dessa biblioteca. Isso é exatamente o que aconteceu aqui.
  • Não testar em modo offline. Sistemas automotivos frequentemente operam em garagens subterrâneas, túneis e áreas sem sinal. Se sua lógica de segurança depende de validação online constante, o sistema falha nos piores momentos.

O contexto maior: BADBOX e o ecossistema de malware IoT

O ataque foi associado aos operadores da rede BADBOX, que antes focavam em smart TVs e boxes de streaming de baixo custo. Isso revela um padrão importante: malware IoT segue uma lógica de mercado. Atacantes miram dispositivos que oferecem melhor relação custo-benefício entre infecção e retorno.

Head units Android de pós-venda são o alvo perfeito: são baratos (motivando fabricantes a cortar custos em segurança), amplamente distribuídos (base instalada enorme), persistentemente online (conectados à bateria do carro), e raramente atualizados pelo usuário final (a maioria das pessoas nunca atualiza o rádio do carro após a instalação).

Comparando com outras campanhas IoT maliciosas que vi nos últimos anos — Mirai, Mozi, Meris — o padrão BADBOX é diferente porque opera como residential proxy network. Não é DDoS puro, é monetização de banda e tráfego. E head units automotivos entregam banda residencial “limpa” do ponto de vista de reputação, com IP residencial estável.

FAQ — Perguntas que devs realmente fazem

Como um carro infectado pode ser detectado pelo usuário?

Sinais comuns incluem consumo anômalo de dados móveis, drenagem de bateria quando o carro está estacionado, lentidão no sistema multimédia, comportamento estranho de apps de navegação e aquecimentos incomuns do head unit. Mas o ponto crítico é: a maioria dos usuários não monitora nada disso.

Esse tipo de malware afeta carros com Android Auto?

Não diretamente. Android Auto é um protocolo de projeção de tela que roda no smartphone — o head unit funciona apenas como display. O risco existe nos head units que rodam Android Automotive OS (sistema operacional completo no carro) ou rádios universais Android aftermarket, que é exatamente o caso DoFun.

Existe forma de mitigar isso sem trocar o rádio?

Para desenvolvedores e usuários avançados: instalar firewall de sistema (como AFWall+), bloquear tráfego de domínios desconhecidos via DNS personalizado (NextDNS, Pi-hole em hotspot), e — mais importante — verificar periodicamente se há APKs suspeitos instalados. Para usuários comuns: a única solução real é substituir o equipamento por um de fabricante com track record de atualizações de segurança.

Por que a Google não pega esses APKs maliciosos na Play Store?

Porque esses APKs não estão na Play Store. São distribuídos via firmware dos próprios head units, pré-instalados de fábrica em dispositivos de baixa qualidade. O modelo de segurança do Google funciona para apps distribuídos pelo canal oficial — para firmware de terceiros, a responsabilidade é do fabricante, e é exatamente aí que DoFun falhou.

Qual a implicação para desenvolvedores de apps automotivos?

Se você está construindo apps que rodam em head units Android, precisa assumir que o ambiente pode estar comprometido. Isso significa: nunca armazene credenciais sensíveis em SharedPreferences sem criptografia, valide integridade do ambiente antes de executar lógica crítica, e implemente attestation via SafetyNet/Play Integrity quando possível.

Gostou? Me segue no GitHub e deixa um comentário se tiver dúvida ou quiser aprofundar algum ponto.

Y

Yuri Sousa

Front-End Developer / Designer

Desenvolvedor apaixonado por criar experiências digitais acessíveis e visualmente perfeitas. Escrevo sobre desenvolvimento web, design e tecnologia.