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

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

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

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

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

Категории

Все категории
Loading categories
NotEnough — Этот инструмент вычисляет сложную каноническую гистограмму Хаффмана для CVE-2023-4863. | Kitploit
Инструменты/GitHubGitHub/caoweiquan322/notenough
Криминалистика памятиАнализ уязвимостейЭксплуатацияОбратная инженерияФаззингЭксплуатация Бинарных Файлов
GitHubcaoweiquan322/notenough

NotEnough

Этот инструмент вычисляет сложную каноническую гистограмму Хаффмана для CVE-2023-4863.

Репозиторий
2532 лет назадПроверено Kitploit

Популярное

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

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

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

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

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

Инструмент для взлома таблицы Хаффмана

Этот инструмент вычисляет хитрую каноническую гистограмму Хаффмана, которая способна вызвать внеполосную (OOB) запись для уязвимой библиотеки libwebp (т.е. libwebp <= 1.3.1). Эта уязвимость известна как CVE-2023-4863 или CVE-2023-41064. Мы можем переполнить предварительно выделенную таблицу Хаффмана максимум на 132 записи.

Обоснование: libwebp предполагает, что гистограмма Хаффмана, содержащаяся в каждом изображении webp, имеет правильный формат. То есть дерево декодирования должно быть полным деревом. Исходя из этого предположения, группа libwebp использовала инструмент enough для оценки максимального размера памяти, необходимого для построения таблицы декодирования Хаффмана (мощной структуры для быстрого декодирования канонических кодов Хаффмана). Однако хакеры могут построить неполное дерево, чтобы выйти за этот лимит памяти и тем самым переполнить предварительно выделенную память.

Этот инструмент для взлома был создан путем модификации enough с поддержкой неполных деревьев.

Скомпилируйте код с помощью команды ниже:

root@kitploit:~
gcc -o NotEnough ./main.c

Для таблицы Хаффмана с 40 символами, 8-битной корневой таблицей и максимальной глубиной 15 максимальное количество записей таблицы равно 410. Однако, построив неполное дерево, количество записей таблицы может достигать 542. Попробуйте команду ниже:

root@kitploit:~
./NotEnough 40 8 15

Пример такого дерева показан ниже:

Плохое дерево

Обратите внимание, что для краткости мы обрезали ветви без листьев.

Затем вы можете использовать инструмент craft для создания эффективного изображения webp, чтобы переполнить инструмент dwebp (версия <= 1.3.1). Соответствующим образом измените гистограмму кода Хаффмана code_lengths_counts[4] на {0, 1, 0, 0, 0, 0, 0, 0, 0, 3, 5, 9, 17, 1, 1, 3} и пересоберите инструмент:

root@kitploit:~
vim craft.c    # Change huffman code histogram accordingly, i.e. about line 495.
gcc -o craft craft.c
./craft -o bad_542.webp

Пожалуйста, ознакомьтесь с блогом @benhawkes, чтобы лучше понять CVE-2023-4863.

Скачать инструмент