Опубликован метод обхода ограничений загрузчика игровой приставки Nintendo Switch
Как сообщает opennet.ru исследователи безопасности из групп 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), на стадии до сброса привилегий и начала верификации прошивки.