
Zero-day no AppleMediaServices: Falha na busca de Bag desabilita a assinatura Mescal/Absinthe. As solicitações aos serviços da Apple prosseguem sem assinatura, expondo risco de downgrade, replay e bypass. Inclui análise, evidências de log e lógica de ataque PoC.
Resumo
Este problema constitui uma vulnerabilidade Zero-Day ativa e reflete uma falha de design sistêmica no AppleMediaServices.framework, em vez de uma regressão ou bug específico de versão.
Uma falha crítica de fail-open no framework AppleMediaServices da Apple permite que a assinatura de requisições seja desabilitada silenciosamente se um arquivo de configuração remoto (o "Bag") falhar ao carregar. Isso afeta iOS, macOS, tvOS e watchOS.
Quando o Bag não pode ser recuperado — devido a manipulação de DNS, timeouts ou interferência de rede — os daemons do AppleMediaServices desabilitam a assinatura Mescal/Absinthe e enviam requisições não assinadas para os servidores da Apple. Essas requisições carecem de proteções de integridade e expõem os usuários a ataques de downgrade e replay.
Evidência de Log:
Descoberta
Sistemas Afetados
Todas as plataformas Apple que usam AppleMediaServices.framework são afetadas.
Daemons impactados incluem:
Visão Geral da Vulnerabilidade
Dispositivos Apple buscam um Bag de configuração dinâmica do seguinte endpoint:
https://bag.itunes.apple.com/bag.xml?deviceClass=...&format=json
Essa configuração inclui flags como useAMSMescal, mescalURL e absintheURL, que determinam se as requisições de saída devem ser assinadas.
Se o Bag falhar ao carregar, o AppleMediaServices registra a falha, desabilita a lógica de assinatura e envia requisições não assinadas. Não há validação de assinatura, verificação de integridade ou mecanismo de fallback forçado. O Bag não é autenticado nem assinado, tornando o estado de segurança vulnerável a interferências de rede.
Prova de Conceito
Pré-condições:
Passos do Exploit:
Bloquear ou adulterar o acesso ao endpoint Bag usando respostas DNS NXDOMAIN, handshakes TCP descartados ou respostas atrasadas.
Observar logs do sistema indicando que o Bag falhou ao carregar e que as assinaturas Mescal/Absinthe foram ignoradas.
Acionar componentes do sistema (por exemplo, App Store, aplicativo Música) para enviar requisições. Monitorar o tráfego de rede e confirmar a ausência dos cabeçalhos de assinatura:
Resultado:
Tráfego não assinado é transmitido para endpoints da Apple sem verificação. Isso permite manipulação, replay e outros riscos de integridade.
Modelos de Ameaça
bag.itunes.apple.comAMSBagManager para sobrescrever flags de segurançaRemediação Recomendada
Configuração Assinada Assinar o Bag usando CMS, JWT ou HMAC e verificar as assinaturas no lado do cliente.
Padrões Fail-Secure O AppleMediaServices deve bloquear o tráfego dependente de assinatura quando o Bag não puder ser recuperado ou validado.
Imposição no Servidor As APIs de backend da Apple devem rejeitar requisições não assinadas que exigem proteção Mescal ou Absinthe.
Cache Validado O conteúdo do Bag só deve ser armazenado em cache quando passar pelas verificações de integridade e estiver dentro dos limites de expiração definidos.
Justificativa de Gravidade
Dispositivos Apple dependem de requisições assinadas para confiança — desde a App Store até a reprodução de mídia. Se essas assinaturas desaparecerem sempre que um arquivo de configuração não puder ser carregado, atacantes em uma rede Wi-Fi podem remover a integridade e injetar ou reproduzir tráfego sem que o usuário saiba. Uma única requisição Bag descartada significa que as garantias de segurança da Apple falham abertamente (fail open).