A security researcher found out that a network name has caused a bug in the networking of iOS which can completely disable the iPhone’s ability to connect to Wi-Fi.
Carl Schou demonstrated that after joining the Wi-Fi network with the name (“%p%s%s%s%s%n”), the Wi-Fi functionality was disabled.
Once an iPhone, iPad or Apple Watch connects to the network with the name “%p%s%s%s%s%n”, the device fails to connect to other Wi-Fi, and cannot use other systems like AirDrop. It continues even after you reboot the whole system.
While Schuo hasn’t shown how he figured it out, the pattern in the network name is enough to trigger a bug. It is likely that the %[character]’ syntax is used in programming to format a variable. The % specifier means to save the number of written characters. The Wi-Fi subsystem probably passes the Wi-Fi name (SSID) unsanitised to some internal library that is performing string formatting. This creates a memory wipe and buffer overflow. As a result, it leads to memory corruption which the iOS watchdog kills in the process, which disables Wi-Fi.
While this is such a random set of events, it is highly unlikely that this could happen to you, but now that it is known, a load of Wi-Fi jokers could change open Wi-Fi networks to the corrupted name. Until Apple fix this in a future OS update, make sure you don’t connect to any network with ‘%’ in it’s name!
If you do somehow manage to be affected by this, it doesn’t permanently damage your hardware. The way to get yourself out of this pickle is to reset all of your network settings. While in Settings, go to General -> Reset -> Reset Network Settings. This should reset all of your saved networks on your iPhone, which removes the malicious network name from its memory.