iPhone можно превратить в «кирпич» простым переводом часов

Техника
мобильная версия
, Текст: Сергей Попсулин
Обнаруженная в iOS ошибка позволяет сломать аппарат на время - до тех пор, пока не сядет его батарея. В противном случае устройство можно отнести в техподдержку Apple, где его починят тут же. Ошибка возникает, когда пользователь пытается установить определенную дату и время. 

«Ошибка 1970» 

В операционной системе iOS, под управлением которой работают iPhone, iPad и iPod touch, найдена ошибка, из-за которой устройство может перестать работать после простой смены текущей даты. Пользователь, обнаруживший ошибку, рассказал о ней на сайте Reddit под ником vista980622.

Сообщение vista980622 было опубликовано сутки назад и за это время набрало свыше 500 комментариев. Новая ошибка была негласно названа «Ошибкой 1970».

Описание проблемы

«Если на устройстве с 64-разрядной iOS поставить текущей датой 1 января 1970 г., устройство не сможет загрузиться. Подключение к iTunes и восстановление заводских настроек не возвращают работоспособность устройства. Починить его можно лишь физически», — рассказал владелец.

Автор настоятельно рекомендовал пользователям не пробовать устанавливать указанную дату.


Найден новый способ, как временно «убить» iPhone

Он добавил, что ошибку могут эксплуатировать злоумышленники для массового вывода устройств из строя . Например, когда устройство подключается к публичной сети Wi-Fi, оно синхронизует свое время с сервером точного времени. Злоумышленники могут внедрить в публичную сеть  вредоносный код, который будет выводить из строя каждый подключенный к нему iPhone и iPad путем автоматического перевода даты.

Суть проблемы

По мнению пользователя princekolt, написавшего комментарий к записи vista980622, проблема кроется в методе представления времени во всех UNIX-подобных системах, к которым, в том числе относится, iOS. Дело в том, что текущее время в них определяется исходя из количества секунд, пройденных с полуночи 1 января 1970 г. всемирного координированного времени.

При переводе даты на iOS на 1 января 1970 г. и времени на 0:00, если пользователь находится, например, в Нью-Йорке, iOS решает, что время имеет отрицательную величину (-5 часов всемирного координированного времени). Происходит попытка присвоить беззнаковому типу переменной отрицательное значение, в результате чего происходит сбой в ядре операционной системы.

Решение

После возникновения сбоя в ядре iOS вернуть работоспособность устройства можно двумя способами. Первый способ — посетить техподдержку Apple (в зарубежных магазинах Apple она называется Genius Bar). На этот способ в своем сообщении намекнул vista980622, который обнаружил проблему. Специалист службы поддержки разберет устройство и переподключит аккумуляторную батарею, что приведет к сбросу системы. Второй и более простой способ — дождаться, когда батарея устройства сядет до полного отключения.