Пару недель назад специалист по исследованию безопасности Карл Скоу обнаружил баг в iPhone: если подключиться к публичной точке доступа с названием ‘%p%s%s%s%s%n’, на вашем iPhone может нарушиться работа Wi-Fi вплоть до того, что нельзя будет включить модуль. Более того, проблема остается даже после перезагрузки смартфона. Помочь может сброс настроек сети (General > Reset > Reset Network Settings) или же полный сброс устройства.
Вчера же он сообщил, что к аналогичным последствиям может привести подключение к публичной точке доступа с названием ‘%secretclub%power’. Причем в данном случае сброс настроек сети не помогает и приходится делать hard reset.
По-видимому, причина возникновения бага заключается в использовании ‘%[символ]’ в названии. Данный синтаксис обычно используется в языках программирования для форматирования переменных в выходной строке. Например, в языке C спецификатор ‘%n’ заставляет printf() инициализировать переменную, на которую указывает аргумент, соответствующий данному спецификатору, значением, равным числу уже выведенных символов. Подсистема Wi-Fi, вероятно, передает имя сети Wi-Fi (SSID) без очистки в определенную внутреннюю библиотеку, которая выполняет форматирование строки, что, в свою очередь, вызывает произвольную запись в память и переполнение буфера. Это приводит к повреждению памяти и iOS завершает процесс, отключая Wi-Fi для пользователя.
Так что, если увидите публичную точку доступа Wi-Fi с подозрительным названием, лучше не пробуйте к ней подключаться, чтобы избежать возможных проблем с вашим гаджетом.