Skip to content
KitploitKITPLOIT
ИнструментыБлог
Отправить
ИнструментыБлог
Отправить

Инструменты для хакинга, пентеста и кибербезопасности — ваш арсенал защиты!

Kitploit — это каталог инструментов для хакинга, кибербезопасности и пентестинга. Находите последние обновления проектов для поиска уязвимостей, анализа систем, автоматизации тестирования и усиления вашей безопасности.

··Ленты·Контакты·Конфиденциальность·© 2026 Kitploit

Каталог инструментов

Категории

Все категории
Loading categories
PS5-UMTX-Jailbreak — Эксплойт ядра на основе WebKit и джейлбрейк для PS5 | Kitploit
Инструменты/GitHubGitHub/ps5dev/ps5-umtx-jailbreak
Повышение привилегийЭксплуатацияПост-эксплуатацияЭксплуатация Бинарных Файлов
GitHubps5dev/ps5-umtx-jailbreak

PS5-UMTX-Jailbreak

Эксплойт ядра на основе WebKit и джейлбрейк для PS5

Репозиторий
2473911 год назадПроверено Kitploit

Популярное

Смотреть все →

Откройте для себя самые используемые инструменты нашего сообщества.

Изучить все инструменты

Просмотрите нашу коллекцию инструментов

Смотреть все инструменты →
Поделиться

PS5 UMTX Jailbreak


Краткое описание

Этот репозиторий содержит WebKit ROP-эксплойт для уязвимости гонки use-after-free в UMTX (CVE-2024-43102), сообщённой Synacktiv. По сути, это порт стратегии эксплойта fail0verflow и flatz. Он злоупотребляет UAF для получения чтения/записи в стек потока ядра и использует чтение и запись через pipe для создания (не совсем идеального) примитива произвольного чтения/записи в ядре. Затем это чтение/запись улучшается до более стабильного примитива на основе пары ipv6-сокетов и пары pipe, который можно передавать пейлоадам так же, как это было возможно с предыдущим эксплойтом ядра PS5 через IPV6.

Сама страница представляет собой урезанную и модифицированную версию PS5 Exploit Host от idlesauce, поскольку там уже была проделана работа по интеграции psfree с моим ранее используемым стилем кода. Этот хост — также мой личный выбор для запуска всего: он очень плавный и включает полезные пейлоады. Надеюсь, в ближайшем будущем его обновят для поддержки этого эксплойта <3.

В конечном итоге запускается загрузчик пейлоадов, который слушает порт 9021 в ожидании ELF-пейлоадов. Я рекомендую PS5 Payload Dev SDK, поскольку он должен быть полностью совместим с этим загрузчиком, когда будут добавлены смещения ядра.

Эта уязвимость затрагивает прошивки с 1.00 по 7.61, однако на FW >= 3.00, похоже, действуют дополнительные меры защиты, требующие доработки эксплойта. Поскольку меня в основном интересуют только младшие прошивки, этот эксплойт пока не поддерживает FW >= 3.00. Кроме того, уязвимость WebKit, которую мы используем в связке, была исправлена в 6.00, поэтому для этих систем потребуется другой WebKit-эксплойт, обеспечивающий чтение/запись в пользовательском пространстве. Опять же, поскольку я не сосредоточен на старших прошивках, эта часть пока не завершена.

Важные замечания

  • На 3.00+ надёжность ниже, и выполнение может занять больше времени: если вы застряли на «triggering race» на некоторое время, закройте браузер и повторите попытку.
  • На 5.00+ загрузчик ELF сейчас не работает, поскольку мы больше не можем корректно вызывать dlsym; требуется доработка payload SDK.

В настоящее время поддерживаются следующие прошивки:

  • 1.xx [1.00, 1.01, 1.02, 1.05, 1.10, 1.11, 1.12, 1.13, 1.14]
  • 2.xx [2.00, 2.20, 2.25, 2.26, 2.30, 2.50, 2.70]
  • 3.xx [3.00, 3.20]
  • 4.xx [4.00, 4.02, 4.03, 4.50, 4.51]
  • 5.xx [5.00, 5.02, 5.10, 5.50]

Что включено

  • Получает произвольное чтение/запись в ядре
  • Включает меню отладочных настроек (примечание: чтобы увидеть его, нужно полностью выйти из настроек и зайти снова)
  • Получает права root и выходит из песочницы/изоляции
  • Запускает ELF-загрузчик Джона Торнблома на порту 9021 для выполнения пейлоадов (на FW < 5.00)

Ограничения

  • Этот эксплойт обеспечивает чтение/запись, но не выполнение кода. Причина в том, что сейчас мы не можем дампнуть код ядра для поиска гаджетов, так как страницы .text ядра помечены как eXecute Only Memory (XOM). Попытка прочитать указатели на .text ядра вызовет панику!
  • Из-за вышесказанного, а также из-за того, что гипервизор (HV) обеспечивает защиту ядра от записи, этот эксплойт также не может устанавливать какие-либо патчи или хуки в пространство ядра.
  • Присутствует и применяется тонкогранулярный Control Flow Integrity (CFI) на основе Clang.
  • SMAP/SMEP (Supervisor Mode Access Prevention/Execution) нельзя отключить из-за HV.
  • Для FW >= 6.00 требуется новый WebKit-эксплойт, поэтому эта версия не поддерживается.

Как использовать

  1. Настройте fakedns через dns.conf, указав для manuals.playstation.net IP-адрес вашего ПК
  2. Запустите поддельный DNS: python fakedns.py -c dns.conf
  3. Запустите HTTPS-сервер: python host.py
  4. Зайдите в расширенные сетевые настройки PS5, укажите в качестве основного DNS IP-адрес вашего ПК, а вторичный оставьте 0.0.0.0
    1. Иногда руководство всё равно не загружается, и требуется перезагрузка; не знаю, почему так — это очень странно
  5. Перейдите в руководство пользователя в настройках, примите предупреждение о ненадёжном сертификате и запустите
  6. Необязательно: раскомментируйте код дампа .data ядра и запустите скрипт сервера дампа (примечание: адрес/порт нужно подставить в exploit.js)

Планы на будущее

  • Обновить стратегию эксплойта для FW >= 3.xx с учётом мер защиты
  • Добавить смещения для дополнительных (младших) прошивок
  • Добавить WebKit-эксплойт для FW >= 6.00.

Использование ELF-загрузчика

Чтобы использовать ELF-загрузчик, запустите эксплойт до завершения. По завершении он запустит сервер на порту :9021. Подключитесь и отправьте ваш ELF на PS5 по TCP — он будет выполнен. Этот загрузчик должен продолжать принимать и выполнять пейлоады даже после выхода из браузера.

Заметки о стратегии эксплойта

Первоначальное double free

Стратегия этого эксплойта во многом взята у fail0verflow и flatz. См. статью chris@accessvector для получения дополнительной информации об уязвимости. При эксплуатации она, по сути, даёт нам double free. Мы можем использовать его, чтобы перекрыть vmobject стека ядра с vmobject mmap-отображения и получить доступ к стеку потока ядра. Эта очень мощная возможность позволяет читать/записывать произвольные указатели ядра в стеке, что даёт обход ASLR и возможность создавать примитивы. Поток, к стеку которого у нас есть доступ, мы будем называть потоком-жертвой.

Получение произвольного чтения/записи

Создав pipe и заполнив его буфер в главном потоке, а затем попытавшись записать в него из потока-жертвы, мы заставим поток-жертву заблокироваться в ожидании освобождения места в буфере. В это время мы можем через окно в стек ядра изменить указатели iovec на указатели ядра и установить флаги так, чтобы они обрабатывались как адреса ядра. Затем, читая pipe в главном потоке, мы получаем произвольное чтение в ядре.

Аналогично, заставив поток-жертву читать из pipe, он заблокируется в ожидании входящих данных. Затем мы снова перезаписываем указатели iovec, превращая их в указатели ядра, и записываем данные в главном потоке, получая произвольную запись в ядре.

Улучшение произвольного чтения/записи

На этом этапе у нас есть произвольное чтение/запись без реальных ограничений, но для его работы нам приходится использовать многопоточность и блокировки, что не идеально. Затем мы используем R/W для перебора таблицы файловых дескрипторов процесса и перекрываем pktopts двух IPV6-сокетов. После этого мы можем создать ещё одно произвольное чтение/запись через sockopt IPV6_PKTINFO. Этот примитив чтения/записи снова не идеален, так как он ограничен по размеру и содержимому из-за особенностей базового сокетного параметра. Этот шаг мы сохраняем в основном для повторения сценария IPV6-эксплойта, на котором построено большинство пейлоадов и сопутствующих инструментов.

Более хороший примитив чтения/записи можно получить через pipe. Снова перебирая таблицу файловых дескрипторов процесса и изменяя объекты буфера pipemap, мы можем установить чтение/запись. Пара IPV6-сокетов используется как механизм управления буфером pipemap.

Исправление/обход повреждений

Если оставить всё как есть и попытаться закрыть браузер, система упадёт. Это происходит потому, что очистка процесса попытается освободить стек ядра, который уже был освобождён. Чтобы избежать этого, мы делаем две вещи:

  1. Намеренно увеличиваем счётчик ссылок на shm FD, используемый для первоначального double free, чтобы он не был освобождён при выходе из процесса
  2. Обнуляем td_kstack потока-жертвы в списке потоков процесса.

Заметки о стабильности

На FW < 3.00 этот эксплойт очень стабилен. Единственная критическая точка отказа — неудачное перекрытие vmobjects. На старших прошивках этого перекрытия сложнее добиться из-за предполагаемых мер защиты на уровне аллокатора страниц/кучи.

Благодарности / Респекты

  • fail0verflow
  • flatz
  • ChendoChap
  • SlidyBat
  • abc/psfree
  • idlesauce
  • Znullptr
  • zecoxao
  • SocracticBliss
  • John Tornblom

Discord

Те, кому интересно внести вклад в исследования/разработку для PS5, могут присоединиться к Discord-серверу, который я создал, здесь.

Скачать инструмент