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

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

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

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

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

Категории

Все категории
Loading categories
C0deVari4nt — Инструмент анализа вариантов и визуализации, который сканирует кодовые базы на наличие похожих уязвимостей | Kitploit
Инструменты/GitHubGitHub/whitesquirrell/c0devari4nt
Статический анализ кода (SAST)Анализ уязвимостейАнализ Кода
GitHubwhitesquirrell/c0devari4nt

C0deVari4nt

Инструмент анализа вариантов и визуализации, который сканирует кодовые базы на наличие похожих уязвимостей

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

Популярное

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

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

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

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

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

C0deVari4nt

Black Hat Arsenal
C0deVari4nt

Описание

C0deVari4nt — это инструмент для анализа вариантов и визуализации, который проверяет кодовые базы на наличие схожих уязвимостей. Он использует CodeQL — семантический движок анализа кода, для выполнения запросов к коду на основе шаблонов запросов CodeQL, управляемых пользователем, и передает результаты в клиентский интерфейс, построенный на vis.js и React, для дальнейшего изучения и визуализации. Это позволяет быстро и всесторонне проводить анализ вариантов на основе предыдущих отчетов об уязвимостях. Функция визуализации vis.js предоставляет разработчикам дополнительную информацию об уязвимых путях кода и позволяет эффективно сортировать потенциальные варианты.

Вид инструмента

Мотивация

Инцидент Log4Shell в декабре 2021 года высветил трудности, с которыми сталкиваются разработчики открытого кода при реагировании на отчеты об уязвимостях. После первоначального патча для CVE-2021-44228, который позволял неаутентифицированным удаленным злоумышленникам получать контроль над устройствами, работающими под уязвимыми версиями Log4j 2, Apache выпустила 3 дополнительных патча для устранения связанных уязвимостей и неучтенных крайних случаев.

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

C0deVari4nt предоставляет разработчикам платформу для легкого проведения анализа вариантов без значительных накладных расходов на написание собственных запросов CodeQL. Это дает разработчикам возможность настраивать шаблоны CodeQL, предоставляя информацию, специфичную для кодовой базы, например, конкретный источник и сток уязвимости. Результаты будут визуализированы в виде графовой базы данных на основе vis.js, что позволит разработчикам быстро выявлять потенциальные варианты. Таким образом, разработчики смогут эффективно устранять целые классы ошибок на основе одного отчета об уязвимости.

Компоненты инструмента

C0deVari4nt построен с использованием Python, CodeQL, vis.js и React для создания интерактивного GUI-приложения, которое принимает пользовательский ввод и демонстрирует связи между различными уязвимыми путями кода.

Архитектура инструмента

C0deVari4nt состоит из следующих 2 основных компонентов:

  • Клиентский интерфейс: Этот компонент построен на React и браузерной библиотеке визуализации vis.js. Пользователи взаимодействуют с этим компонентом для настройки запроса CodeQL и анализа результатов CodeQL через представление графовой визуализации.
  • API-сервер: Этот компонент построен на веб-фреймворке Python FastAPI для получения запросов от клиентского интерфейса и выполнения команд CodeQL для списка файлов баз данных, готовых для CodeQL. Затем сервер возвращает обработанные результаты данных клиентскому интерфейсу.

Больше деталей о клиентском интерфейсе можно увидеть ниже: Архитектура инструмента

Использование v1

Настройка папки с базами данных

  • Перейдите в каталог api-server и выполните dbextractor.py <zip-файл базы codeql>, чтобы распаковать содержимое базы данных codeql

Запуск бэкенд-сервера

  • Перейдите в каталог api-server
  • Установите зависимости: pip install -r requirements.txt
  • Выполните uvicorn main:app --reload для запуска локального сервера разработки на порту 8000

Запуск React-интерфейса

  • Перейдите в каталог react-gui
  • Установите зависимости: npm i
  • Выполните npm start для запуска локального сервера разработки

Использование инструмента

Процесс пользователя

  • Введите параметры запроса в поле параметров и нажмите «Применить»
  • Подождите несколько секунд, пока бэкенд обработает запрос
  • Используйте правую панель свойств, чтобы изолировать пути и просмотреть свойства узлов

Использование

Запуск кодовой базы по предопределенным источникам и стокам уязвимостей (Вариант 1)

  1. Найти все исходные функции, ведущие к запрещенным строковым функциям (на основе списка запрещенных вызовов функций Microsoft SDL)
  2. Найти все вызовы функций strcat без проверки границ аргумента источника
  3. Найти все вызовы функций strncpy без проверки границ аргумента источника
  4. Найти все случаи отсутствия проверки границ для возвращаемого значения вызова snprintf
    1. Например: когда операция достигает конца буфера и отбрасывается более 1 символа, возвращаемое значение будет больше размера буфера
  5. Найти все вызовы malloc, calloc или realloc без выделения достаточного объема памяти для хранения экземпляра типа указателя

Запуск кодовой базы по источникам и стокам на ваш выбор (Вариант 2)

  1. Найти все исходные выражения, ведущие к опасной функции-стоку
  2. Найти конкретную исходную функцию, ведущую к опасной функции-стоку
  3. Найти конкретную исходную функцию, ведущую к опасной функции-стоку (Загрязненная функция)
    1. Используйте метод isAdditionalTaintStep для передачи заражения между двумя несвязанными функциями
  4. Найти конкретную исходную функцию, ведущую к опасной функции-стоку (Загрязненное выражение)
    1. Используйте метод isAdditionalTaintStep для передачи заражения между указателями, которые имеют одинаковые значения во время выполнения

Упрощение результатов CodeQL и связей между узлами

Ниже показаны результаты CodeQL для запроса с recvfrom в качестве источника, mempool_alloc в качестве дополнительного шага заражения и memcpy в качестве стока:

neo-1

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

neo-2

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

neo-3

Результаты могут быть далее распределены по соответствующим путям с помощью нашей функции маркировки путей:

neo-4

codevariant

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