Исследователи безопасности, работающие в Google Project Zero обнаружили серию из пяти уязвимостей в платформе Apple iOS, некоторые из которых могут быть использованы без взаимодействия с пользователем.
Четыре из этих уязвимостей были устранены с выпуском iOS 12.4 22 июля, но патч включенный в этот выпуск платформы, не устраняет пятую ошибку безопасности.
Первая из уязвимостей CVE-2019-8646, «позволяет злоумышленнику считывать файлы с удаленного устройства без взаимодействия с пользователем, как с мобильного пользователя без песочницы», объясняет Наталья Сильванович исследователь безопасности Google Project Zero.
Проблема заключается в том, что класс _NSDataFileBackedFuture может быть десериализован, даже если включено безопасное кодирование, что может привести к доступу к локальным файлам или к созданию объекта NSData с длиной, отличной от длины его байтового массива. Apple устранила уязвимость с помощью улучшенной проверки ввода.
CVE-2019-8660 вторая уязвимость является проблемой повреждения памяти, которую можно использовать без вмешательства пользователя, чтобы вызвать неожиданное завершение работы приложения или выполнение произвольного кода. Ошибка возникает при декодировании объекта класса NSKnownKeysDictionary1.
Сильванович отмечает, что экземпляр NSKnownKeysDictionary1 использует длину для выделения буфера, а длина умножается на 8 без проверки переполнения целых чисел. Затем код пытается скопировать массив значений в буфер используя не умноженную длину. Поскольку невозможно контролировать скопированные значения уязвимость сложна в реализации.
Следующие две уязвимости CVE-2019-8647 и CVE-2019-8662 представляют собой удаленные ошибки, связанные с отсутствием взаимодействия и использования после освобождения, которые могут позволить злоумышленнику вызвать выполнение произвольного кода.
Пятая уязвимость CVE-2019-8641 может позволить удаленному злоумышленнику вызвать неожиданное завершение работы приложения или выполнение произвольного кода. Исследователь не предоставил дополнительную информацию об ошибке, поскольку выпущенный патч не устраняет уязвимость.