Забавный баг: исследователь безопасности обнаружил, что специальным образом разработанное имя сети вызывает ошибку в сетевом стеке iOS и может полностью отключить способность iPhone подключаться к Wi-Fi.
В Твиттере Карл Шоу показал, что после присоединения к сети Wi-Fi с определенным именем («%p%s%s%s%s%n»), все функции Wi-Fi на iPhone отключаются.
Как только iPhone или iPad присоединяется к сети с именем «%p%s%s%s%s%n», устройство не может больше подключаться к сетям Wi-Fi или использовать системные сетевые функции, такие как AirDrop. Проблема сохраняется после перезагрузки устройства (хотя существует обходной путь, см. ниже).
Хотя Шуо не описывает, как именно он это выяснил, любой программист должен заметить закономерность в странном имени сети, которое требуется для реализации ошибки.
Вот вероятное объяснение: синтаксис '%[символ]' обычно используется в языках программирования для форматирования переменных в выходную строку. В языке C спецификатор '%n' означает сохранение количества символов, записанных в строке форматирования, в переменной, переданной в функцию форматирования строки. Вероятно, подсистема Wi-Fi передает имя сети Wi-Fi (SSID) в несанированном виде в какую-то внутреннюю библиотеку, выполняющую форматирование строки, что, в свою очередь, вызывает произвольную запись в память и переполнение буфера. Это приведет к повреждению памяти, и iOS watchdog завершит процесс, тем самым фактически отключив Wi-Fi для пользователя.
Очевидно что это настолько непонятная цепочка событий, что крайне маловероятно, что какой-либо человек случайно попадет в нее, если только в природе не появится множество спамеров Wi-Fi с открытыми сетями Wi-Fi, использующими вредоносное имя. Пока Apple не исправит эту проблему в одном из будущих обновлений ОС просто следите за именами любых сетей Wi-Fi с символами процентов.
Тем не менее, если вы каким-то образом пострадали от этого, ошибка, похоже, не может надолго повредить ваше оборудование.
Вы должны иметь возможность сбросить все сетевые настройки и начать все сначала. В Настройках перейдите в Общие -> Сброс -> Сброс сетевых настроек. Это сбросит все сохраненные сети Wi-Fi на iPhone (а также другие вещи, такие как настройки сотовой связи и доступ к VPN), тем самым удалив из его памяти информацию об имени вредоносной сети. После этого вы сможете снова подключиться к стандартному Wi-Fi.
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)
Перевод сделан со статьи: https://9to5mac.com