Как простое изображение обошло защиту Apple? Разбор CVE-2025-43300

Как простое изображение обошло защиту Apple? Разбор CVE-2025-43300

То, что казалось формальностью, стало мастер-ключом ко взлому.

image

Недавняя уязвимость в экосистеме Apple — CVE-2025-43300 — стала одной из самых опасных для пользователей устройств компании. Ошибка была обнаружена в модуле RawCamera.bundle, отвечающем за обработку цифровых негативов (DNG) в формате Adobe. Проблема связана с реализацией алгоритма JPEG Lossless Decompression и приводит к выходу за границы выделенной памяти. По данным Apple, эта брешь уже использовалась в реальных атаках против отдельных целей с применением крайне сложных техник.

Уязвимость затронула сразу несколько систем: iOS и iPadOS версии 18.6.2, macOS Sequoia 15.6.1, macOS Sonoma 14.7.8, macOS Ventura 13.7.8 и iPadOS 17.7.10. Компания выпустила обновления для всех затронутых платформ. Ошибка особенно опасна тем, что позволяет выполнить произвольный код без каких-либо действий со стороны пользователя — достаточно открыть вредоносный файл, например полученный через iMessage. Такая схема известна как «0-click», то есть атака происходит мгновенно и незаметно.

По данным ИБ-эксперта Мэтта Суиша, суть проблемы кроется в несоответствии метаданных и фактического содержимого изображения. В файле DNG в блоке SubIFD может быть указано, что каждый пиксель имеет два канала (SamplesPerPixel = 2), в то время как JPEG Lossless внутри того же файла содержит только один компонент (SOF3 = 1). Код декомпрессии, пытаясь обработать данные в соответствии с метаданными, выходит за пределы буфера и перезаписывает лишние области памяти. Это создаёт условия для внедрения и выполнения вредоносного кода.

Формат DNG построен на основе спецификации TIFF и включает заголовок, цепочку директорий изображений (IFD) и дополнительные поддиректории SubIFD, в которых может храниться JPEG Lossless сжатие. Сам JPEG Lossless использует специальный маркер SOF3, описывающий количество цветовых компонентов. Несовпадение между этим числом и указанным в SamplesPerPixel становится критическим звеном эксплойта.

Чтобы противостоять угрозе, был разработан инструмент ELEGANT BOUNCER на языке Rust. Его автор опирался на исследование b1n4r1b01, первым подробно описавшего способ воспроизведения ошибки. Алгоритм проверки работает в несколько шагов: парсит структуру TIFF, находит SubIFD с JPEG Lossless (Compression = 7), проверяет SamplesPerPixel и затем извлекает из JPEG фактическое количество компонентов. Если объявлено два, а внутри обнаружен один, инструмент фиксирует попытку эксплуатации CVE-2025-43300.

Реализация включает несколько ключевых частей. TIFF Reader отвечает за корректное чтение файлов с учётом порядка байтов, IFD Entry Processing обрабатывает записи директорий с разделением встроенных значений и смещений, а JPEG Parser ищет маркеры SOF3 и извлекает сведения о количестве компонентов. Такой подход позволяет выявлять специально подготовленные изображения, созданные для атаки.

Опасность уязвимости заключается не только в технической простоте эксплуатации, но и в широте возможного применения. DNG — открытый формат от Adobe, активно используемый в профессиональной фотографии, поэтому файлы этого типа не вызывают подозрений и обрабатываются автоматически. Более того, исследователь u0pattern_cs отметил, что в рамках механизма BlastDoor Apple предоставила RawCamera.bundle разрешения на сопоставление файлов с правом исполнения, что может облегчить злоумышленникам дальнейшее развитие атаки после первоначального внедрения.

Для защиты рекомендуется немедленно обновить устройства до исправленных версий iOS, iPadOS и macOS, а также использовать дополнительные меры: проверять входящие файлы перед обработкой, отключать автоматическое отображение превью изображений из ненадёжных источников и при необходимости применять ELEGANT BOUNCER. Инструмент распространяется в открытом доступе и позволяет проверить подозрительные DNG-файлы. Для тестирования можно воспользоваться инструкцией по сборке из репозитория GitHub.

Примерно воспроизвести атаку можно изменением отдельных байтов в настоящем DNG: корректировка значения SamplesPerPixel и числа компонентов в SOF3 достаточно, чтобы создать файл, вызывающий сбой. Эти изменения подчёркивают, насколько тривиальные на вид несоответствия могут оборачиваться критическими последствиями для безопасности.

CVE-2025-43300 иллюстрирует опасность сложных форматов, сочетающих несколько стандартов, и демонстрирует, как доверие к метаданным может подорвать защиту даже самых закрытых экосистем. Ошибка также напоминает, что 0-click-атаки продолжают оставаться одним из самых изощрённых и угрожающих инструментов для кибершпионажа.