Surgiu um bug curioso que estoura com o Wi-Fi do iPhone depois deste se tentar ligar a um hotspot com um SSID específico. Quando é ativada a ligação o iPhone fica impossibilitado de se ligar a uma rede Wi-Fi.
O problema é que, mesmo depois de reiniciar o iPhone, o utilizador não conseguirá ligar o WiFi. Mas o bug não acontece em todos!
Este bug poderá ser explorado por pessoas mal intencionadas dando o nome ao hotspot para Wi-Fi gratuito o que irá criar problemas aos utilizadores com iPhone.
Código no nome do hotspot estoura o seu iPhone
A história é contada de forma simples. Esta semana, Carl Schou, especialista em engenharia reversa, deparou-se com um problema quando se ligou ao seu hotspot Wi-Fi pessoal chamado:
%p%s%s%s%s%n
Isto é, ele deu este nome à sua ligação WiFi (SSID) e tentou ligar a essa “internet Wi-Fi” o seu iPhone. Logo que se ligou o Wi-Fi do smartphone desligou-se, e sempre que tentava ativar novamente, este desligava-se rapidamente, mesmo que ele reiniciasse o dispositivo ou desse um nome diferente ao hotspot:
Depois de renomear o meu Wi-Fi pessoal com o SSID ‘%p%s%s%s%s%n’, o meu iPhone desativou permanentemente a sua funcionalidade WiFi. Nem o reiniciar, nem a alteração do SSID o corrige.
Tweeted Schou.
O engenheiro estava a usar um iPhone XS com a versão iOS 14.4.2 instalada.
O problema ainda não está resolvido
Segundo o que foi testado, a versão iOS 14.6 continua a mostrar que a funcionalidade Wi-Fi do iPhone é desativada após a ligação com a rede sem fio, batizada com este tal nome estranho.
Quando se coloca este nome na ligação Wi-Fi, a opção de ativar ou desativar o Wi-Fi no iPhone começa a funcionar de forma errática. Mas acaba por não deixar o sistema funcionar corretamente.
Nalguns iPhones nem era possível fazer a ligação a esse nome e noutros aparecia o comportamento descrito por Schou, onde a configuração de Wi-Fi do iPhones seria desativada e não se conseguia ligar novamente, conforme mostrado abaixo:
A única maneira de resolver o problema e restabelecer o acesso ao Wi-Fi do iPhone é restaurar as configurações de rede do iPhone.
Problema parece resolvido no iOS 14.7 beta e iOs 15 beta
Metemos mão na massa e testamos nós este bug. Configuramos no nosso router o SSID em causa e colocamos à prova vários iPhones. Um com iOS 14.6, um com iOS 14.7 beta 3 e iOS 15 beta.
No caso do iPhone 12 Pro Max com iOS 14.6, o problema foi tal e qual o explicado. Depois do iPhone se ligar ao SSID estranho, o Wi-Fi desligou e nada o fez voltar. Solução: repor definições de rede.
Usamos então um iPhone SE 2020 com a versão iOS 14.5 e nada aconteceu assim como com o iOS 14.7 beta 3 e o mesmo com iOS 15 beta.
A mensagem em todos estes últimos foi “Não foi possível aceder a %p%s%s%s%s%n“. Portanto, presumimos que há um bug, mas que não atinge todas as versões e nas mais recentes, ainda em versão beta, isto já não acontece.
Como repor as definições de rede
Visto que depois do iPhone cair neste loop sem permitir que o Wi-Fi funcione corretamente, a única solução é repor as definições de rede.
Assim, vamos a Definições > Geral > Repor e depois escolher a opção Repor as definições de rede. Depois o iPhone irá restaurar as definições de fábrica apenas para as ligações, não será feito qualquer restauro que leve a perder dados guardados no iPhone.
Depois de reposto, tudo fica direito e volta a ter acesso às opções Wi-Fi. Contudo, se alguma vez vir este SSID (nome de ligação a uma rede Wi-Fi) nunca se ligue.
Também acontece no Android?
Não, Segundo alguns testes este bug não parece afetar o sistema operativo da Google.
So I haven’t done any homework on this bug / wouldn’t even really know where to look but i’m guessing this is just an ios bug?? Old ass android had no issue connecting to and saving it both open and with wpa2. pic.twitter.com/ydegK7AR7x
— MobCat 😺 (@MobCat99) June 19, 2021
Provável vulnerabilidade de formatação de string
Outros investigadores de segurança que viram o tweet de Schou acreditam saber o problema.
Quando uma string com sinais “%” existe em nomes de pontos de acesso Wi-Fi, o iOS pode estar a interpretar de forma errada as letras após “%” como especificadores de formato de string, quando não o são.