Насколько быстро закрывают серьезные уязвимости

Один из самых интересных и самых опасных багов в смартфонах Android и проблемы с его закрытием.

Насколько быстро закрывают серьезные уязвимости

Летом 2022 года специалист по информационной безопасности Дэвид Шютц возвращался домой, проведя сутки в пути. Его смартфон Google Pixel 6 ожидаемо был почти разряжен: к моменту, когда Дэвид оказался наконец у себя дома, индикатор заряда показывал 1%. Естественно, телефон выключился посреди набора сообщений в мессенджере. Исследователь нашел зарядку, включил телефон, но продолжить общение не смог — требовалось ввести PIN-код от SIM-карты. Сказалась усталость от путешествия, Дэвид три раза ввел неправильный PIN. В таком случае требуется ввести еще один секретный код PUK. После введения этого кода Дэвид увидел приглашение для логина с помощью отпечатка пальца. А после того как отпечаток был распознан, телефон завис.

После перезагрузки телефона у вас обычно нет возможности разблокировать его с помощью отпечатка пальца. Требуется код разблокировки.

После перезагрузки телефона у вас обычно нет возможности разблокировать его с помощью отпечатка пальца. Требуется код разблокировки. Источник

Любой другой человек на месте Дэвида списал бы все эти странные события на глюки софта, перезагрузил бы телефон еще раз и продолжил заниматься своими делами. Исследователь, построивший карьеру на анализе неправильного поведения программ и устройств, решил докопаться до истины — почему телефон не попросил ввести обязательный после перезагрузки код разблокировки. После нескольких неудачных попыток Дэвид понял, что перезагрузка в данном случае — вообще лишнее звено. Что, если попробовать так: на заблокированном смартфоне вынимаем SIM-карту, вставляем обратно, три раза вводим неправильный PIN-код, вводим PUK-код… Что произойдет? А произошло то, что таким образом можно полностью обойти экран блокировки телефона! Историю обнаружения бага Дэвид Шютц подробно описал в своем блоге, но если вам кажется, что в Google оперативно решили проблему, то… Все произошло не совсем так. Грандиозная дыра в безопасности угрожала множеству смартфонов на базе Android (версии с 11-й по 13-ю) с июня по ноябрь, почти полгода!

Практическая демонстрация обхода экрана блокировки при помощи SIM-карты

Как так вообще получилось?

Уязвимость, по сути, позволяет обойти экран блокировки, получить доступ ко всем данным на телефоне, не зная секретный код. При этом для разблокировки не требуется какой-то сложный механизм атаки. Не надо подключать к смартфону какие-то внешние устройства. Не требуется искать новую уязвимость в ПО. Достаточно вынуть SIM-карту, вставить ее обратно (атакующий может использовать свою собственную), три раза ввести неправильный код, ввести PUK-код, поменять PIN, и вы получаете доступ к телефону. Единственное условие: телефон должен быть включен и хотя бы один раз до этого разблокирован владельцем.

Уязвимый код находится в той части Android, которая распространяется свободно, исходные коды может посмотреть любой желающий. Из-за этого можно достоверно установить, как вообще сложились условия для такой достаточно простой ошибки. В смартфонах Android существует несколько «экранов блокировки». Это может быть экран ввода секретного кода, экран для ввода отпечатка пальца, окно для ввода PIN-кода от SIM-карты. Успешный ввод одного из этих кодов раньше просто вызывал функцию, закрывающую очередной экран блокировки, не важно какой. Вся система работала нормально, не считая экрана блокировки для ввода PUK-кода. Если его ввести, функция «закрыть экран блокировки» вызывалась два раза. Вместо ожидаемого экрана для ввода отпечатка пальца телефон разблокировался. Проблема была решена при помощи достаточно серьезных изменений в коде Android, в результате чего каждый экран блокировки управляется независимо.

Бюрократия против безопасности

Так почему на устранение серьезной уязвимости ушло почти полгода? Дэвид Шютц отправил описание уязвимости через сервис bug bounty компании Google. Согласно правилам этой компании, за обнаруженную уязвимость, позволяющую обходить экран блокировки на многих (или даже на всех) устройствах, обещано очень большое вознаграждение — до ста тысяч долларов. Вместо денег Дэвид получил несколько недель молчания, а потом… его заявку отклонили как дублирующую — кто-то проинформировал Google об этой уязвимости раньше.

Дэвид смирился с тем, что денег не будет, но тем временем уже наступил сентябрь (шел третий месяц с момента отправки информации об уязвимости), и он был уверен, что уязвимость исправлена в очередном наборе патчей. Но нет — с установленным сентябрьским апдейтом его телефон все также позволял обойти блокировку при помощи трюка с SIM-картой. Тогда же, в сентябре, проходило мероприятие Google для исследователей по безопасности. На нем Дэвид лично продемонстрировал баг разработчикам компании. И только после этого в корпорации что-то сдвинулось с места, и уязвимость была закрыта в ноябрьском обновлении Android.

Оказалось, что даже если более ранний багрепорт и существовал, в Google на него вообще никак не отреагировали. Не было реакции и на сообщение Дэвида в июне 2022 года. Только личная встреча с разработчиками помогла закрыть уязвимость. Дэвид Шютц в итоге получил выплату в размере 70 тысяч долларов. За внимательность и счастливый случай, позволивший найти серьезный баг.

Цена безопасности

Как пользователи смартфонов мы рассчитываем, что хотя бы критические баги разработчики допускают редко, закрывают быстро и вообще делают их приоритетными. История с обходом блокировки на смартфонах Android показывает, что так происходит не всегда. Начиналось все хорошо: уязвимость нашел white-hat-исследователь. Он не стал продавать ее брокерам уязвимостей на черном рынке, где она могла быть использована для шпионажа, а сообщил производителю. Компании Google оставалось только оперативно закрыть дыру, но здесь начались проблемы. Для предприятий, организующих работу с внешними специалистами по безопасности при помощи программы bug bounty, это повод задуматься — а достаточно ли выделено ресурсов для своевременного исправления ошибок?

Советы

Как отключить слежку в iOS?

У вас есть iPhone, iPad или iPod? Потратьте несколько минут на настройку служб геолокации, чтобы сэкономить заряд батареи и сохранить конфиденциальность перемещений.