Meio Bit » Mobile » Bug no Microsoft Teams impediu Android de ligar para 911

Bug no Microsoft Teams impediu Android de ligar para 911

Segundo o Google, bug (já corrigido) ocorre quando usuário tem app do Microsoft Teams no Android, mas não está logado

2 anos atrás

Um celular Android, assim como um iPhone, é um computador de bolso que faz de tudo: trabalhar, criar conteúdo, assistir filmes, ouvir música, jogar e etc., mas é importante que ele também cumpra sua função mais básica, que é ser um telefone. Especialmente em casos de emergência.

Imagem relacionada obrigatória (Crédito: Divulgação/ViacomCBS/20th Television/Disney)

Imagem relacionada obrigatória (Crédito: Divulgação/ViacomCBS/20th Television/Disney)

Por isso que o bug relatado por um usuário do Reddit deixou muita gente de cabeça quente, quando ele descobriu, no pior momento possível, que seu Pixel 3 travava ao ligar para o 911, o número de emergência dos Estados Unidos equivalente ao nosso 190.

O erro estava relacionado ao app do Microsoft Teams, no que serviu para demonstrar que ligações não são mais parte do core do Android, e podem ser afetadas por aplicativos não-prioritários.

Celular travava ao discar 911

No dia 29 de novembro de 2021, o usuário do Reddit KitchenPicture5849 relatou um caso envolvendo seu celular Google Pixel 3, um aparelho lançado em 2018 que apesar disso, estava atualizado para o Android 11 e tem update garantido para o 12. No texto, ele conta que tentou ligar para o 911 de modo a chamar uma ambulância para a sua avó, que estava apresentando um quadro suspeito de derrame (ou hipoglicemia, é normal as pessoas confundirem um com o outro).

O usuário diz que após encerrar uma chamada para sua mãe, ele tentou entrar em contato com o serviço de emergência, mas o Android travou. A única coisa que KitchenPicture5849 conseguia fazer era "clicar em outros apps, enquanto que a chamada continuava aberta" embora não concluída, tendo tocado apenas uma vez.

Por sorte, como o próprio usuário diz, sua avó é da geração que ainda possui uma linha fixa, e passado o susto, ele tentou novamente entrar em contato com o 911, de modo a reproduzir o bug, o que de fato aconteceu. Por algum motivo escuso, seu celular era incapaz de concluir a chamada especificamente para o serviço de emergência, mas funcionava normalmente com outros contatos.

KitchenPicture5849 realizou o procedimento padrão, que era contatar o Google e alertar sobre o bug, que é considerado grave e até poderia ser visto como uma violação da lei, pois tanto fabricantes quanto operadas são obrigadas a garantir que chamadas para serviços essenciais e de emergência sejam concluídas, não importa como. Ainda assim, a resposta da companhia só veio no dia 8 dezembro, através de uma postagem oficial do administrador da comunidade do Reddit, ligado a Mountain View.

Segundo o Google, o bug se deu por interferência causada pelo Microsoft Teams, a plataforma unificada voltada para profissionais, que concorre diretamente com o Slack. O bug foi reproduzido e de acordo com os testes, ele acontece quando o aplicativo está instalado no celular Android, mas o usuário não fez login em sua conta.

Como os aparelhos da linha Pixel rodam Android puro de fábrica, não é uma questão do app ter sido pré-instalado, e sim que o usuário o baixou, mas nunca o usou. De qualquer forma, a Microsoft foi contatada a respeito do bug, que foi corrigido, e é aqui que as coisas começam a ficar estranhas.

Usuário disca 911 em celular Android (Crédito: releon8211/Getty Images)

Usuário disca 911 em celular Android (Crédito: releon8211/Getty Images)

Android, Microsoft e uma sequência de erros

Em um texto bem detalhado, Mishaal Rahman, ex-editor-chefe do site XDA Developers, explica as circunstâncias a respeito do bug. Por lei, operadoras têm que transferir chamadas ao serviço de emergência, como o 911, mesmo se o celular do usuário não tiver um chip SIM correspondente à sua rede; no que tange ao software de dispositivos mobile, ligações prioritárias tem, er, prioridade sobre tudo e têm que funcionar a qualquer custo.

Um app de terceiros capaz de causar um bug que bloqueou a ligação para 911 não é um acontecimento trivial, e assustou muita gente ao perceberem que no Android, o recurso de telefone não é uma funcionalidade intrínseca ao sistema operacional, o que evitaria que falhas em softwares de terceiros o afetasse.

Isso posto, Rahman e o profissional polonês Kuba Wojciechowski fuçaram no código do Microsoft Teams, e descobriram um comportamento bizarro ligado a flags indevidas e criação de instâncias de ligação em excesso. Por padrão, a instância PhoneAccount armazena contas criadas por apps que possuem privilégios de ligação, para diversos fins. No caso do Teams, ele usa o Telefone para chamadas de voz, com backend do Skype.

O Teams registra uma flag para gerenciar sua capacidade própria de gerenciar ligações normais, mas por motivos óbvios, não cria uma para chamadas de emergência, pois não possui os privilégios para isso (e nem deveria ter, mesmo). No entanto, a instância adjustAttemptsForEmergency gerencia os números "preferidos" para ligações de emergência mal e porcamente, incluindo todas as entradas de números de apps, mesmo os que não têm o privilégio.

É aqui que a instância do Teams vai parar como opção de ligação de emergência.

O problema começa aqui (Crédito: Mishaal Rahman/Medium)

O problema começa aqui (Crédito: Mishaal Rahman/Medium)

Esta é uma falha, mas não causa o bug, ou do contrário, nenhum celular Android com o Teams instalado seria capaz de ligar para números prioritários. Ele ocorre por causa de uma particularidade dentro do código da instância sortSimPhoneAccountsforEmergency, sujeita a um erro de underflow/overflow, ao organizar a lista de números prioritários. Ele só poderia ocorrer se o aparelho tivesse um número absurdo de instâncias registradas, o que em situações normais, não ocorre.

É aqui que surge o bug do Microsoft Teams. Builds anteriores continham um erro que criava uma nova instância sempre que o app era aberto, mas o usuário não fazia login. Mesmo que ele fosse desinstalado e reinstalado, o problema persistia. Nos testes, Rahman conseguiu criar 17 entradas para o mesmo app, que não ocorrem quando você entra com e-mail e senha no Teams.

Com o tempo, o ato de não fazer login no Teams resultaria na criação de uma infinidade de instâncias, todas sendo listadas como opção para números de emergência, mesmo não tendo nada. Em determinado momento, quando o usuário tentasse ligar para o 911, a requisição resultaria em um estouro de pilha, fazendo tudo travar.

Isso acontece porque toda vez que o app é aberto, mas o usuário não é logado, o Teams gerava uma UUID aleatória para ser usada pelo PhoneAccount. Isso acontecia sempre que o app era encerrado a força e reaberto, dava crash e carregava automaticamente, ou o celular Android era reiniciado.

Eis o bug (Crédito: Mishaal Rahman/Medium)

Eis o bug (Crédito: Mishaal Rahman/Medium)

Embora o Google tenha minimizado o bug, dizendo que ele afetou "um pequeno número de usuários", este é um bug muito grave que poderia ter consequências terríveis, e por pouco não teve mesmo.

Considerando que Joe Biden e a atual administração da FTC (Federal Trade Commission) não andam de bom humor com as gigantes tech, há uma chance de que este caso em específico forneça mais munição para os reguladores apertarem tanto o Google quanto a Microsoft.

Fonte: Reddit, The Next Web, Medium

Leia mais sobre: , , , .

relacionados


Comentários