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

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

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

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

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

Категории

Все категории
Loading categories
CVE-2025-70330 — Ошибка анализа файлов Easy Grade Pro 4.1, используемая в качестве учебного примера, чтобы показать новичкам, как начать исследование уязвимостей с помощью обратной разработки. | Kitploit
Инструменты/GitHubGitHub/themalwareguardian/cve-2025-70330
Статический анализАнализ уязвимостейАнализ КодаЭксплуатацияОбратная инженерияОтладчикиФаззингАнализ Бинарных ФайловОбучение и Образование
Эксплуатация Бинарных Файлов
GitHubthemalwareguardian/cve-2025-70330

CVE-2025-70330

Ошибка анализа файлов Easy Grade Pro 4.1, используемая в качестве учебного примера, чтобы показать новичкам, как начать исследование уязвимостей с помощью обратной разработки.

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

Популярное

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

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

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

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

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

🧩 CVE-2025-70330: Уязвимость при разборе файлов Easy Grade Pro 4.1

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




📑 Содержание

  • Зачем существует этот репозиторий
  • Связь с «The Path That Leads to Your First CVE»
  • Почему старое ПО идеально для обучения
  • Почему этот пример важен
  • Об уязвимости
  • Технический анализ
  • 📂
    • Почему только определенные поврежденные файлы вызывают сбой приложения
    • Доказательство концепции (PoC)
    • Поведение при сбое
    • Примечания



🎓 Зачем существует этот репозиторий

Этот репозиторий возник из необходимости иметь простой пример, который можно использовать при обучении новичков, начинающих заниматься исследованием уязвимостей, особенно тех, кто интересуется обратной разработкой.

После завершения курса, тренинга или магистерской программы по эксплуатации или анализу бинарных файлов многие студенты чувствуют, что настоящее исследование уязвимостей находится далеко за пределами их уровня. Они обычно ассоциируют обратную разработку с очень продвинутыми темами, такими как уязвимости ядра, эксплуатация браузеров, исследование прошивок или сложные современные цели, и из-за этого считают, что они еще не готовы. На практике проблема не в недостатке знаний, а в отсутствии реалистичной отправной точки.

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

Этот репозиторий – именно такой пример. Речь идет не о поиске сложной уязвимости, а о том, чтобы показать, что новички могут начать с чего-то маленького, воспроизводимого и понятного, и при этом заниматься настоящим исследованием уязвимостей.




🧭 Связь с «The Path That Leads to Your First CVE»

Этот репозиторий напрямую связан с моим докладом «The Path That Leads to Your First CVE», в котором я объясняю, что существует множество способов войти в мир исследования уязвимостей, и что каждый человек обычно выбирает свой путь в зависимости от своих интересов.

Некоторые начинают с аудита исходного кода, другие – с обратной разработки, третьи – с веб-безопасности, а четвертые – с исследования технологий. Все эти пути верны, но важно понимать, что в каждой области есть точки входа, подходящие для новичков.

Примеры путей для начинающих включают:

  • В аудите исходного кода – анализ небольших проектов с открытым исходным кодом.
  • В обратной разработке – работа с устаревшими приложениями с простой логикой.
  • В безопасности веб-приложений – анализ простых веб-приложений или старых плагинов CMS.
  • В исследовании технологий – изучение протоколов или ПО, изначально не разработанных с учетом безопасности.
  • И многие другие подобные отправные точки.

Такие цели могут выглядеть базовыми, но они обучают тем же ключевым навыкам, которые потребуются позднее при работе со сложными системами.

Этот репозиторий представляет один из таких путей для начинающих в области обратной разработки.

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

Это именно тот пример, который я использую, объясняя «The Path That Leads to Your First CVE», чтобы показать, что обратная разработка – это верный путь с самого начала, и что начинать с простых целей не только допустимо, но часто является лучшим способом обучения.




🧱 Почему старое ПО идеально для обучения

Когда вы только начинаете, современные приложения часто слишком сложны. Они используют защиты, средства смягчения и кодовые базы, которые трудно понять без большого опыта. Старое ПО – другое дело.

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

Используя старую программу, вы можете: выполнить реверс-инжиниринг бинарного файла, понять формат файла, вызвать сбой, проанализировать сбой, локализовать ошибку, задокументировать проблему и сообщить об уязвимости. Другими словами, вы осваиваете базовые навыки, необходимые каждому исследователю уязвимостей.

Именно об этом данный пример.




🧪 Почему этот пример важен

Этот пример важен, потому что он демонстрирует нечто очень простое:

  • Чтобы начать, не нужно быть экспертом.
  • Не нужно эксплуатировать ядро ОС или браузер.
  • Вы можете начать с чего-то маленького, понять это, задокументировать – и все равно получить реальный результат.

Если вам нравится обратная разработка, вы можете следовать этому пути с самого начала. Чтобы стать мастером, могут потребоваться годы, но чтобы начать делать реальную работу, ждать годы не нужно.




⚠️ Об уязвимости

Уязвимость (CVE-2025-70330) затрагивает логику разбора файлов Easy Grade Pro 4.1 при загрузке проприетарных файлов оценок формата .EGP.

Приложение восстанавливает внутренние структуры журнала, считывая поля с фиксированными позициями из файла и используя эти значения в качестве смещений внутри загруженного буфера файла. Эти смещения впоследствии используются для вычисления размеров памяти и копирования данных в динамически выделяемые буферы.

При нормальных условиях файл проходит несколько структурных проверок, прежде чем разбор продолжится. Однако после успешного прохождения этих проверок синтаксический анализатор доверяет значениям смещений, хранящимся внутри файла, не проверяя, остаются ли они в границах загруженного буфера.

Изменяя определенные байты внутри в остальном корректного файла .EGP, можно исказить эти внутренние вычисления смещений. Когда анализатор впоследствии использует эти значения, он пытается прочитать память за пределами допустимой области файла, что приводит к нарушению доступа и сбою приложения.

Это состояние соответствует чтению за пределами границ (CWE-125), что приводит к локальному отказу в обслуживании при открытии специально созданного файла.




🔬 Технический анализ

Формат файла .EGP анализируется с использованием подхода на основе смещений. Вместо последовательной обработки файла анализатор считывает внутренние структуры, содержащие начальные и конечные смещения, описывающие, где в файле должны находиться определенные блоки данных.

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

Уязвимую логику можно обобщить следующим образом:

size = offset_end - offset_start + 1
buffer = calloc(1, size)
memcpy(buffer, file_buffer[offset_start - base_offset], size)
Скачать инструмент