A security researcher has found a bug in iOS that will disable the Wi-Fi if users connect their iPhone to Wi-Fi with a specific network name.
Before you freak out, you should know that the bug requires a specific Wi-Fi network name, and there is a way to fix the issue if it happens to you. But, the chances of it actually happening are slim since you should be able to spot the bad network by name alone.
Researcher Carl Schou shared the details on Twitter, where he explained that connecting your iPhone or iPad to Wi-Fi with the name “%p%s%s%s%s%n” triggers the bug. When an iOS device attempts to connect to Wi-Fi with that name, the connection fails, and the device’s Wi-Fi capabilities stop working. That means you won’t be able to connect to another Wi-Fi network (even one with a safe name) or use AirDrop. Moreover, the behaviour persists after a reboot.
9to5Mac explains that a fix does exist: resetting the network settings on your iPhone. Since the bug affects the software that controls Wi-Fi and doesn’t damage the hardware itself, resetting should put things back to normal. Users will need to head into the Settings app > General > Reset > Reset Network Settings. That option will reset all saved Wi-Fi networks on the device, as well as cellular settings and VPN access. That should allow users to connect their iPhone or iPad to a normal Wi-Fi network again.
After joining my personal WiFi with the SSID “%p%s%s%s%s%n”, my iPhone permanently disabled it’s WiFi functionality. Neither rebooting nor changing SSID fixes it :~) pic.twitter.com/2eue90JFu3
— Carl Schou (@vm_call) June 18, 2021
For those wondering how a weird Wi-Fi network name can completely disable Wi-Fi on your iPhone or iPad, 9to5Mac also published a possible explanation. The explanation is a bit technical, so the short version is that the Wi-Fi name shares a common syntax used in programming languages that may trip up the Wi-Fi system and cause iOS to shut it down, leading to it not working. Those interested can read the more technical version below.
According to 9to5, programming languages commonly use ‘%[character]’ to format variables into an output string. In C, one of the languages used to write iOS, ‘%n’ saves the number of characters written into the format string to a variable passed to the string format function. Because of that, 9to5 speculates that iOS’ Wi-Fi subsystem might pass the Wi-Fi network name to an internal library that performs string formating because of the ‘%n’ in the name. That may cause an arbitrary memory write and buffer overflow, which would lead to memory corruption. Ultimately, that would cause iOS to kill the process, thus disabling Wi-Fi on the device.
Whatever the root cause, users likely don’t have to worry — just don’t name your home Wi-Fi “%p%s%s%s%s%n” and avoid connecting to any network with that name (or, to be safe, any similarly name network). If you somehow connect to Wi-Fi with that name, reset your network settings to fix the problem. Hopefully, Apple fixes the flaw in future iOS and iPadOS updates.