Defeating KASLR by doing nothing at all
Исследователи Project Zero обнаружили уязвимость в защите KASLR на устройствах Android с процессорами arm64. Оказалось, что из-за поддержки горячего подключения памяти (memory hotplug) линейное отображение ядра больше не рандомизируется, а PHYS_OFFSET всегда имеет фиксированное значение 0x80000000. На Pixel-телефонах загрузчик дополнительно распаковывает ядро по одному и тому же физическому адресу (0x80010000) при каждой загрузке, что делает возможным статическое вычисление виртуальных адресов для любых данных ядра.
Эта уязвимость позволяет злоумышленникам с примитивом для произвольной записи обходить KASLR без сложных техник утечки адресов. Исследователь Seth Jenkins продемонстрировал, как с помощью формулы phys_tovirt(x) = ((x) - 0x80000000) | 0xffffff8000000000 можно точно вычислять виртуальные адреса для ядерных структур, таких как modprobe_path. Команда разработала инструмент bpf_arb_read для чтения экспортируемых переменных ядра, что упрощает эксплуатацию этой уязвимости.
Комментарии (7)
- Hendrikto сообщил о двух проблемах: отсутствии рандомизации линейного отображения и статичном физическом адресе загрузки ядра в Pixel, но обе считаются ожидаемым поведением.
- Google Pixel может добавить рандомизацию физических адресов ядра позже, но конкретных планов по устранению проблем нет.
- i-con указывает на параллель с уязвимостью в KVM (проект Rain) и сомневается в необходимости постоянного отображения всей физической памяти.
Introduction to GrapheneOS 💬 Длинная дискуссия
Что такое GrapheneOS
Android для Google Pixel, заточенный под безопасность и приватность. Работает только на Pixel 8/9 (7 лет обновлений).
Профили
- Разные пользователи = изолированные шифрованные контейнеры.
- Можно полностью выключить профиль, тогда его приложения не работают в фоне.
- Переключение: тянем шторку → иконка внизу → PIN.
Google
Play Services ставятся в 1 клик из собственного магазина GOS; можно жить без Google вообще.
Установка
С браузера за 15 минут с Linux/Win/Mac; проверка образа после загрузки через TPM. OTA-обновления автоматом.
Разрешения
Сеть, камера, микрофон и т.д. – отдельно для каждого приложения и профиля. Удобно ставить апп в «владельца» без сети, потом клонировать туда, где нужно.
Производительность
Без графического shell, чистый AOSP + hardened ядро: быстрее stock-Pixel и без рекламы.
Безопасность
- Песочницы приложений, отключение метаданных Bluetooth/Wi-Fi, эксплойт-защита памяти, авто-перезагрузка если загрузчик разблокирован.
- Возможность показать «proof of boot» – что прошивка не тронута.
Мой сценарий
1 профиль – без сети, 2 – VPN+FIDO, 3 – SIM+Signal, 4 – камера. Переключаюсь по мере надобности.
Девайс
Pixel 8a, 8 ГБ ОЗУ, 256 ГБ ПЗУ, цена ~500 €, заряд 1-2 дня, камера отличная.
Итог
GrapheneOS = Pixel + годы обновлений + контроль над каждым приложением. Если нужен безопасный Android – бери Pixel и ставь GOS.
Комментарии (200)
- GrapheneOS вызывает споры: кто-то хвалит «без-глючность» и песочницы, кто-то ругает отказ от root и «кастрюлю» с профилями.
- Покупка Pixel для GOS в США часто сопровождается требованием персональных данных; часть пользователей платит наличными и вводит фейки.
- Главные плюсы: сильное разграничение прав приложений, отключение Google Play, обновления без глюков, возможность мульти-профилей и VPN-наблюдения.
- Главные минусы: нет автозаписи звонков, сложность переключения профилей, проблемы с RCS/Fi/банковскими и платёжными приложениями, отсутствие root «из коробки».
- Часть комментаторов считает, что GOS всё-таки уменьшает утечки к Google, даже если сервисы Google всё же нужны; альтернативы — /e/OS, рут-образы или полный отказ от смартфона.