3 часа назад
Разработчик Atmosphère под ником hexkyz подробно разобрал новый эксплойт для Nintendo Switch 2, в создании кот
Разработчик Atmosphère под ником hexkyz подробно разобрал новый эксплойт для Nintendo Switch 2, в создании которого участвовал искусственный интеллект.
Вот что рассказал разработчик:
• Уязвимость в системном модуле файловой системы (далее FS) обнаружили много лет назад, однако hexkyz считал её непригодной для эксплуатации. Её оставили на случай, если будущие изменения FS позволят извлечь из неё пользу.
• Главным препятствием была организация памяти FS. В куче (heap) находилось крайне мало полезных указателей. Сам метод эксплуатации тоже был известен: необходимо найти механизм создания объектов IStorage в памяти и захватить контроль над их указателями чтения и записи. В данном случае использовался BufferedStorage.
• Самой сложной задачей оказалось удержание нужных объектов в памяти достаточно долго. Все предыдущие попытки разработчиков, использовавшие другие уязвимости, заканчивались обращением к пустым участкам памяти.
• Именно здесь ИИ внёс свой главный вклад. Он придумал сложнейшую последовательность манипуляций с кучей (heap grooming), позволившую добиться нужного расположения объектов. По словам hexkyz, получившийся путём работы ИИ код - представляет собой практически нечитаемый кошмар, но он действительно работает. Перенести его на другие точки входа будет сложно, хотя вполне реально.
• После получения произвольного чтения и записи памяти (arbitrary R/W) используются уже известные методы: установка клиентского PID в значение 1, MITM-перехват загрузчика, получение чужих дескрипторов и другие техники.
• Доступ к FS позволяет извлекать практически любые бинарные файлы ниже уровня KIP: игры, приложения и системные модули, не относящиеся к KIP.
• Получить ключи шифрования или связанный с ними материал через FS невозможно.
• Дальнейшее повышение привилегий, например получение доступа к ядру, остаётся столь же сложной задачей, как и при эксплуатации любого другого системного модуля.
• При этом существует потенциальная возможность скомпрометировать другие модули KIP. По словам разработчика, есть один метод, который авторы эксплойта не рассмотрели в своей публикации и который теоретически может сработать.
• SmileBASIC совершенно необязателен для взлома. Точкой входа может стать игра для первой Switch, игра для Switch 2 или даже браузер. Эксплойт изначально создавался под SmileBASIC, поэтому многие поспешат приобрести именно его, однако уязвимость FS доступна практически повсеместно.
• В старых версиях прошивок остаются другие неопубликованные уязвимости, которые потенциально позволят продвинуться ещё глубже в систему. Например, ещё в прошивке 19 разработчики обнаружили ошибку FS, позволявшую извлекать часть содержимого памяти модуля.
• Существуют и другие закрытые уязвимости FS, но нынешняя оказалась значительно эффективнее остальных. Hexkyz допускает, что это может быть единственная возможность настолько глубоко взломать систему за очень долгое время.
• Новая цепочка эксплуатации фактически стала современным аналогом nspwn с первой Nintendo Switch. Тогда уязвимость FS аналогичным образом позволяла выполнять произвольный код.
• Теоретически эксплойт можно превратить в постоянный взлом (untethered), который не потребует повторного запуска после каждой перезагрузки. Для этого понадобится манипулировать системными сохранениями на раннем этапе загрузки. Ранее разработчики уже доказывали возможность такого подхода с другими уязвимостями.
Отдельно hexkyz объяснил, стоит ли владельцам Switch 2 обновлять прошивку.
С одной стороны, это чрезвычайно мощный эксплойт, обеспечивающий полный контроль над пользовательским уровнем системы (userland). Выше модуля FS в рамках этого уровня подняться уже нельзя. Однако всё, что находится за пределами userland, остаётся недоступным. В частности, компрометация FS никак не упрощает взлом ядра.
С другой стороны, полный контроль над userland открывает возможности для извлечения данных, модификации игр и других подобных действий. Но эксплойт, вероятнее всего, останется доступным только на прошивках до 23.0.1 включительно, поскольку Nintendo быстро устранит уязвимость.