Опубликован метод обхода ограничений загрузчика игровой приставки Nintendo Switch
24 апреля 2018 года
Исследователи безопасности из групп fail0verflow и ReSwitched раскрыли информацию о методе эксплуатации уязвимости в игровой приставке Nintendo Switch, позволяющем обойти механизм верифицированной загрузки и запустить на устройстве любой код, в том числе установить Linux, модифицировать штатную прошивку или организовать выполнение нелицензионных игр.
Уязвимость затрагивает аппаратную платформу NVIDIA Tegra X1 (Tegra210), которая используется в приставке. Для загрузки доступно два работающих прототипа эксплоита и специализированная сборка Linux для установки на Nintendo Switch (возможна двойная загрузка Linux и Switch OS). В июне также планируется выпустить кастомизированный вариант штатной прошивки на базе FreeBSD, который развивается под кодовым именем Atmosphere.
Примечательно, что уязвимость невозможно устранить через обновление прошивки, так как проблема присутствует в коде загрузчика Tegra Recovery Mode (RCM), находящегося в недоступном для изменений ПЗУ. Исправление может быть представлено только компанией NVIDIA на уровне производства новых SoC Tegra X1. Программным путём модифицировать загрузчик на уже выпущенных устройствах невозможно. По заявлению одного из авторов эксплоита, проблема не специфична для Tegra X1 и также проявляется на другх SoC NVIDIA семейства Tegra.
Эксплуатация сводится к перезагрузке устройства в режиме USB Recovery и инициировании переполнения буфера в USB-стеке через передачу определённых USB-команд. Для перехода в режим USB Recovery требуется закоротить два контакта (7 и 10) в правом разъёме Joy-Con и перезагрузить устройство удерживая кнопки Volume Up и Power.
Проблема вызвана использованием в USB-стеке команды memcpy для копирования данных с указанием размера, значение которого берётся из поля USB-запроса, которое может быть изменено атакующим. Подобрав аккуратно данные и размер для перезаписи буфера можно добиться сохранения своих данных в область исполняемого стека и выполнения кода в контексте BPMP (Boot and Power Management processor), на стадии до сброса привилегий и начала верификации прошивки.
Источники
править
Любой участник может оформить статью: добавить иллюстрации, викифицировать, заполнить шаблоны и добавить категории.
Любой редактор может снять этот шаблон после оформления и проверки.
Комментарии
Если вы хотите сообщить о проблеме в статье (например, фактическая ошибка и т. д.), пожалуйста, используйте обычную страницу обсуждения.
Комментарии на этой странице могут не соответствовать политике нейтральной точки зрения, однако, пожалуйста, придерживайтесь темы и попытайтесь избежать брани, оскорбительных или подстрекательных комментариев. Попробуйте написать такие комментарии, которые заставят задуматься, будут проницательными или спорными. Цивилизованная дискуссия и вежливый спор делают страницу комментариев дружелюбным местом. Пожалуйста, подумайте об этом.
Несколько советов по оформлению реплик:
- Новые темы начинайте, пожалуйста, снизу.
- Используйте символ звёздочки «*» в начале строки для начала новой темы. Далее пишите свой текст.
- Для ответа в начале строки укажите на одну звёздочку больше, чем в предыдущей реплике.
- Пожалуйста, подписывайте все свои сообщения, используя четыре тильды (~~~~). При предварительном просмотре и сохранении они будут автоматически заменены на ваше имя и дату.
Обращаем ваше внимание, что комментарии не предназначены для размещения ссылок на внешние ресурсы не по теме статьи, которые могут быть удалены или скрыты любым участником. Тем не менее, на странице комментариев вы можете сообщить о статьях в СМИ, которые ссылаются на эту заметку, а также о её обсуждении на сторонних ресурсах.