Утечки указателей через структ... Заметка
RSS Проект Ноль

Утечки указателей через структуры данных с ключами-указателями

Google Project Zero обсудил необходимость удаленных утечек ASLR для эксплуатации ошибок повреждения памяти на устройствах Apple. Это привело к открытию техники, которая могла удаленно утекать указатель без нарушений безопасности памяти или атак по времени. Метод применим к поверхностям атаки, которые десериализуют, повторно сериализуют и возвращают данные, предоставленные злоумышленником. Хотя на macOS/iOS не было выявлено немедленных реальных поверхностей атаки, техника была протестирована с использованием искусственного случая с NSKeyedArchiver. Проблема была сообщена Apple и исправлена, хотя публичная запись в трекере ошибок не была сделана из-за отсутствия продемонстрированного реального воздействия. Эта новая техника основана на предыдущих работах, связанных с атаками коллизий в хэш-таблицах. Исторически атаки HashDoS использовали наихудший сценарий производительности хэш-таблиц для вызова отказа в обслуживании. Более ранние исследования также намекали на использование коллизий хэшей для утечки адресов. Концепция HashDoS может рассматриваться как замедление злоумышленником доступа к определенным хэш-корзинам. Этот принцип был использован в Firefox для утечки адресов кучи посредством измерения времени вставки в JavaScript Map. Итерация по структурам данных с указателями в качестве ключей также может раскрывать информацию об адресах объектов. Механизмы сериализации, особенно те, которые допускают произвольные графы объектов, могут быть небезопасными. NSKeyedUnarchiver от Apple работает с белым списком десериализуемых классов. Конкретный тестовый случай направлен на утечку указателя общего кэша путем десериализации и повторной сериализации данных, предоставленных злоумышленником, с использованием NSKeyedUnarchiver. Хэш объекта-одиночки NSNull, если он не обрабатывается явно, по умолчанию равен его адресу, который хранится в общем кэше. Экземпляры NSNumber хэшируются по-разному, в зависимости от их числового значения. Словари используют коды хэшей по модулю количества корзин для управления размещением ключей.