В плане безопасности iOS 6 была намного надежнее, чем iOS 7. Такой вывод сделал сотрудник агентства Azimuth Security Таржей Мандт (Tarjei Mandt). Существует  целый класс атак, целью которых является область памяти, выделенная для исполнения кода. Например, искусственное переполнение буфера памяти. Этим, в частности, можно воспользоваться для джейлбрейка. Чтобы обезопасить iOS от таких атак, в iOS 6, а затем и iOS 7, используется рандомизация карты ядра. Если опустить технические подробности, рандомизация подчиняется генератору случайных чисел. Таким образом, действенность этой меры очень сильно зависит от того, насколько непредсказуемые значения выдает генератор. И вот тут-то iOS 7.0.x и iOS 7.1 показали себя не с лучшей стороны.

В iOS 6 генератор случайных чисел использовал данные от системных часов, что позволяло получить не самые случайные, но все-таки довольно разнообразные значения. В iOS 7 инженеры Apple решили оптимизировать работу генератора, теперь он использует данные из четырех источников, обрабатывая их по определенному алгоритму. Вот в этом-то алгоритме и скрыт изъян. По утверждению Таржея Мандта, алгоритм выдает ограниченный набор повторяющихся значений, остается только вычислить правильные методом простого перебора. А получив доступ к ядру, хакер может “спокойно” провести общеизвестные атаки.

Исследователь подчеркивает, что на сегодняшний день ему не известно ни одного случая использования найденной им уязвимости, но потенциально она очень опасна. После доклада Тарджея (текст в формате PDF) на конференции безопасности CanSecWest, к нему подошел представитель Apple, выглядевший (по словам самого Тарджея) “очень обеспокоенным”. Тем не менее, никаких официальных заявлений от купертиновцев не последовало.

[azimuthsecurity]