Skip to content
KitploitKITPLOIT
ИнструментыБлог
Отправить
ИнструментыБлог
Отправить

Инструменты для хакинга, пентеста и кибербезопасности — ваш арсенал защиты!

Kitploit — это каталог инструментов для хакинга, кибербезопасности и пентестинга. Находите последние обновления проектов для поиска уязвимостей, анализа систем, автоматизации тестирования и усиления вашей безопасности.

··Ленты·Контакты·Конфиденциальность·© 2026 Kitploit

Каталог инструментов

Категории

Все категории
Loading categories
CVE-2025-66628 — Подробное раскрытие CVE-2025-66628, описывающее целочисленное переполнение в парсере TIM в ImageMagick, включая первопричину, шаги эксплуатации, оценку воздействия и рекомендации по устранению для 32-битных систем. | Kitploit
Инструменты/GitHubGitHub/sumitshah00/cve-2025-66628
Статический анализАнализ уязвимостейАнализ КодаЭксплуатацияАнализ Бинарных ФайловСтатьи и ИсследованияОбучение и Образование
GitHubsumitshah00/cve-2025-66628

CVE-2025-66628

Подробное раскрытие CVE-2025-66628, описывающее целочисленное переполнение в парсере TIM в ImageMagick, включая первопричину, шаги эксплуатации, оценку воздействия и рекомендации по устранению для 32-битных систем.

Репозиторий
18 месяцев назадЕщё не проверено

Популярное

Смотреть все →

Откройте для себя самые используемые инструменты нашего сообщества.

Изучить все инструменты

Просмотрите нашу коллекцию инструментов

Смотреть все инструменты →
Поделиться

CVE-2025-66628: Целочисленное переполнение в парсере TIM в ImageMagick

АтрибутДетали
CVE IDCVE-2025-66628
ВендорImageMagick Studio LLC
ПродуктImageMagick
Затронутые версии< 7.1.2-10
Исправленная версия7.1.2-10
Тип уязвимостиCWE-190 (Целочисленное переполнение)
CVSS v3.1 Score7.5 (Высокий)
CVSS VectorCVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:N/A:N
ИсследовательSumit Shah

Краткое описание

Уязвимость целочисленного переполнения существует в функции ReadTIMImage в файле coders/tim.c библиотеки ImageMagick. При обработке файлов изображений TIM (PlayStation) в 32-битных системах непроверенное умножение управляемых пользователем значений ширины и высоты приводит к недостаточному выделению памяти, что вызывает чтение за границами буфера во время обработки пикселей.


Технические детали

Уязвимый код

Уязвимая логика находится в coders/tim.c:

root@kitploit:~
/* coders/tim.c - TIM Image Parser */

// Управляемые пользователем данные из заголовка TIM-файла
width = ReadBlobLSBShort(image);   // 2 байта (0-65535)
height = ReadBlobLSBShort(image);  // 2 байта (0-65535)

// УЯЗВИМО: Целочисленное переполнение в 32-битных системах
image_size = 2 * width * height;  // Нет проверки на переполнение

// Память выделяется с усечённым размером
pixels = (unsigned char *) AcquireQuantumMemory(image_size, sizeof(*pixels));

// Цикл обрабатывает ПОЛНЫЕ размеры, считывая за пределами буфера
for (y = 0; y < height; y++) {
    for (x = 0; x < width; x++) {
        pixel_index = (y * width + x) * 2;
        pixels[pixel_index] = ReadBlobByte(image);
        pixels[pixel_index + 1] = ReadBlobByte(image);
    }
}

Корневая причина

В 32-битных архитектурах size_t ограничено 32 битами с максимальным значением UINT_MAX = 4 294 967 295.

Когда ширина и высота установлены в максимальные 16-битные беззнаковые значения:

root@kitploit:~
width = 65535 (0xFFFF)
height = 65535 (0xFFFF)

Ожидаемое вычисление:
2 × 65535 × 65535 = 8 589 869 050 байт (~8,5 ГБ)

Фактический результат (32-битное зацикливание):
8 589 869 050 % 4 294 967 296 = 4 294 901 754
Результат после усечения: маленький выделенный буфер

Переполнение заставляет аллокатор памяти резервировать значительно меньший буфер, чем требуется, в то время как цикл обработки по-прежнему итерируется по полной сетке пикселей 65535 × 65535, что приводит к чтению за границами.

Эксплуатация

Шаг 1: Злоумышленник создаёт TIM-файл с размерами, вызывающими переполнение

root@kitploit:~
[Magic: 0x10]
[Type: 0x02]
[Width: 0xFFFF]   # 65535
[Height: 0xFFFF]  # 65535
[Pixel Data...]

Шаг 2: Жертва обрабатывает вредоносный файл

root@kitploit:~
convert malicious.tim output.png

Шаг 3: Возникает чтение за границами, приводящее к:

  • Раскрытию кучи (данные утекают в выходное изображение или наблюдаются через временные задержки)
  • Ошибке сегментации (отказ в обслуживании)

Затронутые платформы

32-битные системы, где size_t является 32-битным. 64-битные системы не затронуты из-за достаточной разрядности целых чисел для представления вычисленного размера без переполнения.


Воздействие

Раскрытие информации (основное): Данные из кучи процесса ImageMagick могут быть прочитаны во время доступа за границами. Эта память может содержать:

  • Ранее обработанные данные изображений
  • Переменные окружения
  • Пути к файлам
  • Кэшированные учётные данные (в многопользовательских средах)

Утекшие данные могут быть встроены в преобразованное выходное изображение или извлечены с помощью анализа побочных каналов.

Отказ в обслуживании (вторичное): Чтение неотображённых областей памяти вызывает SIGSEGV, что приводит к завершению процесса ImageMagick и нарушению работы автоматических конвейеров обработки изображений.


Доказательство концепции

Технические детали предоставлены для проверки. Исполняемый код эксплойта не распространяется.

Условия срабатывания

  • Версия ImageMagick < 7.1.2-10, скомпилированная для 32-битной архитектуры
  • Вредоносный TIM-файл с байтами заголовка, задающими width=65535, height=65535
  • Обработка через convert, magick или любой вызов API ImageMagick

Ожидаемое поведение (уязвимая версия)

root@kitploit:~
$ convert malicious.tim output.png
Segmentation fault (core dumped)

Или успешное преобразование с утечкой данных кучи, встроенных в выходной файл.

Ожидаемое поведение (исправленная версия)

root@kitploit:~
$ convert malicious.tim output.png
convert: Memory allocation failed `malicious.tim' @ error/tim.c/ReadTIMImage/XXX.

Рекомендации по устранению

Для администраторов

Обновите ImageMagick до версии 7.1.2-10 или новее:

root@kitploit:~
# Проверка текущей версии
convert --version

# Обновление с помощью менеджера пакетов
apt update && apt upgrade imagemagick      # Debian/Ubuntu
yum update imagemagick                     # RHEL/CentOS
brew upgrade imagemagick                   # macOS

Для разработчиков

Реализуйте проверку переполнения перед арифметическими операциями:

root@kitploit:~
// Небезопасно
image_size = 2 * width * height;

// Безопасно
if (height != 0 && width > (SIZE_MAX / 2) / height) {
    ThrowReaderException(ResourceLimitError, "MemoryAllocationFailed");
}
image_size = 2 * width * height;

Применяйте проверку входных данных и разумные ограничения на значения размеров перед выполнением вычислений.


Ссылки

  • CVE Record: https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2025-66628
  • GitHub Advisory: https://github.com/ImageMagick/ImageMagick/security/advisories/GHSA-6hjr-v6g4-3fm8
  • ImageMagick Repository: https://github.com/ImageMagick/ImageMagick
  • CWE-190: https://cwe.mitre.org/data/definitions/190.html

Методология обнаружения

Эта уязвимость была выявлена с помощью вариантного анализа. После раскрытия аналогичного целочисленного переполнения в декодере BMP ImageMagick был проведён систематический обзор парсеров устаревших форматов. Сопоставление шаблонов непроверенных вычислений width * height привело к обнаружению той же ошибки в парсере TIM.

Декодеры устаревших форматов изображений (TIM, SGI, VIFF и т.д.) представляют собой ценные цели из-за редких аудитов безопасности и использования небезопасной арифметики языка C.


Ответственное раскрытие

Эта уязвимость была сообщена разработчикам ImageMagick в частном порядке через GitHub Security Advisories. Публичное раскрытие произошло только после выпуска исправления и присвоения CVE. Исследование проводилось с соблюдением принципов ответственного раскрытия.

Обнаружил

SUMIT SHAH

Исследователь: SUMIT SHAH

  • LinkedIn: linkedin.com/in/sumit-shah-614625350
  • Instagram: @hacksagex
Скачать инструмент