Команда Google CVR обнаружилауязвимости в библиотеке изображений Kakadu, которая используется для обработки файлов JPEG 2000. Обнаруженные ошибки позволяют получить удаленный доступ к системе и выполнить произвольный код на сервере без доступа к исходному коду или среде выполнения.
JPEG 2000 – популярный стандарт сжатия изображений, и Kakadu – одна из ведущих библиотек для его работы. Команда CVR выявила ряд уязвимостей в механизмах обработки изображений библиотеки. Одной из ключевых сложностей при эксплуатации подобных уязвимостей является неизвестная среда выполнения, что делает традиционные методы подготовки к атаке неэффективными. Тем не менее, исследователям удалось обойти ограничения, разработав технику “условного повреждения” (Conditional Corruption), которая позволила модифицировать изображение так, чтобы оно само создавало условия для успешной атаки.
Одной из уязвимостей библиотеки Kakadu является возможность чтения произвольных файлов на сервере. Благодаря особенностям фрагментации данных в JPEG 2000, злоумышленники могут подменять фрагменты изображения байтами из локальных файлов. Это позволяет получить доступ к критически важной информации на сервере, включая файлы карт памяти и окружения процессов. Вторая уязвимость связана с записью данных за пределами выделенной области памяти (Heap Overflow). Ошибки при умножении чисел в коде библиотеки могут привести к тому, что данные будут записаны в области памяти, которые не предназначены для этого.
Эксплуатация уязвимостей осложняется тем, что в распределенной среде невозможно гарантировать, что повторные запросы будут обработаны одним и тем же сервером. Чтобы решить эту проблему, команда CVR использовала технику с использованием уникальных характеристик библиотеки Kakadu, которая позволила идентифицировать серверы, работающие с данной библиотекой, и обеспечить более точную атаку.
Кроме того, CVR разработала механизм, позволяющий обойти стандартные методы защиты, такие как Address Space Layout Randomization (ASLR), которые затрудняют предсказание адресов памяти, используемых в процессе выполнения кода. Это стало возможным благодаря чтению содержимого памяти на лету и использованию данных для корректировки последующих действий атаки.
Данное исследование демонстрирует высокую степень угрозы, которую могут представлять даже кажущиеся незначительными уязвимости в широко используемых библиотеках. Пользователям библиотеки Kakadu настоятельно рекомендуется обновиться до последней версии, чтобы избежать возможных атак, использующих обнаруженные уязвимости.