Многочисленные публикации подробно осветили тот факт, что OnePlus 6 поступил в продажу с критической уязвимостью. По данным исследователей (подтверждённым самой компанией OnePlus), смартфон поставляется с загрузчиком, который даже в «заблокированном» состоянии позволяет загружать неподписанный код. Эксплуатация уязвимости выглядит предельно просто: достаточно загрузить телефон в штатный режим fastboot, откуда выполнить команду загрузки неподписанного образа (к примеру, fastboot boot unsigned.img). В устройствах, загрузчики которых не содержат критических ошибок, команда не будет отработана и выдаст сообщение об ошибке. OnePlus 6 соглашается загрузить неподписанный код:
Опустим сейчас комментарии о том, что такие простейшие ошибки допускать нельзя. Опустим даже вопрос о том, как подобную ошибку могли пропустить специалисты лаборатории Google, сертифицировавшие смартфон. В конце концов, OnePlus — далеко не первая китайская компания, наплевательски относящаяся в безопасности данных своих пользователей. В нашей лаборатории побывали устройства, в которых была подобная уязвимость. Можно упомянуть Xiaomi mi4c («неразблокированный» загрузчик в ранних прошивках); все модели LeEco (у всех моделей на чипах Qualcomm существовала возможность разблокировать загрузчик путём прошивки образа от китайской версии; ирония в том, что это касалось и моделей, предназначенных для американского рынка и поставляющихся с «безопасным» загрузчиком); смартфоны Gigaset ME и ME Pro, представлявшие собой одну большую дыру в безопасности; а также небезызвестный Samsung Galaxy S7. Кроме того, в прошлом отличились смартфоны OnePlus 3 и 3t.
Сейчас нам интересно будущее. Возможно ли в принципе закрыть уязвимость такого уровня? Не спешите отвечать. Да, OnePlus «исправит» проблему в одной из следующих прошивок, но… Давайте посмотрем, как это будет.
Таким образом, OnePlus 6 (как и предыдущие модели) уже никогда не будет безопасным. Метод для обхода ещё не выпущенного «исправленного» загрузчика уже существует, и достаточно будет адаптировать существующий код для нового устройства. Конечно, теоретически можно отозвать цифровую подпись, которой подписан скомпрометированный загрузчик, но сделает ли это OnePlus — даже гадать не нужно.
Напоследок добавим, что пользователей, которые самостоятельно разблокируют загрузчик, ошибка не затронет. Данные останутся защищены посредством шифрования FBE, для взлома которого так или иначе потребуется узнать код блокировки смартфона. Для этого нужно будет запустить процесс перебора, который будет не очень быстрым благодаря подсистемам KeyMaster и GateKeeper.
One more thing… Если уязвимый загрузчик всё-таки писали разработчики Qualcomm, то как обстоят дела на других смартфонах, основанных на Snapdragon 845?