
Демонстрационное приложение для перезаписи шрифтов на iOS с использованием CVE-2022-46689.
Proof-of-concept приложение для перезаписи шрифтов на iOS с помощью CVE-2022-46689.
Работает на iOS 16.1.2 и ниже (протестировано на iOS 16.1) на устройствах без джейлбрейка.
IPA доступен в разделе Releases.
Включенные шрифты:
Вы также можете импортировать пользовательские шрифты, портированные для iOS.
DejaVu Sans Condensed | DejaVu Serif | DejaVu Sans Mono | Choco Cooky

Go Regular | Go Mono | Segoe UI | Comic Sans MS

Hanna Soft + JoyPixels | Bronkoh | Noto Serif SC | Fira Sans

Автор скриншота: @ev_ynw за портированные шрифты Hanna Soft и Bronkoh, JoyPixels за шрифт эмодзи
Проблема CVE-2022-46689, насколько я знаю, позволяет перезаписать только 16383 байта из каждых 16384: последний байт страницы записать нельзя.
(Могу ошибаться)
Чтобы обойти это, я упаковываю шрифт в веб-формат WOFF2, который поддерживается на iOS. WOFF2 использует Brotli для сжатия, что позволяет мне вставлять отступы, чтобы пропустить последний байт.
Подробности см. в repackfonts/make_woff2src.sh: этот скрипт:
repackfonts/BrotliPadding.swift для распаковки WOFF2-файла и вставки отступов, чтобы пропустить 16384-й байт