
Целочисленное переполнение в обработке WebP в Apple ImageIO (macOS/iOS)
Уязвимость целочисленного переполнения в фреймворке ImageIO от Apple при разборе изображений WebP, приводящая к выходу за границы памяти при обращении к ней.
Полный разбор — Подробный анализ первопричины с прохождением по дизассемблированному коду.
Целочисленное переполнение возникает при вычислении количества байт в строке во время обработки повреждённых изображений WebP. Переполнение приводит к выделению буфера меньшего размера, чем требуется, который впоследствии перезаписывается при декодировании изображения.
Обработка специально созданного изображения WebP может привести к выполнению произвольного кода в контексте любого приложения, использующего ImageIO (Safari, Просмотр, Почта, Сообщения, Быстрый просмотр и т. д.).
| Затронуто | Исправлено | |
|---|---|---|
| macOS | Monterey < 12.4 | 12.4 (май 2022) |
| iOS / iPadOS | < 15.5 | 15.5 |
| tvOS | < 15.5 | 15.5 |
| watchOS | < 8.6 | 8.6 |
Протестировано на macOS Monterey 12.0.1 и iOS 15.1
Соберите и запустите стенд:
./build_harness_standalone.sh
./harness_standalone intoverflow.webp
Либо запустите через браузер, раздав trigger.html, или просто откройте файл напрямую:
open intoverflow.webp
Process: harness_standalone [12345]
Exception Type: EXC_BAD_ACCESS (SIGSEGV)
Exception Codes: KERN_INVALID_ADDRESS at 0x...
Thread 0 Crashed:
0 libsystem_platform.dylib _platform_memset_pattern16 + ...
1 CoreGraphics CGSColorDataMakeCompositor + ...
2 CoreGraphics ripc_RenderImage + ...
3 CoreGraphics ripc_DrawImage + ...
4 ImageIO ...