Capa

Ataque zero-click no WhatsApp iPhone: guia completo para devs

O ataque invisível que está sequestrando contas de WhatsApp no iPhone

Eu acompanho o noticiário de segurança há anos e posso afirmar: o caso reportado pelo Sapo.pt sobre a nova campanha de ataques zero-click contra o WhatsApp no iPhone é um divisor de águas. Não estamos falando daquele phishing óbvio com link estranho. Estamos falando de sequestro silencioso de conta via cadeia de exploits — sem toque, sem clique, sem QR Code. E como programador, isso me obriga a olhar com outros olhos para a forma como a Meta e a Apple protegem (ou falham em proteger) bilhões de dispositivos.

Neste artigo, vou destrinchar a anatomia técnica do ataque, mostrar como verificar se seu dispositivo está vulnerável, discutir o que mudou no modelo de ameaças do iOS e — o mais importante — apontar onde devs mobile e engenheiros de segurança costumam escorregar quando precisam lidar com cadeias de exploits.

A anatomia técnica de um ataque zero-click

Antes de qualquer coisa, vale definir o termo. Um ataque zero-click é aquele em que a vítima não executa nenhuma ação. O exploit roda inteiramente no lado do receptor, geralmente explorando parsers de mensagens, decoders de mídia ou serviços em background que processam dados antes que o usuário veja qualquer coisa.

O caso que o Sapo.pt descreve combina duas falhas em cadeia:

  • Uma vulnerabilidade em versões do iOS anteriores à build 16.7.12 — provavelmente envolvendo o IMTransferAgent, o bluetoothd ou o pipeline do iMessage (similar à família de CVEs que viabilizaram o Pegasus da NSO Group).
  • Uma brecha na aplicação oficial do WhatsApp para iPhone — quase sempre no processamento de payloads malformados via notificações push silenciosas ou no WebRTC embutido no app.

Encadeadas, essas duas falhas permitem execução remota de código (RCE) no contexto do WhatsApp. O invasor consegue ler memória do processo, extrair tokens de sessão e, na prática, assumir a conta sem disparar nenhum alerta visível.

Esse modelo de ataque — conhecido como exploit chain — não é novidade. Ele é a base do mercado de spyware comercial (NSO, Cytrox, Intellexa). A novidade aqui é a escala: o incidente migrou da Itália para a Península Ibérica em ritmo acelerado, sugerindo operação automatizada, não ataque manual direcionado.

Por que o iOS continua sendo um alvo rentável

Muita gente me pergunta: "Yuri, mas o iOS não é supostamente seguro?". A resposta curta é: o iOS é seguro no modelo de ameaças tradicional. O problema é que "seguro" e "inviolável" são coisas muito diferentes.

A Apple construiu três camadas defensivas importantes que vale entender:

  1. Sandboxing rigoroso — cada app roda em seu próprio perfil de entitlement, sem acesso direto ao kernel.
  2. BlastDoor (introduzido no iOS 14) — um sandbox interno dentro do imagent que isola o parsing de mensagens do iMessage.
  3. Pointer Authentication Codes (PAC) e Memory Tagging (MTE no A14+) — mitigações de corrupção de memória a nível de hardware.

O problema é que essas defesas são probabilísticas, não absolutas. Um atacante com budget de oito dígitos consegue comprar ou desenvolver um zero-day que burla todas elas — como aconteceu repetidamente com o Pegasus. E o WhatsApp, por rodar em bilhões de dispositivos com versões de iOS fragmentadas (muitos usuários em iOS 15 ou 16 antigo), é o vetor ideal para monetizar esses exploits em massa.

Quando uso um iPhone em produção — e uso — minha regra é: mantenho o sistema sempre na última versão estável e ativo o Lockdown Mode sempre que manipulo dados sensíveis de cliente. Falarei dele mais adiante.

Na Prática: como verificar se seu dispositivo está exposto

A recomendação oficial é atualizar para a versão mais recente do iOS (≥ 16.7.12). Mas como dev, eu gosto de validar. O script abaixo, em Python, consulta o build atual via o MobileDevice.framework (macOS) ou via API do ideviceinfo (Linux), e dispara um alerta se a versão estiver abaixo do baseline seguro.

#!/usr/bin/env bash
# ios_security_check.sh
# Requer: libimobiledevice instalado (brew install libimobiledevice)

MIN_BUILD="16.7.12"
DEVICE_INFO=$(ideviceinfo -u "$(idevice_id -l | head -n1)" 2>/dev/null)

if [ -z "$DEVICE_INFO" ]; then
  echo "[ERRO] Nenhum iPhone conectado ou libimobiledevice não configurado."
  exit 1
fi

CURRENT_BUILD=$(echo "$DEVICE_INFO" | awk -F': ' '/ProductVersion/ {print $2; exit}')
DEVICE_NAME=$(echo "$DEVICE_INFO" | awk -F': ' '/DeviceName/ {print $2; exit}')

echo "Dispositivo: $DEVICE_NAME"
echo "iOS detectado: $CURRENT_BUILD"
echo "Baseline mínimo seguro: $MIN_BUILD"

if [ "$(printf '%s\n' "$MIN_BUILD" "$CURRENT_BUILD" | sort -V | head -n1)" = "$MIN_BUILD" ]; then
  echo "[OK] Versão dentro do baseline seguro."
else
  echo "[ALERTA] iOS desatualizado. Aplique a atualização imediatamente."
fi

Para devs mobile que querem detectar comportamento anômalo no app do WhatsApp em runtime (útil se você está construindo um fork corporativo ou um MDM), o snippet Swift abaixo monitora chamadas suspeitas ao MessageStore:

import Foundation
import os.log

final class WhatsAppSecurityMonitor {
    private let log = OSLog(subsystem: "com.seuapp.monitor", category: "whatsapp")

    func watchForAnomalies() {
        let center = CFNotificationCenterGetDarwinNotifyCenter()
        let name = "com.apple.MobileSMS.MessageReceived" as CFString

        CFNotificationCenterAddObserver(
            center, Unmanaged.passUnretained(self).toOpaque(),
            { _, _, _, _, _ in
                os_log("Mensagem processada pelo SpringBoard", log: self.log, type: .info)
                // Hook para validar se a mensagem veio de fonte confiável
            },
            name.rawValue, nil, .deliverImmediately
        )
    }
}

Esse é apenas o ponto de partida — em produção, você integraria com uma base de hashes de payloads maliciosos conhecidos e dispararia telemetria para um SIEM.

Erros comuns que devs cometem em segurança mobile

Depois de revisar código de dezenas de times, posso listar os deslizes mais frequentes que amplificam problemas como o ataque em questão:

  • Tratar RCE como "problema do sistema operacional, não meu". Errado. Se seu app processa mídia não confiável, você é parte da cadeia de exploits. O WhatsApp é o exemplo perfeito.
  • Não validar entitlements em runtime. Apps que assumem que certos recursos estão sempre disponíveis (push, clipboard, background fetch) viram vetores quando o sistema é comprometido.
  • Persistir tokens em UserDefaults ou Keychain com flag acessível. Já vi casos em que tokens do WhatsApp Business ficavam em Keychain acessível after first unlock, e qualquer RCE conseguia extrair.
  • Confiar em TLS para esconder payloads maliciosos. O ataque não está no transporte — está no parser. TLS te protege de MITM, não de zero-click.
  • Não implementar rate limiting em endpoints de notificação. Apps que não limitam o flood de push notifications viram amplificadores de ataques.

Quando uso qualquer SDK de mensageria em projeto de cliente, eu sempre faço threat modeling com a equipe antes de escrever a primeira linha. Esse caso da Meta deveria ser leitura obrigatória em qualquer time mobile.

Lockdown Mode: a resposta da Apple que poucos usam

A Apple introduziu o Lockdown Mode no iOS 16 justamente para mitigar esse tipo de ameaça. Ele desativa parsers complexos no iMessage, bloqueia attachments não solicitados, restringe convites FaceTime de desconhecidos e desabilita perfis de configuração.

É desconfortável — você perde algumas funcionalidades — mas, para quem lida com dados sensíveis (jornalistas, devs de cripto, executivos, advogados), é a diferença entre passar ileso e virar manchete.

Para ativar: Ajustes → Privacidade e Segurança → Modo de Bloqueio → Ativar Modo de Bloqueio. Reinicie o dispositivo depois.

O que a Meta precisa melhorar (e minha opinião sincera)

A Meta reage rápido a CVE graves — costuma soltar patch em 7 a 14 dias. Mas a arquitetura do WhatsApp tem decisões questionáveis do ponto de vista de segurança:

  • Backup em nuvem sem E2EE (até 2023) — resolvido parcialmente, mas a confiança foi quebrada.
  • Sincronização multi-device com tokens de longa duração — um vetor que amplifica qualquer RCE.
  • Falta de attestation do client — não há equivalente ao App Attest da Apple para garantir integridade do binário em execução.

Eu já critiquei isso em outros artigos: o WhatsApp priorizou UX sobre segurança por anos. A integração com Apple Pay e o suporte a multi-device mostram que o produto evoluiu, mas a base ainda é frágil.

FAQ — Perguntas que devs reais me fazem

Esse ataque funciona em Android?
O caso reportado é específico para iPhone por causa da cadeia de exploits no iOS 16.7.12 e no app do WhatsApp para iOS. Android tem modelo de ameaças completamente diferente e cadeia de exploits distinta, mas não está imune a campanhas similares.

Como sei se já fui comprometido?
Verifique em WhatsApp → Configurações → Aparelhos conectados. Se aparecer algum dispositivo desconhecido, revogue imediatamente. Habilite a verificação em duas etapas (PIN de 6 dígitos). E atualize o iOS hoje.

O Lockdown Mode quebra o WhatsApp?
Não. Mensagens e chamadas funcionam normalmente. O que você perde é o preview automático de links e o bloqueio de attachments de contatos desconhecidos — o que, ironicamente, é exatamente a superfície que ataques como esse exploram.

Vale a pena pagar por ferramentas como iVerify ou Guardian Firewall?
Para devs e profissionais de segurança, sim. Eles fazem checagens de baseline que o iOS nativamente não expõe — como verificar se o secure enclave está em estado íntegro ou se há perfis MDM suspeitos instalados.

Esse exploit é caro? Está disponível para qualquer um?
Provavelmente não. Uma cadeia de exploits para iOS + WhatsApp com essa capacidade custa entre US$ 1 e US$ 5 milhões no mercado cinza (Pre0Labs, Crowdfense, etc.). Mas o fato de estar sendo usada em massa na Europa sugere que foi comprada por um ator estatal ou grupo cibercriminoso com alto orçamento.

Checklist rápido antes de fechar este artigo

  1. Atualize o iPhone para a versão mais recente hoje.
  2. Ative a verificação em duas etapas no WhatsApp.
  3. Revise "Aparelhos conectados" e remova o que não reconhecer.
  4. Considere seriamente ativar o Lockdown Mode se você é alvo provável.
  5. Se for dev mobile: revise os parsers do seu app. Sempre.

Eu acompanho casos assim porque cada campanha massiva deixa rastro técnico valioso para quem constrói software. Não ignore. A próxima vítima pode ser seu cliente.

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.