Google corrige bug pesadelo do Android que impedia o usuário de ligar para o 911

O patch de segurança de janeiro do Android foi lançado e está corrigindo um dos bugs mais desagradáveis ​​do Android que surgiram em algum tempo: certos aplicativos podem impedir você de entrar em contato com o 911 ou outros números de serviços de emergência em todo o mundo.

No início de dezembro, um conto angustiante apareceu no Subreddit Google Pixel de um usuário cujo Pixel 3 travou quando mais precisava: ao discar 911 para sua avó, que “parecia estar tendo um derrame”. Todo o subsistema de telefone parecia travar imediatamente ao chamar os serviços de emergência, com o usuário “KitchenPicture5849” dizendo que não conseguia fazer a ligação ou desligar para tentar fazer a ligação novamente. Felizmente, um telefone fixo próximo estava disponível depois que o telefone Android deles os deixou cair e os serviços de emergência puderam ser contatados.

Depois que a crise passou, o usuário deu outra chance para ligar para o 911 de seu smartphone e o Android travou novamente, indicando que não foi um bug único. Uma verificação de sua conta de telefone também revelou que KitchenPicture5849 nunca realmente se conectou ao 911. Eles dizem que também receberam alguns outros DMs de usuários relatando que estavam enfrentando o mesmo bug.

O Google entrou em contato com o usuário e publicamente respondeu para a postagem em 8 de dezembro:

Com base em nossa investigação, conseguimos reproduzir o problema em um conjunto limitado de circunstâncias. Acreditamos que o problema esteja presente apenas em um pequeno número de dispositivos com o aplicativo Microsoft Teams instalado quando o usuário não está conectado e, no momento, estamos cientes de apenas um relatório de usuário relacionado à ocorrência desse bug. Determinamos que o problema estava sendo causado pela interação não intencional entre o aplicativo Microsoft Teams e o sistema operacional Android subjacente. A Microsoft colaborou estreitamente com o Google para resolver essa interação não intencional.

O Google disse que a Microsoft lançará uma atualização do aplicativo o mais rápido possível e que os usuários devem verificar se há uma atualização na Play Store. A empresa também mencionou que um patch no nível do sistema operacional seria lançado um mês inteiro depois, no início de janeiro (isso é hoje). Então, o Google não forneceu mais comentários sobre o assunto.

Por que os aplicativos podem quebrar o 911

Resistir. O Microsoft Teams quebrou o 911? Aplicativos Android aleatórios podem interromper a funcionalidade dos serviços de emergência? Como? Por que os aplicativos de terceiros podem chegar a 300 metros de uma função tão crítica? Algum outro aplicativo quebra o 911 ou apenas o Microsoft Teams? Embora o Teams fosse consertado, era realmente OK permitir que os usuários do Android discutissem esse bug no nível do sistema operacional por um mês, especialmente quando não temos ideia se outros aplicativos estão fazendo isso? Android sendo Android, muitos telefones nunca terão patches de qualquer maneira. Como os usuários podem saber que os serviços de emergência funcionarão? Além de dizer para esperar um mês por uma correção, o Google não estava fornecendo nenhuma resposta.

Felizmente, algumas pessoas muito inteligentes na comunidade Android poderiam fornecer as respostas que o Google não compartilharia. Mishaal Rahman, o Editor Técnico Sênior do Esper, escreveu um incrível Postagem média detalhando como o bug funciona e por que acontece. Aplicativos no Android com funcionalidade de chamada telefônica podem registrar uma “PhoneAccount” com o sistema, indicando que eles têm alguma capacidade de fazer chamadas. Existem algumas sinalizações que os aplicativos podem definir com PhoneAccount, incluindo uma chamada “CAPABILITY_PLACE_EMERGENCY_CALLS.” Quando chega a hora de ligar para o 911, o Android classifica a lista de contas de telefone que foram registradas e escolhe uma. Tudo isso parece bem até agora.

Um dos vários bugs identificados na postagem de Rahman é que o Microsoft Teams registrará uma conta de telefone adicional no sistema sempre que o Teams for inicializado, desde que você não esteja conectado. Observe que essa não é uma ocorrência rara de instalar o Microsoft Teams e depois nunca usá-lo – um reclamação comum do aplicativo Teams para Android é que ele frequentemente desconecta os usuários automaticamente. Se você estiver desconectado, iniciar o Microsoft Teams 10 vezes resultará em 10 contas de telefone duplicadas do Teams, obstruindo seu telefone. O Teams não deveria fazer isso, e a atualização da Microsoft impediu o Teams de fazer isso, mas um monte de PhoneAccounts duplicados também não deveriam ser suficientes para derrubar o sistema de telefonia do Android.

Próximo bug: ao escolher uma conta de telefone para executar a chamada de emergência, o Android passa por um processo de classificação complicado para descobrir qual conta usar. A última etapa neste processo de classificação, o desempatador, é classificar por hashcode. A comparação do hashcode apenas subtrai um hashcode do outro. Mas, assim como aquele bug estúpido Y2K22 do Microsoft Exchange do outro dia, é possível que isso resulte em um estouro ou estouro negativo de inteiro, e agora o subsistema de telefone vai travar. O código do Google tem erros, mas como é o último desempate de classificação depois de tentar coisas mais óbvias, como o nome do pacote, ele só deve ser invocado na instância muito específica de um aplicativo que gera PhoneAccounts duplicados. Então, obrigado, Microsoft!

O Google corrige o bug de estouro / subfluxo de inteiro.
Prolongar / O Google corrige o bug de estouro / subfluxo de inteiro.

A correção do Google para esse bug é aqui, intitulado “Corrigir o estouro / estouro negativo causado pela classificação de contas de telefone duplicadas durante a tentativa de chamada de emergência.” Em vez de subtrair um hashcode de outro e, potencialmente, encontrar um número muito grande ou muito pequeno que trava o sistema, o Google agora executa os dois números por meio da função java “Integer.compare.” Isso retorna apenas -1, 0 ou 1, indicando um resultado de comparação menor, idêntico ou maior.

Se você é como eu no início e está se perguntando por que o Android está classificando as contas de telefone em vez de apenas usar a conta padrão no cartão SIM, vou adivinhar e dizer que esta foi uma tentativa de fazer o 911 funcionar, não importa que. Caso a conta principal não funcione, o Android quer uma lista de todas as contas de telefone possíveis que ele pode tentar, e quer fazer isso automaticamente, para se conectar ao 911 por qualquer meio necessário. Este sistema de classificação existe apenas para contatar os serviços de emergência, razão pela qual as chamadas telefônicas regulares ainda funcionam para os usuários afetados.

Um terceiro bug nesta bagunça é que O Microsoft Teams nem mesmo se registra como um gerenciador de chamadas de emergência. As equipes fizeram um milhão de contas de telefone e não usaram a sinalização “CAPABILITY_PLACE_EMERGENCY_CALLS”, mas ainda quebrou 911. O processo de classificação do Google começa com a consulta tudo contas de telefone quando um primeiro passo melhor seria começar com todos capaz de fazer chamadas de emergência contas de telefone. O Google está pegando um solução ainda mais drástica a este último bug e eliminando todas as contas de telefone “autogerenciadas” do procedimento 911 do sistema. Contas de telefone Android “autogerenciadas”, como o Microsoft Teams, obtêm acesso mais direto à pilha de telefonia Android e podem implementar seus próprios recursos. O sistema de chamadas de emergência do Android agora considerará apenas provedores de telefonia mais simples que se conectam ao aplicativo de telefone padrão, como a conta da sua operadora. Todos os outros aplicativos VoIP provavelmente ainda podem ser usados ​​para entrar em contato com o 911 por conta própria (muitos países requer funcionalidade 911 por lei). Mas se você abrir o discador padrão e clicar em “911”, o Android só escolherá entre contas de telefone padronizadas e gerenciadas pelo sistema.

Quem está sendo corrigido e como você pode verificar o bug do 911

Rahman diz que o bug do Google para isso é CVE-2021-39659, que o boletim de segurança mensal categoriza como uma vulnerabilidade de “negação de serviço” de alta gravidade com patches para dispositivos que executam o Android 10, 11 e 12. Na base de código do Android, o Google está na verdade fazendo backport desta correção até o Android 8.0, que tecnicamente não é mais compatível . Isso é puramente teórico, já que nenhum fabricante está realmente empurrando atualizações de segurança para dispositivos tão antigos. Mas o código está lá, se alguém quiser.

A pilha de telefonia do Android (ainda?) Não é um módulo do Project Mainline facilmente atualizável, então a única maneira de obter uma correção é por meio da atualização de segurança mensal de janeiro de 2022 do Android. A Samsung deve atualizar todos os telefones esta lista começando esta semana, enquanto o Google está lançando correções para o Pixel 3a, 4, 4a, 5 e 5a.

Uma atualização é não chegando para o Pixel 6 ainda. O mais novo carro-chefe do Google está passando por uma crise de atualização no momento. A atualização de dezembro de 2021 foi puxado devido a “problemas de conectividade móvel” não relacionados (chamadas telefônicas não funcionam). Enquanto o Google se esforça para consertar tudo, a próxima atualização do Pixel 6 com essa correção do 911 será no “final de janeiro”. Até então, é normal estar no patch de novembro. Tanto os cronogramas de patch do “início de janeiro” quanto do “final de janeiro” do Google parecem incrivelmente lentos para um bug que poderia fazer com que os usuários literalmente morressem.

Vou dar outro palpite e dizer que o Pixel 6 é o telefone estranho porque é um SoC e modem totalmente diferente (ambos da divisão Exynos da Samsung, enquanto todos os outros Pixel usam Qualcomm). Fazer a temporada de compras natalinas não deu ao Google muito espaço para atrasos no lançamento. Isso não o torna menos decepcionante para um telefone com o grande ponto de venda das atualizações do primeiro dia, mas, felizmente, esse é um problema temporário.

Estou surpreso que este seja apenas um bug de gravidade “alta” (em vez de “crítico”) e que a implementação esteja levando um a dois meses. Atrasar uma ambulância pode ser fatal, então seria bom se tudo isso chegasse mais rápido, em vez de como o Google está escolhendo lidar com o problema.

Se você está esperando por um patch, ou se você tem um dos bilhões dos dispositivos Android que nunca serão corrigidos, existe uma maneira de ver se o seu telefone está transbordando de contas de telefone duplicadas. Analista de segurança móvel Linuxct estimulou o incrível “Detector de abuso de conta de telefone,“um aplicativo de código aberto que apenas lista todas as contas de telefone registradas atualmente no seu dispositivo. Não há nenhuma regra rígida aqui, mas você deve ver cerca de uma conta de telefone por aplicativo VoIP.

Até agora, só ouvimos falar do Microsoft Teams acionando esse bug com contas de telefone duplicadas, mas não há como dizer se algum outro aplicativo está cometendo um erro semelhante. Se você vir um aplicativo nesta lista gerando toneladas de contas duplicadas, é possível que ele impeça você de se conectar aos serviços de emergência. Eu recomendo desinstalar o aplicativo, entrar em contato com o desenvolvedor e informar o resto de nós no Twitter ou algo assim.


Source: Ars Technica by arstechnica.com.

*The article has been translated based on the content of Ars Technica by arstechnica.com. If there is any problem regarding the content, copyright, please leave a report below the article. We will try to process as quickly as possible to protect the rights of the author. Thank you very much!

*We just want readers to access information more quickly and easily with other multilingual content, instead of information only available in a certain language.

*We always respect the copyright of the content of the author and always include the original link of the source article.If the author disagrees, just leave the report below the article, the article will be edited or deleted at the request of the author. Thanks very much! Best regards!