Уязвимость загрузчика OnePlus 6 невозможно исправить?

13 июня, 2018, Oleg Afonin
Рубрика: «Безопасность», «Новости индустрии»
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  

Многочисленные публикации подробно осветили тот факт, что OnePlus 6 поступил в продажу с критической уязвимостью. По данным исследователей (подтверждённым самой компанией OnePlus), смартфон поставляется с загрузчиком, который даже в «заблокированном» состоянии позволяет загружать неподписанный код. Эксплуатация уязвимости выглядит предельно просто: достаточно загрузить телефон в штатный режим fastboot, откуда выполнить команду загрузки неподписанного образа (к примеру, fastboot boot unsigned.img). В устройствах, загрузчики которых не содержат критических ошибок, команда не будет отработана и выдаст сообщение об ошибке. OnePlus 6 соглашается загрузить неподписанный код:

Уязвимость загрузчика OnePlus 6

Опустим сейчас комментарии о том, что такие простейшие ошибки допускать нельзя. Опустим даже вопрос о том, как подобную ошибку могли пропустить специалисты лаборатории Google, сертифицировавшие смартфон. В конце концов, OnePlus — далеко не первая китайская компания, наплевательски относящаяся в безопасности данных своих пользователей. В нашей лаборатории побывали устройства, в которых была подобная уязвимость. Можно упомянуть Xiaomi mi4c («неразблокированный» загрузчик в ранних прошивках); все модели LeEco (у всех моделей на чипах Qualcomm существовала возможность разблокировать загрузчик путём прошивки образа от китайской версии; ирония в том, что это касалось и моделей, предназначенных для американского рынка и поставляющихся с «безопасным» загрузчиком); смартфоны Gigaset ME и ME Pro, представлявшие собой одну большую дыру в безопасности; а также небезызвестный Samsung Galaxy S7. Кроме того, в прошлом отличились смартфоны OnePlus 3 и 3t.

Сейчас нам интересно будущее. Возможно ли в принципе закрыть уязвимость такого уровня? Не спешите отвечать. Да, OnePlus «исправит» проблему в одной из следующих прошивок, но… Давайте посмотрем, как это будет.

  1. Здесь и сейчас мы имеем смартфон с уязвимым загрузчиком (bootloader) из-за простейшей ошибки разработчиков. (Кстати, ещё вопрос, разработчиков OnePlus — или Qualcomm, писавших код для поддержки новой платформы Snapdragon 845)
  2. Текущая версия загрузчика позволяет без разблокирования (и без потери данных, что важно) загружать и выполнять любой неподписанный код, не нарушая при этом процесс доверенной загрузки. Это тоже важно, т.к. потенциально позволяет осуществлять стороннему коду доступ к TEE – Trusted Execution Environment). Например – загрузить TWRP или свой собственный код, который может перебирать пароль блокировки, чтобы расшифровать данные (в смартфонах OnePlus используется пофайловое шифрование FBE, а ключ шифрования перешифрован на основе кода блокировки).
  3. В ближайшие дни OnePlus наверняка исправит загрузчик и отрапортует, что проблема решена. Даже есть вероятность, что в новом загрузчике будет предусмотрен механизм защиты от отката (если программисты не допустят очередной простейшей ошибки). Пользователи получат обновление и вздохнут спокойно. Журналисты напишут, что OnePlus в кратчайшие сроки исправили проблему. Всё замечательно?
  4. Спустя некоторое время разработчики с XDA через режим EDL (который присутствует в большинстве моделей, основанных на процессорах Qualcomm) на место нового, защищённого загрузчика запишут старый и уязвимый. Как это уже было неоднократно проделано не с одним и не с двумя устройствами, включая и устройства OnePlus. И система будет спокойно использовать уязвимый код, потому что старый загрузчик подписан настоящей цифровой подписью OnePlus. Что можно сделать с телефоном с таким загрузчиком – см. пункт 2.

Таким образом, OnePlus 6 (как и предыдущие модели) уже никогда не будет безопасным. Метод для обхода ещё не выпущенного «исправленного» загрузчика уже существует, и достаточно будет адаптировать существующий код для нового устройства. Конечно, теоретически можно отозвать цифровую подпись, которой подписан скомпрометированный загрузчик, но сделает ли это OnePlus — даже гадать не нужно.

Напоследок добавим, что пользователей, которые самостоятельно разблокируют загрузчик, ошибка не затронет. Данные останутся защищены посредством шифрования FBE, для взлома которого так или иначе потребуется узнать код блокировки смартфона. Для этого нужно будет запустить процесс перебора, который будет не очень быстрым благодаря подсистемам KeyMaster и GateKeeper.

One more thing… Если уязвимый загрузчик всё-таки писали разработчики Qualcomm, то как обстоят дела на других смартфонах, основанных на Snapdragon 845?


  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
НАШИ НОВОСТИ