- Apresentação de um caso em que foi possível transformar um iPhone em um tijolo explorando as características e fragilidades do sistema Darwin Notification
- Essa vulnerabilidade foi registrada como CVE-2025-24091, e o pesquisador recebeu uma recompensa de bug bounty de US$ 17.500 (R$ 25 mil)
- Explorando o fato de que era possível enviar notificações em nível de sistema sem privilégios especiais, foi possível paralisar todo o dispositivo iOS
- Confirmou-se a possibilidade de um ataque de negação de serviço (DoS) que, com um simples código de uma linha, forçava o modo "Restore in Progress" e induzia reinicializações repetidas
- A vulnerabilidade foi corrigida com a atualização do iOS 18.3, que passou a exigir permissões restritas (
entitlement) para o envio de notificações Darwin importantes
Darwin Notifications
- Darwin Notifications é um mecanismo de nível CoreOS para troca de mensagens simples entre processos no iOS e no macOS
- A estrutura permite anunciar eventos com
notify_post, receber eventos com notify_register_dispatch e ler ou gravar valores de estado (state)
- O envio e o recebimento eram possíveis sem privilégios especiais, e não havia processo de verificação de segurança
- Vários componentes do sistema dependiam dessa API legada
Visão geral da vulnerabilidade
- Todos os processos dos sistemas operacionais da Apple podiam receber Darwin Notifications, sem necessidade de privilégios especiais
- Havia uma falha estrutural que permitia até mesmo a apps em sandbox enviar Darwin Notifications
- Como o volume de dados transmitidos é limitado, o risco de vazamento de dados sensíveis não era alto
- No entanto, ao enviar certas notificações críticas do sistema, como o aviso de início de restauração, era possível afetar todo o sistema
- Isso levou à descoberta de um possível ataque de negação de serviço (DoS)
EvilNotify e VeryEvilNotify
- Com o app EvilNotify, era possível forçar várias reações do sistema
- Exibição do ícone de detecção de líquido
- Bloqueio do Wi‑Fi e uso forçado da rede celular
- Bloqueio de gestos na tela de bloqueio e na Central de Controle
- Entrada no modo perdido do Buscar e outros efeitos
- Em especial, bastava uma linha,
notify_post("com.apple.MobileSync.BackupAgent.RestoreStarted"), para colocar o dispositivo no estado "Restore in Progress"
- Como o dispositivo não estava realmente sendo restaurado, esse modo falhava, e a única solução era tocar no botão "Reiniciar"
- O app VeryEvilNotify foi implementado com uma extensão de widget para permitir que o ataque reiniciasse automaticamente mesmo após reboot
- A extensão de widget era executada periodicamente em segundo plano pelo sistema e chamava a função
notify_post, disparando repetidamente o modo "Restore in Progress"
- Como resultado, era possível transformar completamente o dispositivo em um tijolo
Linha do tempo e registro do CVE
- 26 de junho de 2024: envio do relatório inicial do incidente à Apple
- 27 de setembro de 2024: recebimento de mensagem da Apple informando que medidas de mitigação estavam em andamento
- 28 de janeiro de 2025: correção concluída e confirmação da elegibilidade para bug bounty
- 11 de março de 2025: registro oficial como CVE-2025-24091 e correção no iOS/iPadOS 18.3
- O valor pago de bug bounty foi de US$ 17.500
Resposta e mitigação
- O envio de Darwin Notifications sensíveis passou a exigir permissões restritas (
entitlement)
- Por exemplo, a notificação
com.apple.MobileBackup.BackupAgent.RestoreStarted foi alterada para com.apple.private.restrict-post.MobileBackup.BackupAgent.RestoreStarted
- Os processos que recebem essas notificações também passaram a usar o novo nome, bloqueando envios não autorizados por apps sem permissão
- Esse esquema de permissões restritas começou a ser aplicado a partir do iOS 18.2 beta 2 e foi concluído no iOS 18.3
1 comentários
Comentários do Hacker News
É interessante que esta API não exija permissão para nenhum uso relacionado à configuração e à publicação de notificações
A vulnerabilidade descrita não transforma o dispositivo em um "tijolo"
US$ 17.500 é bem razoável
Excelente trabalho
Consigo imaginar como deve ter sido difícil o dia no escritório quando a equipe principal do iOS revisou isso
Uma única linha de código podia colocar o dispositivo no modo "recuperação em andamento"
Sinto falta dos velhos tempos do IRC
Isso sugere que apps de terceiros com seu próprio sistema de notificações também podem ser imitados de forma semelhante
Como o usuário precisa instalar ativamente um app malicioso, a prioridade pode ser baixa
Este artigo foi uma leitura fantástica
notify_posthoje em dia