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

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

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

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

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

Категории

Все категории
Loading categories
gdcm-security-poc — Приватный пакет для воспроизведения сквозной санитизации по шести находкам GDCM | Kitploit
Инструменты/GitHubGitHub/abhinavagarwal07/gdcm-security-poc
Статический анализДинамический анализ (песочница)Криминалистика памятиАнализ уязвимостейЭксплуатацияФаззингАнализ Бинарных ФайловСтатьи и ИсследованияОбучение и Образование
GitHubabhinavagarwal07/gdcm-security-poc

gdcm-security-poc

Приватный пакет для воспроизведения сквозной санитизации по шести находкам GDCM

Репозиторий
6121 дней назадЕщё не проверено

Популярное

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

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

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

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

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

Результаты GDCM 1-6: пакет воспроизведения

Шесть дефектов парсера/кодека в GDCM, воспроизведённых на v3.2.6 как сбои санитайзера или ограниченные проверки распространения. Каждый автоматический триггер имеет почти валидный контроль, который не производит уязвимый сигнал. Результат 1 также включает инструментированный примитив потока управления.

Предназначено для проверки сопровождающим и координатором по уязвимостям. Прочитайте SAFETY.md перед запуском чего-либо.

Закреплённые цели

manifest/targets.env:

ИмяРевизияЧто это
vulnerable9c71b163тег v3.2.6
master2cd05d13снимок upstream master, проверенный статически; матрица времени выполнения ожидается
fixedне заданозаполняется только после появления проверенного коммита исправления

master — это датированный снимок, а не движущаяся ветка. Обе ревизии доступны из публичного репозитория, поэтому bootstrap.sh может подготовить любую из них без приватных исходников.

Область результатов

Доказательства времени выполнения в этом репозитории относятся к v3.2.6. Более широкие диапазоны ниже получены из инспекции истории исходников; затронутые паттерны также остаются в закреплённом снимке master.

#CWEДиапазон по исходникамТребуемый путь
1CWE-787с v3.0.4 по v3.2.7чтение многокадрового RLE YBR_FULL_422
2CWE-787с v2.0.16 по v3.2.7кодирование/транскодирование JPEG2000
3CWE-125с v2.0.5 по v3.2.7разбор сегментированной палитры; применение LUT раскрывает распространённые значения
4CWE-787с v2.0.8 по v3.2.7ImageRegionReader::ReadIntoBuffer; связано с неполной валидацией точности после CVE-2024-22373
5CWE-674с v2.0.4 или ранее по v3.2.7обычный разбор вложенных последовательностей
6CWE-369с v2.0.4 или ранее по v3.2.7обычный разбор RLE с NumSegments=0

Содержимое

  • fixtures/ — инертные входные данные DICOM, закреплённые по SHA-256 в manifest/expectations.json и проверяемые перед каждым запуском триггера
  • generators/ — детерминированные генераторы исходников без зависимостей для каждого фикстура
  • harnesses/ — минимальные обвязки чтения/кодирования/декодирования; Результат 2 показан как через CLI gdcmconv, так и через библиотечный API транскодирования, который вызвал бы сервер
  • manifest/expectations.json — машиночитаемые команды, решающие сигналы и критерии приёмки для цели fixed
  • scripts/ — подготовка закреплённых исходников, сборки с санитайзерами, ограниченное выполнение, очистка
  • evidence/ — краткие уже наблюдавшиеся результаты с явным указанием непроверенных целей
  • LICENSE — лицензия MIT

Предварительные требования

Одноразовая среда сборки Linux или macOS с Git, Python 3, CMake 3.20+, Ninja и инструментальной цепочкой C++11 (Clang или GCC). В Ubuntu: git python3 cmake ninja-build clang zlib1g-dev. Установите CC/CXX, чтобы использовать GCC вместо этого.

Подготовка исходников клонирует по HTTPS, если GDCM_SOURCE_REPO не указывает на существующий локальный клон. SSH-хост не используется.

Подготовка и сборка

Эти команды подготавливают только исходники и артефакты сборки; они не открывают никакой фикстур.

./scripts/build-target.sh vulnerable asan  debug
./scripts/build-target.sh vulnerable ubsan debug
./scripts/build-target.sh master     asan  debug
./scripts/build-target.sh master     ubsan debug

Третий аргумент — это профиль. debug — это -O0 -g; release — это -O2 -g -DNDEBUG, что исключает gdcm_debug_assert() из GDCM и соответствует тому, как дистрибутивы собирают библиотеку. Запуск матрицы под обоими отвечает на первый вопрос, который задаёт сопровождающий, а именно: являются ли отчёты артефактом сборки с включёнными утверждениями.

GDCM_SUPPORT_BROKEN_IMPLEMENTATION=ON — это собственное значение по умолчанию GDCM, и оно оставлено без изменений. Переопределите консервативный параллелизм с помощью JOBS=8.

Каждая сборка записывает build-info.json (ревизия, компилятор, флаги, платформа) в своё дерево сборки GDCM, и каждое резюме запуска встраивает его, поэтому архивированные доказательства самодостаточны.

Запуск

export GDCM_REPRO_ACK=I_UNDERSTAND_THIS_CRASHES_A_LOCAL_PROCESS

./scripts/run-matrix.sh vulnerable master --profile debug   # все автоматические случаи
./scripts/run-one.sh vulnerable f1                          # один триггер
./scripts/run-one.sh vulnerable f1 --control                # его контроль

run-matrix.sh запускает каждый автоматический случай для каждой цели, не останавливается на первом сбое и записывает _runs/matrix-<stamp>.json плюс отрендеренный _runs/matrix-<stamp>.md. Двухэтапный случай f1-exploit остаётся ручным и сообщается как таковой, а не ошибочно классифицируется как неудавшийся автоматический случай.

У каждого дочернего процесса отключены дампы ядра и установлен 15-секундный тайм-аут; Результат 5 дополнительно получает ограниченный лимит стека. Выходные данные остаются в _runs/. Классификатор сопоставляет класс санитайзера и затронутую функцию, никогда — адреса, PID или номера строк исходников.

Для vulnerable случай проходит, когда появляется решающий сигнал и его контроль остаётся чистым. Для master раннер записывает наблюдение, а не предварительно объявленный вердикт. Для fixed случай проходит только когда сигнал отсутствует, не появляется никакой другой сигнал санитайзера или фатальный сигнал, и обвязка возвращает допустимый чистый результат. Эти правила предварительны, пока FIXED_REV не назовёт фактический патч; они должны быть проверены на предмет предполагаемого поведения патча «отклонить или обработать».

Случаи

СлучайРезультатЧто показывает
f11запись в кучу ASan в RLECodec::DecodeFragment
f1-exploit1инструментированная перезапись соседнего объекта и управление косвенной ветвью (Linux x86-64)
f22запись в кучу ASan в opj_write_from_memory через gdcmconv --j2k
f2-lib2та же запись через ImageChangeTransferSyntax::Change
f33чтение из кучи ASan при расширении сегментированной палитры
f3-propagation3байты за пределами границ достигают декодированных пикселей, сообщается как количество
f3-sentinel3ограниченное известное защитное слово пересекает логическую границу LUT
f44запись в кучу ASan при декодировании области JPEG2000
f55исчерпание стека ASan на вложенных элементах последовательности
f66деление на ноль UBSan при декодировании RLE; SIGFPE на x86

Ещё две обвязки являются исследованием эксплуатируемости, а не случаями воспроизведения, и собираются только в профиле без санитайзеров на Linux x86-64:

ОбвязкаРезультатЧто устанавливает
finding01_groom1протестированная смежность glibc, наблюдаемая через хуки записи выделений
finding03_leak3перечитывание на 131070 байт может раскрыть специфичный для сборки указатель библиотеки

Сохранённые доказательства

evidence/v3.2.6-macos-arm64-debug.md фиксирует завершённую отладочную матрицу v3.2.6, включая каждый контроль и обе ограниченные проверки распространения Результата 3.

evidence/v3.2.6-linux-x86_64-finding01-groom.md и evidence/v3.2.6-linux-x86_64-finding03-leak.md фиксируют два результата эксплуатируемости ниже. Результаты текущего master, полной матрицы релизного профиля и f1-exploit не заявляются, пока их стенограммы не сохранены.

Очистка

./scripts/clean.sh

Очистка отказывается запускаться без маркера пакета и удаляет только _work, _build, _generated, _runs и кэши байт-кода Python под этим репозиторием. Сохранённые доказательства в evidence/ не удаляются.

Примитив эксплуатации (Результат 1)

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