3.8 KiB
Raw Blame History

WWW2Exec - sips ICC Profile Out-of-Bounds Write (CVE-2024-44236)

{{#include ../../banners/hacktricks-training.md}}

Огляд

Уразливість запису за межами меж у парсері ICC профілів Apple macOS Scriptable Image Processing System (sips) (macOS 15.0.1, sips-307) через неналежну валідацію поля offsetToCLUT у тегах lutAToBType (mAB ) та lutBToAType (mBA ). Створений ICC файл може викликати нульові записи до 16 байтів за межами буфера купи, пошкоджуючи метадані купи або вказівники функцій і дозволяючи виконання довільного коду (CVE-2024-44236).

Уразливий код

Уразлива функція читає та обнуляє 16 байтів, починаючи з контролюваного зловмисником зсуву, не забезпечуючи, що він знаходиться в межах виділеного буфера:

// Pseudocode from sub_1000194D0 in sips-307 (macOS 15.0.1)
for (i = offsetToCLUT; i < offsetToCLUT + 16; i++) {
if (i > numberOfInputChannels && buffer[i] != 0)
buffer[i] = 0;
}

Виконується лише перевірка offsetToCLUT <= totalDataLength. Встановивши offsetToCLUT == tagDataSize, цикл індексує до 16 байтів за межами buffer, пошкоджуючи сусідні метадані купи.

Кроки експлуатації

  1. Створити шкідливий .icc профіль:
  • Побудувати заголовок ICC (128 байтів) з підписом acsp та єдиним записом тегу lutAToBType або lutBToAType.
  • У таблиці тегів встановити offsetToCLUT рівним size тегу (tagDataSize).
  • Розмістити дані, контрольовані атакуючим, безпосередньо після блоку даних тегу, щоб перезаписати метадані купи.
  1. Запустити парсинг:
sips --verifyColor malicious.icc
  1. Пошкодження метаданих купи: OOB нульові записи перезаписують метадані аллокатора або сусідні вказівники, дозволяючи атакуючому захопити контроль над потоком виконання та досягти виконання довільного коду в контексті процесу sips.

Вплив

Успішна експлуатація призводить до віддаленого виконання довільного коду з правами користувача на системах macOS, що виконують вразливу утиліту sips.

Виявлення

  • Моніторинг передачі файлів за загальними протоколами (FTP, HTTP/S, IMAP, SMB, NFS, SMTP).
  • Перевірка переданих файлів з підписом acsp.
  • Для кожного тегу mAB або mBA перевірити, чи дорівнює поле Offset to CLUT Tag data size.
  • Позначити як підозріле, якщо ця умова виконана.

Посилання

{{#include ../../banners/hacktricks-training.md}}