Уязвимости в Kakadu ставят под удар миллионы серверов.
Команда Google CVR выявила серьёзные уязвимости в библиотеке Kakadu, предназначенной для работы с изображениями в формате JPEG 2000. Эта библиотека часто используется в различных крупных сервисах, включая Google, что делает проблему особенно актуальной. Обнаруженные уязвимости могут позволить злоумышленникам удалённо выполнять код (Remote Code Execution, RCE) на уязвимых серверах, что является одной из наиболее опасных угроз.
Особенности эксплуатации уязвимостей
Одной из главных сложностей при эксплуатации уязвимостей, связанных с повреждением памяти (Memory Corruption), является необходимость точного знания о целевой среде — версии бинарных файлов, операционной системы и аллокаторов памяти. Такие сведения необходимы, чтобы подготовить память системы и использовать ROP-цепочки для внедрения вредоносного кода. Поэтому подобные атаки чаще всего направлены на клиентские приложения (например, браузеры или мобильные устройства), где есть возможность детального изучения среды.
Однако в случае с серверным программным обеспечением, где у злоумышленника нет доступа к исходному коду или бинарным файлам, атака становится значительно сложнее. Особенно это касается ситуаций, когда ПО используется в распределённой среде с балансировкой нагрузки. Даже если атакующий смог победить Address Space Layout Randomization (ASLR) в одном запросе, у него нет гарантии, что следующий запрос попадёт на тот же рабочий процесс, что усложняет последовательную атаку.
Уязвимости в библиотеке Kakadu
Команда CVR сосредоточилась на библиотеке Kakadu, которая является одной из лидирующих разработок для работы с JPEG 2000. В ходе анализа были выявлены две критические уязвимости:
Метод «Условная порча»
Для успешной эксплуатации уязвимостей исследователи из Google разработали специальный метод под названием «условная порча» (Conditional Corruption). Метод позволил создать специальное изображение, которое модифицировало само себя во время процесса обработки, в зависимости от условий на сервере.
Процесс эксплуатации можно разделить на несколько этапов:
Одним из самых серьёзных препятствий при эксплуатации было то, что в распределённой среде с балансировкой нагрузки запросы могут обрабатываться разными рабочими процессами (workers). Даже если хакер получил информацию о памяти в обход ASLR, в следующем запросе процесс, обрабатывающий запрос, мог быть другим. Это означало, что данные о памяти уже не будут актуальны.
Для решения проблемы исследователи использовали технику, которая позволяла точно синхронизировать работу на одном и том же рабочем процессе. Техника основывалась на последовательных запросах, которые учитывали особенности сервера и позволяли избегать неправильного выбора процессов.
Уязвимости в библиотеке Kakadu демонстрируют, как сложные атаки на основе повреждения памяти могут быть использованы для удалённого выполнения кода в условиях ограниченных знаний о целевой среде. Благодаря методу «условной порчи» исследователи смогли преодолеть барьеры, связанные с отсутствием информации о системе, и разработать надёжный способ эксплуатации. Результаты работы подчёркивают важность регулярного обновления библиотек и применения современных методов защиты, таких как ASLR и балансировка нагрузки, которые делают эксплуатацию уязвимостей более сложной.
Гравитация научных фактов сильнее, чем вы думаете