1 pontos por GN⁺ 2024-06-30 | 1 comentários | Compartilhar no WhatsApp
  • Por causa da CVE-2024-27867 no firmware dos AirPods, alguém que conheça o endereço MAC Bluetooth pode se conectar ao dispositivo para ouvir o microfone ou reproduzir música
  • A vulnerabilidade ocorre porque, no caminho do Fast Connect, protocolo proprietário da Apple, o estado de autenticação e criptografia não é verificado explicitamente
  • O endereço MAC Bluetooth necessário para o ataque não é totalmente privado e pode ser obtido por rádio quando o dispositivo está em modo de pareamento ou quando os AirPods estão ativos
  • Se os AirPods estiverem dentro do estojo de recarga fechado, ou os AirPods Max dentro do Smart Case, a função sem fio é desativada e a própria conexão se torna impossível
  • A Apple distribuiu atualizações de firmware para AirPods e alguns Beats, mas usuários de Android, Windows e Linux que os usam sem iOS ou macOS podem ter um procedimento de atualização mais trabalhoso

Vulnerabilidade no firmware dos AirPods e escopo do impacto

  • Há uma vulnerabilidade de segurança CVE-2024-27867 no firmware dos Apple AirPods
  • Quem souber o endereço MAC Bluetooth pode se conectar aos AirPods e realizar as seguintes ações
    • Ouvir o microfone
    • Reproduzir música
    • Verificar e pausar a música em reprodução em outro dispositivo conectado
    • Executar algumas ações compatíveis com o protocolo AAP
    • Enviar mensagens malformadas para causar crash nos AirPods
  • Mesmo que os AirPods já estejam conectados a um celular, o invasor pode se conectar adicionalmente
    • Porém, se o invasor ligar o microfone, a reprodução de música será interrompida
  • Se os AirPods estiverem dentro do estojo de recarga fechado, ou se os AirPods Max estiverem dentro do Smart Case, a função sem fio é desativada e nenhuma conexão é possível

Como a vulnerabilidade foi descoberta

  • Os AirPods 3 funcionavam naturalmente com vários recursos na combinação de macOS e dispositivos Apple, mas, ao inicializar o mesmo notebook com Linux, eles não se conectavam simultaneamente ao celular e ao notebook
  • Por causa dessa diferença, supôs-se que havia um protocolo exclusivo da Apple não presente em fones Bluetooth comuns, e a análise começou para reimplementar alguns recursos no Linux
  • Durante a análise, foi encontrada uma vulnerabilidade no recurso Fast Connect da Apple para conectar periféricos Bluetooth

Como o Fast Connect funciona

  • O Fast Connect é um protocolo proprietário da Apple e usa de forma criativa a função ping da especificação Bluetooth
  • O objetivo é reduzir o tempo de estabelecimento de conexão entre dois dispositivos Apple de cerca de 1 segundo para cerca de 0,5 segundo
  • Antes de se autenticar com o dispositivo de destino, os dois dispositivos trocam mensagens L2CAP ping
    • A Apple coloca mensagens do protocolo dentro do payload do ping
    • Dessa forma, verifica se ambos os lados oferecem suporte ao Fast Connect sem violar a especificação Bluetooth
  • Depois disso, são feitas negociações necessárias para a conexão em mais 3 mensagens adicionais de ida e volta
  • Como o total é de apenas 4 mensagens de ida e volta, o processo é mais rápido do que o procedimento de uma conexão Bluetooth comum, que troca descritores SDP e configura canais

Falta de verificação de autenticação

  • O problema é que uma verificação importante ficou ausente no caminho de código separado que implementa o Fast Connect
  • Os AirPods não verificam se a outra parte da conexão realmente se autenticou e ativou a criptografia
  • Em condições normais, iOS e macOS executam a etapa de autenticação e ativação da criptografia depois da mensagem inicial do Fast Connect
  • Mesmo que um invasor pule essa etapa, os AirPods continuam o procedimento de Fast Connect
  • Ao conectar aos AirPods pelo método Bluetooth comum, sem Fast Connect, a etapa de autenticação fica implicitamente incluída; por isso, é possível que a verificação explícita tenha ficado ausente no caminho de código do Fast Connect

Condição do endereço MAC Bluetooth

  • O invasor precisa conhecer o endereço MAC Bluetooth fixo dos AirPods
  • Esse endereço não é uma informação totalmente privada
    • Ele é anunciado por rádio quando o dispositivo Bluetooth está em modo de pareamento
    • Quando os AirPods estão ativos, pode ser obtido facilmente pelo sinal de rádio com hardware como o Ubertooth One

Atualizações e o problema para usuários fora do ecossistema Apple

  • Nos últimos dias, a Apple distribuiu várias atualizações de firmware que corrigem essa vulnerabilidade
  • Os modelos contemplados são AirPods 2, AirPods 3, AirPods Pro, AirPods Pro 2, AirPods Max e alguns fones Beats
  • Usuários devem verificar se o firmware dos AirPods está atualizado
  • O firmware dos AirPods é atualizado automaticamente, mas apenas quando usado com um iPhone ou MacBook
  • Quem usa AirPods sem um dispositivo iOS ou macOS, como usuários de Android, Windows ou Linux, pode ter dificuldade para atualizar facilmente o firmware
  • Ao que parece, esses usuários podem receber a atualização de firmware em uma Apple Store

Relato e ferramentas

  • Jiska Classen, da University of Potsdam, ajudou com perguntas relacionadas a Bluetooth e com o processo de divulgação pública
  • Ferramentas da comunidade Linux, como o BlueZ, foram necessárias para encontrar esse problema

1 comentários

 
GN⁺ 2024-06-30
Opiniões do Hacker News
  • Dois dispositivos na mesma sala poderiam trocar milhares de mensagens por segundo usando apenas uma parte muito estreita do espectro eletromagnético, então fico me perguntando por que, no Bluetooth, uma única mensagem leva centenas de milissegundos em vez de microssegundos
    Gostaria de saber quais fatores determinam a unidade de tempo desse processo
    • Não tenho certeza neste caso, mas normalmente é resultado de uma combinação de fatores: a frequência com que o dispositivo anunciante envia beacons, se há vários canais de anúncio, se os beacons e o handshake são transmitidos na velocidade mais lenta do protocolo por compatibilidade retroativa, se o ruído ambiente exige retransmissões na camada física etc.
      No fim, o handshake que verifica quais recursos os dois lados suportam e decide qual protocolo de camada física usar acaba consumindo tempo
  • Pelo que me lembro, os dispositivos Beats afetados que usam o mesmo chip podiam, de fato, ser atualizados pelo app Beats no Android
    • Tenho usado AirPods Pro de 1ª e 2ª geração com um celular Android, e no Android não há um jeito adequado de fazer atualização de firmware, verificar a versão, escolher modos, alterar a ação de pressionar e segurar ou verificar o nível de bateria
      Existem alguns apps de terceiros, mas são pouco confiáveis; felizmente, no Mac dá para fazer a maior parte disso, mas o teste de encaixe só exige um iPhone. A atualização de firmware não pode ser controlada pelo usuário e não há nenhuma informação de status ou progresso, tornando tudo o mais confuso possível
      Uma vez, um funcionário de suporte da Apple Store disse para “colocar os AirPods no estojo aberto enquanto conectados ao Mac, conectar o estojo à energia e deixá-los assim por cerca de 30 minutos”, mas, na prática, parece haver bastante aleatoriedade na atualização. Os funcionários da Apple Store também pareciam ter um conhecimento às vezes bem vago sobre a integração entre produtos Apple que não fossem o iPhone, e ficaram surpresos duas vezes ao saber que eu usava AirPods só com Mac e Android, sem iPhone
  • O link do Apple Support no texto parece ser da versão indiana; a versão dos EUA é esta:
    https://support.apple.com/en-us/106340
    A versão dos EUA mostra números de firmware mais recentes diferentes; por exemplo, o AirPods Pro de 2ª geração está em 6F8, enquanto a versão indiana mostra 6B34
  • Eu ficaria muito curioso se saísse um texto cobrindo os detalhes de implementação desse recurso também no Linux
    Fico aguardando um artigo de continuação sobre a implementação no Linux
  • O firmware dos meus AirPods 2 está em uma versão antiga, mas, do ponto de vista do usuário, não dá para mandar explicitamente o iOS atualizar, nem há indicação de quando a atualização acontece
    Gostaria que houvesse mais controle sobre as atualizações
    • Está escrito que “as atualizações de firmware são entregues automaticamente quando os AirPods estão carregando e dentro do alcance Bluetooth de um iPhone, iPad ou Mac conectado ao Wi‑Fi”
      https://support.apple.com/en-us/106340
    • À medida que mais recursos forem adicionados aos AirPods atuais e futuros, eu gostaria de poder acionar a atualização manualmente ou, no mínimo, receber uma notificação de que ela aconteceu
      É verdade que mais de 95% dos usuários de AirPods não precisam saber de atualizações de firmware, mas quem se importa com isso deveria ter uma forma de verificar o que está acontecendo
      Normalmente não é um grande problema, mas já recebi firmware dos AirPods com alguns dias de atraso, e pode chegar um momento em que uma atualização imediata seja importante
    • Se você quer mais controle, talvez produtos Apple não sejam para você
    • Tenho vontade de investir tempo em fazer engenharia reversa disso. Parece divertido
  • A vulnerabilidade obviamente é ruim, mas quero entender o quão grave ela é na prática. Fico curioso para saber que coisas “assustadoras” um atacante poderia fazer
    Se o método envolve derrubar uma conexão existente, parece difícil escutar uma chamada ou um stream de áudio sem o usuário perceber. Não sei se o pior cenário é escanear endereços MAC a curta distância, conectar automaticamente e tocar ruído no ouvido da pessoa, ou se há um problema maior
    Talvez seja possível “sequestrar” os AirPods de uma celebridade importante ou de um político durante uma videochamada, mas isso provavelmente seria percebido imediatamente; fico me perguntando se há algo pior que isso
    • O atacante pode reproduzir áudio em volume perigosamente alto, pode escutar o som ambiente de uma pessoa que está usando os AirPods mas não os está usando ativamente, e também pode se passar por um chamador sem passar por um serviço de chamadas nem deixar registro de chamada
      Além disso, assumir o controle de uma conexão Bluetooth dá uma superfície de ataque bem ampla, então, se o atacante souber de outras vulnerabilidades, abre-se o caminho para uma cadeia de exploits adicional
    • No pior caso, alguém poderia criar um dispositivo que pudesse ser deixado cair em uma bolsa e gravar todo o áudio dos fones. Ele poderia até ter o formato de um pendrive USB
      Como o protocolo “Fast Connect” parece permitir “conexão” com vários dispositivos ao mesmo tempo, o usuário provavelmente não perceberia. Outro ataque seria espalhar dispositivos em formato de porta-copos pelo escritório, como se fossem deixados pela equipe de limpeza, para capturar o áudio de AirPods próximos
      A parte essencialmente difícil já estaria resolvida; bastaria criar um dispositivo com uma bateria pequena, transmissor Bluetooth e armazenamento para coletar áudio de alta qualidade perto de onde as pessoas conversam
    • Muitas pessoas continuam com os AirPods no ouvido mesmo quando não os estão usando ativamente; nesses casos, seria possível usar o microfone para escutar conversas presenciais
      Ainda assim, como é preciso estar dentro do alcance do Bluetooth, talvez seja mais fácil simplesmente bisbilhotar do jeito comum
    • Realisticamente, o pior caso é só causar incômodo
      Se não tivesse sido corrigido, alguém teria criado um app de interferência de AirPods para Flipper Zero para cortar o áudio dos AirPods de todo mundo em locais públicos e irritar as pessoas
  • Em Settings > Bluetooth > Your AirPods, ao tocar no [i], é possível ver a versão mesmo que os AirPods não estejam conectados no momento
    6A326 parece ser a versão que inclui a correção
    https://support.apple.com/en-us/HT214111
    • Lá diz “AirPods Firmware Update 6A326, AirPods Firmware Update 6F8, and Beats Firmware Update 6F8”, e meu dispositivo está em 6F8
      Provavelmente é a versão para o AirPods Pro de 2ª geração
  • Sei que é improvável, mas espero que este caso faça a Apple oferecer algum tipo de suporte a atualizações dos AirPods em outros sistemas operacionais, no mínimo no Android
  • Não há opção de atualização manual. As atualizações são apenas automáticas, e também não está claro como induzir essa atualização automática
    • Se minha memória não falha, remover ou desemparelhar os AirPods e depois forçar o pareamento de novo aciona a atualização à força
  • Além de a bateria não acabar, surgiu mais uma vantagem dos fones com fio
    • Há também a vantagem de a conexão ser estável. No Linux, Bluetooth é um desastre