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

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

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

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

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

Категории

Все категории
Loading categories
Инструменты/GitHubGitHub/neuralprogram/qlcoder
Статический анализСканеры уязвимостейАнализ уязвимостейАнализ КодаСтатьи и ИсследованияОбратная Разработка с Помощью ИИ
GitHubneuralprogram/qlcoder

qlcoder

Agentic Framework для синтеза CodeQL-запросов

Репозиторий
2871041 месяц назадПроверено Kitploit

Популярное

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

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

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

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

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

QLCoder

Агентный фреймворк для синтеза CodeQL-запросов

Содержание

  • Обзор
  • Установка
    • Docker (рекомендуется)
    • Нативная установка (Linux)
  • Использование
  • Быстрый старт
  • Инструменты для разработки
  • Примеры
  • Окружение для статьи
  • Вклад в проект
  • Команда
  • Цитирование
  • Связанные проекты

Обзор

QLCoder Iterative Refinement

QLCoder — это фреймворк для использования LLM с целью синтеза сквозных CodeQL-запросов для обнаружения уязвимостей. Имея метаданные существующей CVE, LLM и кодирующий агент, QLCoder итеративно синтезирует CodeQL-запрос для обнаружения данной CVE. Начальный запрос — это шаблон CodeQL path-запроса, заполненный извлечённым AST диффа. Во время синтеза запроса кодирующий агент имеет доступ к инструментам для взаимодействия с RAG-базой данных и языковым сервером CodeQL. Впоследствии запрос может использоваться для мультивариантного анализа, регрессионного тестирования или в качестве руководства при написании CodeQL-запросов.

Установка

Docker (рекомендуется)

Шаг 1: Установка CodeQL

Примечание — В статье использовалась версия CodeQL 2.22.2. Однако можно использовать любую версию (и язык). QLCoder хранит QL-пакеты локальной версии CodeQL в векторной базе данных. Пути настраиваются в .env.

Загрузите подходящую версию пакета CodeQL Action со страницы релизов CodeQL Action.

  • Для последней версии: Посетите последний релиз и загрузите подходящий пакет для вашей ОС:

    • codeql-bundle-osx64.tar.gz для macOS
    • codeql-bundle-linux64.tar.gz для Linux
  • Для конкретной версии (например, 2.22.2): Перейдите на страницу релизов CodeQL Action, найдите релиз с тегом codeql-bundle-v2.22.2 и загрузите подходящий пакет для вашей платформы.

Распакуйте в ~/codeql (или в другой путь — обновите CODEQL_HOME в .env соответствующим образом):

tar -xzf codeql-bundle-<platform>.tar.gz -C ~/

Шаг 2: Установка MCP-сервера CodeQL LSP

Клонируйте MCP-сервер CodeQL LSP и соберите его.

git clone https://github.com/neuralprogram/codeql-lsp-mcp ~/codeql-lsp-mcp
cd ~/codeql-lsp-mcp
npm install
npm run build

Шаг 3: Настройка и запуск сервисов

cp .env.example .env
echo "APP_UID=$(id -u)" >> .env
echo "APP_GID=$(id -g)" >> .env

Заполните ваш API-ключ и пути CodeQL в .env:

ANTHROPIC_API_KEY=...

# Пути к QL-пакетам зависят от версии CodeQL.
# Найдите номера версий с помощью:
#   ls ~/codeql/qlpacks/codeql/java-queries/   → используйте для SECURITY_QLPACK_PATH
#   ls ~/codeql/qlpacks/codeql/java-all/        → используйте для LIBRARY_QLPACK_PATH
SECURITY_QLPACK_PATH=~/codeql/qlpacks/codeql/java-queries/<version>/Security/CWE
LIBRARY_QLPACK_PATH=~/codeql/qlpacks/codeql/java-all/<version>/semmle/code/java

Затем запустите приложение QLCoder и ChromaDB:

docker compose up -d

Шаг 4: Получение репозиториев CVE

CVE должна быть указана в data/project_info.csv. Это клонирует репозиторий на коммите с ошибкой и генерирует дифф исправления.

docker compose run --rm app python3 scripts/get_cve_repos.py --cve CVE-2025-27818
# или несколько сразу:
docker compose run --rm app python3 scripts/get_cve_repos.py --cves CVE-2025-27818,CVE-2025-0851
# обработка CVE из файла (по одному ID CVE в строке)
docker compose run --rm app python3 scripts/get_cve_repos.py --cve-file cves.txt
# обработка всех CVE
docker compose run --rm app python3 scripts/get_cve_repos.py --all
# принудительная регенерация существующих диффов
docker compose run --rm app python3 scripts/get_cve_repos.py --cve CVE-2018-9159 --force

Шаг 5: Создание баз данных CodeQL

Базы данных создаются с --build-mode=none — инструментарий сборки не требуется.

# для создания баз данных CodeQL для конкретной CVE
docker compose run --rm app python3 scripts/build_codeql_dbs.py --cve-id CVE-2025-27818

Это создаёт cves/CVE-2025-27818/CVE-2025-27818-vul и cves/CVE-2025-27818/CVE-2025-27818-fix.

# для создания баз данных CodeQL для всех полученных репозиториев CVE
docker compose run --rm app python3 scripts/build_codeql_dbs.py

Шаг 6: Заполнение RAG-базы данных

Запустите эти скрипты для заполнения векторной базы данных. codeql_docs_fetcher.py и cwe_fetcher.py — одноразовая настройка; cves_fetcher.py следует повторно запускать после добавления новых CVE.

docker compose run --rm app python3 scripts/codeql_docs_fetcher.py
docker compose run --rm app python3 scripts/cwe_fetcher.py
docker compose run --rm app python3 scripts/cves_fetcher.py

Нативная установка (Linux)

Шаг 1: Установка CodeQL

Примечание — В статье использовалась версия CodeQL 2.22.2. Однако можно использовать любую версию (и язык). QLCoder хранит QL-пакеты локальной версии CodeQL в векторной базе данных. Пути настраиваются в .env.

Загрузите подходящую версию пакета CodeQL Action со страницы релизов CodeQL Action.

  • Для последней версии: Посетите последний релиз и загрузите подходящий пакет для вашей ОС:

    • codeql-bundle-linux64.tar.gz для Linux
  • Для конкретной версии (например, 2.22.2): Перейдите на страницу релизов CodeQL Action, найдите релиз с тегом codeql-bundle-v2.22.2 и загрузите подходящий пакет для вашей платформы.

После загрузки распакуйте архив в корневом каталоге проекта:

tar -xzf codeql-bundle-<platform>.tar.gz

Это должно создать подкаталог codeql/ с исполняемым файлом codeql внутри.

Добавьте путь к этому исполняемому файлу в переменную окружения PATH:

export PATH="$PWD/codeql:$PATH"

Шаг 2: Установка MCP-сервера CodeQL LSP

Клонируйте MCP-сервер CodeQL LSP и соберите его.

git clone https://github.com/neuralprogram/codeql-lsp-mcp
cd codeql-lsp-mcp
npm install
npm run build

Шаг 3: Настройка окружения Conda

conda env create -f environment.yml
conda activate qlcoder

Шаг 4: Настройка .env

cp .env.example .env

Заполните ваш API-ключ и пути CodeQL в .env:

ANTHROPIC_API_KEY=...
CODEQL_HOME=~/codeql
CODEQL_LSP_MCP_HOME=~/codeql-lsp-mcp

# Пути к QL-пакетам зависят от версии CodeQL.
# Найдите номера версий с помощью:
#   ls ~/codeql/qlpacks/codeql/java-queries/   → используйте для SECURITY_QLPACK_PATH
#   ls ~/codeql/qlpacks/codeql/java-all/        → используйте для LIBRARY_QLPACK_PATH
SECURITY_QLPACK_PATH=~/codeql/qlpacks/codeql/java-queries/<version>/Security/CWE
LIBRARY_QLPACK_PATH=~/codeql/qlpacks/codeql/java-all/<version>/semmle/code/java

Шаг 5: Получение репозиториев CVE

CVE должна быть указана в data/project_info.csv. Это клонирует репозиторий на коммите с ошибкой и генерирует дифф исправления.

python3 scripts/get_cve_repos.py --cve CVE-2025-27818
# или несколько сразу:
python3 scripts/get_cve_repos.py --cves CVE-2025-27818,CVE-2025-0851
# обработка CVE из файла (по одному ID CVE в строке)
python3 scripts/get_cve_repos.py --cve-file cves.txt
# обработка всех CVE
python3 scripts/get_cve_repos.py --all
# принудительная регенерация существующих диффов
python3 scripts/get_cve_repos.py --cve CVE-2018-9159 --force

Шаг 6: Создание баз данных CodeQL

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