Как обойти экран блокировки в Android 5.x

Специалист по безопасности из Техасского университета в Остине Джон Гордон (John Gordon) опубликовал видео с демонстрацией взлома ОС Android 5.x. Найденная им уязвимость позволяет обойти парольную защиту экрана блокировки «голыми руками» за несколько минут.

Суть методики проста и сводится к вызову ошибки сначала в модуле пользовательского интерфейса, а затем во встроенном приложении «камера». После её аварийного завершения блокировка снимается, и пользователь попадает на домашний экран. Начиная с отметки 02:45 в демонстрационном ролике ниже, можно сразу перейти к моменту появления ошибки в приложении «камера».
 



Аварийное завершение приложения происходит всякий раз, когда оно пытается обработать большой или нехарактерный для него поток данных. Когда телефон заблокирован, у пользователя остаётся возможность использовать камеру. Разработчик сделал это для того, чтобы вы не упустили важный момент, вводя пароль.

Помимо камеры с заблокированного телефона доступен ввод номера службы спасения. Это тем более понятная необходимость: когда речь идёт о жизни и смерти, на счету каждая секунда. Единственное, в чём ошиблись программисты Google, это в реализации данных функций.

Вместо короткого номера службы экстренной помощи пользователь может ввести в появляющемся поле набор произвольных символов длиной до десяти тысяч знаков. Гордон просто набрал десяток звёздочек и копировал/вставлял их через буфер обмена, удваивая длину строки за каждую итерацию. На одиннадцатом повторе лимит был исчерпан, и команды выделения/вставки больше не работали. После этого он скопировал полученную строку в буфер обмена ещё раз и запустил камеру.

Обход экрана блокировки в ОС Android v.5.x, этап 1Обход экрана блокировки в ОС Android v.5.x, этап 1

В режиме съёмки у смартфона можно вытянуть меню верхней панели, в котором есть иконки быстрого переключения режимов и ярлык настроек. Однако при работающей блокировке все они неактивны. При попытке войти в настройки вновь появляется окно ввода пароля. Гордон проделал с ним прежний трюк: вставил ранее скопированную строку (около 10 килознаков) и удваивал её несколько раз через буфер обмена до тех пор, пока графический интерфейс не вылетел с ошибкой, открывая находившуюся в фоне камеру в полноэкранном режиме.

Гордон добил защиту Android, нагружая камеру частыми снимками, постоянной перефокусировкой и зуммированием. Расходуя свободную память, она тормозила всё сильнее, пока в какой-то момент не наткнулась на оставшиеся от UI данные (строку с десятками тысяч звёздочек). В этот момент она закрылась с ошибкой и Гордон получил доступ на разблокированный домашний экран.

Обход экрана блокировки в ОС Android v.5.x, этап 2
Обход экрана блокировки в ОС Android v.5.x, этап 2

Эксперимент проводился на Nexus 4 с Android 5.1.1. Способ получился грубый и сравнительно долгий в реализации. Гордону понадобилось около восьми минут, в течение которых он неустанно мучал буфер обмена и камеру. Использование аппаратных клавиш для съёмки значительно ускоряет процесс.

Исследователь подробно описал обнаруженную брешь в системе безопасности Android 5.x на университетском сайте после того, как появился исправляющий её патч. Также она была добавлена в базу Mitre и считается общеизвестной.

Проблема в том, что у Google нет единого механизма обновлений, который мог бы распространить его на все устройства. Всего-то требуется добавить в модуль Keyguard одну строку с ограничением длины (android:maxLength=»500″), но многие производители осуществляют поддержку сами и не спешат выпускать из-за каждого бага новую прошивку. Поэтому до сих пор остаётся значительное количество уязвимых смартфонов и планшетов.

Поскольку модуль Keygard работает только с паролями, другие методы аутентификации (пин-код / графический ключ, распознавание лица и т.д.) не подвержены данной уязвимости. Также она устранена в Android 5.1.1 build LMY48M и более свежих сборках.