
Эксплойт чтения/записи в ядре ANE для iOS 15 и macOS 12
WeightBufs — это эксплойт чтения/записи в ядре для всех устройств Apple с поддержкой Neural Engine.
Ошибки и эксплойт авторства @simo36; подробнее об уязвимостях и методах эксплуатации можно узнать из моих слайдов презентации на POC.
Эксплойт не полагается на какие-либо прописанные адреса или смещения и должен работать как есть на macOS12 вплоть до 12.4 и *OS 15 вплоть до 15.5.
Уязвимости ядра затрагивают все версии iOS 15 (вплоть до 16.0), однако обход песочницы был исправлен в iOS 15.6. В результате, чтобы снова получить рабочую связку на iOS 15.6/15.7, требуется нарушить цепочку эксплойта и применить другой обход песочницы. Хотя у меня есть другой обход песочницы, работающий вплоть до iOS 16.1, я не уверен, что методы эксплуатации ядра всё ещё применимы на iOS 15.6+.
Эксплойт объединяет 4 уязвимости, которые я обнаружил и сообщил в Apple самостоятельно:
CVE-2022-32845 : обход проверки подписи aned для model.hwx.CVE-2022-32948 : DeCxt::FileIndexToWeight() чтение за пределами границ из-за отсутствия проверки индекса массива.CVE-2022-42805 : ZinComputeProgramUpdateMutables() потенциальное произвольное чтение из-за проблемы переполнения целого числа.CVE-2022-32899 : DeCxt::RasterizeScaleBiasData() недостаточность буфера (buffer underflow) из-за проблемы переполнения целого числа.Существуют некоторые ситуации, в которых эксплойт может дать сбой:
MUTK; однако эксплойт обнаруживает сбой на ранней стадии, предотвращая крах устройства. Достаточно запустить эксплойт ещё раз — и при второй попытке он должен сработать.DEBUG_EXPLOIT_STAGE_2_KERN_PANIC и DEBUG_EXPLOIT_STAGE_3_KERN_PANIC для получения более подробной информации.WeightBufs включает заголовочные файлы фреймворка AppleNeuralEngine, созданные Элиасом Лимнеосом с помощью classdump-dyld 1.0.
WeightBufs выпущен под лицензией MIT.