Уязвимость в Arm Mali GPU дравйвере(пост про оную) является примером современного эксплойта ядра Android, который не только побеждает передовые аппаратные средства защиты (такие как MTE), но и аккуратно включается в full-chain атаки: "The exploit rarely fails and even if it does, it does not normally corrupt or crash the system".
Эксплойт для Pixel 8(c включенным kernel MTE).
После прочтения выделил следующие "инсайды(по большей части общеизвестные вещи)":
Эксплойт для Pixel 8(c включенным kernel MTE).
После прочтения выделил следующие "инсайды(по большей части общеизвестные вещи)":
- Не стоит забывать при аудите драйверов про управление жизненным циклом объектов и ресурсов, ведь необычные потоки могут приводить ресурсы в небезопасное состояние. Как пример несоответствия жизненного цикла: bind vs unbind по-прежнему являются "золотыми", даже с полными memory-safety митигейшинами
- kbase_mem_pool пропускают глобальные митигейшины
- Драйверы GPU являются одними из немногих интерфейсов ядра, доступных для непривилегированных приложений на Android
- Использование insert_pfn маппинга означало, что ни один помеченный указатель не разыменовывался, что позволяло избежать проверки тега(предоставляет доступ к raw PFN для пользователей)
- Стоит учитывать поведение целевого аллокатора, понимание того, когда освобожденное аллоцирование фактически возвращается в систему, а не кэшируется в пуле, может быть разницей между крашем и успешным эксплойтом