Эксперты Google рассказали об уязвимостях в операционных системах Apple
Специалисты Google Project Zero обнаружили множество уязвимостей в составе фреймворка Image I/O, который используется для парсинга изображений и является частью iOS, macOS, tvOS и watchOS.
В общей сложности был выявлено 14 уязвимостей, шесть из которых затрагивают непосредственно Apple Image I/O, а еще восемь проблем связаны с опенсорсной библиотекой OpenEXR, которая используется для парсинга изображений EXR и поставляется вместе с Image I/O.
Исследователи пишут, что ни один из обнаруженных багов, а также представленные proof-of-concept эксплоиты для них, не могут использоваться для захвата контроля над уязвимым устройством, однако подчеркивается, что эксперты не изучали этот вопрос внимательно, так как их цель заключалась не в этом.
Известно, что эксплуатировать найденные проблемы можно посредством популярных приложений для обмена сообщениями. Для этого достаточно послать потенциальной жертве специально созданный файл. При этом исследователи признают, что некоторые уязвимости, скорее всего, можно использовать для удаленного выполнения кода, причем без какого-либо взаимодействия с пользователем. Просто команда Google Project Zero не углублялась в изучение этого аспекта проблемы.
Первой из уязвимостей, о которой сообщали Apple, было переполнение буфера, влияющее на использование libTiff в Apple Image I/O. Этот баг пока не получил собственного идентификатора CVE.
Также были обнаружены: out-of-bounds чтение хипа при обработке изображений DDS (CVE-2020-3826) или изображений JPEG (CVE-2020-3827) с недопустимыми параметрами размера; off-by-one ошибка в логике декодирования PVR (CVE-2020-3878) и связанный с этим баг в PVR-декодере (CVE-2020-3878); а также out-of-bounds чтение при обработке изображений OpenEXR (CVE-2020-3880).
Последняя проблема, по сути, возникла в сторонней библиотеке OpenEXR, поставляемой вместе с Image I/O. Интересно, что данную уязвимость не удалось воспроизвести в новейшей версии OpenEXR, то есть Apple, похоже, использовала устаревшую версию библиотеки. В итоге исследователи решили сначала сообщить о проблеме напрямую Apple, а не авторам OpenEXR.
Обнаружив это баг, специалисты решили уделить больше внимания самой OpenEXR и быстро выявили еще порцию уязвимостей: out-of-bounds запись (CVE-2020-11764); out-of-bounds чтение std::vector (CVE-2020-11763); out-of-bounds memcpy (CVE- 2020-11762); out-of-bounds чтение данных элементов изображения и других структур данных (CVE-2020-11760, CVE-2020-11761, CVE-2020-11758); out-of-bounds чтение в стаке (CVE -2020-11765); а также переполнение целочисленного значения (CVE-2020-11759).
Исследовательская группа сообщает, что к настоящему моменту все уязвимости уже были исправлены. Шесть проблем в коде Image I/O получили исправления в январе и апреле, тогда как баги в составе OpenEXR были устранены в феврале, с релизом версии 2.4.1.
Эксперты надеются, что их анализ послужит отправной точкой для дальнейшего изучения Image I/O, а также других компонентов, использующихся для обработки изображений и мультимедиа на устройствах Apple. Дело в том, что фреймворк Image I/O играет важную роль в экосистеме приложений Apple, поставляется в составе iOS, macOS, tvOS и watchOS, а значит, предоставляет обширный ландшафт для различных атак, и должен быть защищен как можно лучше. При этом исследователи подчеркивают, что явно смогли обнаружить далеко не все слабые места Image I/O, так как применяли фаззинг, не имея доступа к исходным кодам. В Google Project Zero намекают, что такой анализ лучше осуществлять самим разработчикам, у которых есть доступ к исходникам.
Также аналитики считают, что в будущем Apple стоит дать разработчикам приложений возможность самостоятельно ограничивать типы форматов изображений, которые могут обрабатываться с помощью Image I/O. Это должно помешать экзотическим форматам файлов доставлять малварь посредством Image I/O.