
Примеры AI-агентных рабочих процессов и MCP-серверов для аудита исходного кода, сортировки проблем и обнаружения уязвимостей в веб-проектах, проектах Android и iOS.
Этот репозиторий содержит примеры taskflows для использования с SecLab Taskflow Agent, а также пользовательские MCP-серверы, необходимые для запуска taskflows.
(.venv) перед приглашением в терминале.python -m seclab_taskflow_agent -t seclab_taskflows.taskflows.audit.ghsa_variant_analysis_demo -g repo=github/cmark-gfm -g ghsa=GHSA-c944-cv5f-hpvr
Теперь попробуйте запустить наши taskflows аудита на одном из ваших проектов. Здесь мы используем OWASP Juice Shop в качестве примера:
./scripts/audit/run_audit.sh juice-shop/juice-shop
⚠️ Примечание: taskflows аудита могут выполняться несколько часов, особенно на крупных проектах, и делают множество запросов к ИИ, что может стоить немалых денег. По умолчанию taskflows используют Copilot API. Подробнее о биллинге Copilot можно узнать здесь. В качестве альтернативы можно использовать другой AI API, задав переменную окружения
AI_API_ENDPOINT, как описано здесь.
Результаты аудита записываются в базу данных SQLite, которая автоматически открывается в просмотрщике SQLite по завершении запуска. Результаты находятся в таблице с именем "audit_result". Таблица содержит столбец с именем "has_vulnerability", с отметками в строках, которые с наибольшей вероятностью являются реальными уязвимостями.
Рабочий процесс аудита распознаёт Android-, iOS- и кроссплатформенные мобильные приложения наряду с веб-приложениями и библиотеками. Сбор мобильных точек входа фиксирует экспортированные компоненты Android, deep links, URL-схемы, Universal Links, расширения приложений и мосты WebView JavaScript, включая их разрешения, статус экспорта и фильтры ввода.
Запускающий скрипт аудита собирает эти метаданные перед классификацией, которая применяет специфичные для мобильных приложений
рекомендации к компонентам, помеченным как мобильные приложения. Существующие опции --advisory и -m также применяются к мобильным запускам.
Оба taskflow для мобильных точек входа используют инструментарий доступа к исходникам на базе контейнеров и требуют Docker.
Мобильные метаданные хранятся в таблице mobile_entry_point. Существующие базы данных контекста автоматически получают nullable-столбец
application.is_mobile_app без удаления существующих результатов.
Мы рекомендуем запускать taskflows в изолированной среде. GitHub Codespaces удобны, или, если предпочитаете, вы можете использовать скрипт run_seclab_agent.sh для запуска docker-контейнера seclab-taskflow-agent, как описано здесь. Обратите внимание, что этот скрипт нужно запускать из главной директории репозитория, и файл .env с переменными окружения для пользовательских MCP-серверов для хранения данных должен находиться в той же директории.
Сначала создайте файл .env в главной директории репозитория. Для run_seclab_agent.sh можно использовать:
MEMCACHE_STATE_DIR=/app/data
CODEQL_DBS_BASE_PATH=/app/data
DATA_DIR=/app/data
LOG_DIR=/app/logs
MEMCACHE_STATE_DIR нужен для сохранения некоторых промежуточных данных в memcache, DATA_DIR нужен для различных mcp-серверов для хранения промежуточных результатов, а LOG_DIR используется для хранения лог-файлов, создаваемых серверами. Их можно задать в файле .env в главной директории. Если переменные окружения для пользовательских MCP-серверов не заданы, соответствующие папки будут созданы автоматически. Расположение зависит от платформы и задаётся platformdirs.
Кроме того, конечные точки и секреты AI API также необходимо настроить через переменные окружения или секреты Codespace. В частности, переменные окружения AI_API_TOKEN и AI_API_ENDPOINT должны быть установлены в соответствующие конечные точки и учётные данные AI API. Если не задано, по умолчанию AI_API_ENDPOINT — это GitHub Copilot:
AI_API_ENDPOINT="https://api.githubcopilot.com"
Кроме того, переменную окружения GH_TOKEN также необходимо задать, чтобы обеспечить взаимодействие с GitHub API, например получение контента, создание issues и т. д.
Отдельные taskflows могут требовать дополнительной настройки; обратитесь к README.md в соответствующих поддиректориях для получения дополнительных требований.
После установки соответствующих переменных окружения запустите пример taskflow с помощью:
./scripts/run_seclab_agent.sh -t seclab_taskflows.taskflows.audit.ghsa_variant_analysis_demo -g repo=github/cmark-gfm -g ghsa=GHSA-c944-cv5f-hpvr
SecLab Taskflows — это сопутствующий репозиторий к репозиторию SecLab Taskflow Agent. SecLab Taskflow Agent — это экспериментальный агентный фреймворк, поддерживаемый GitHub Security Lab. Этот репозиторий предоставляет примеры taskflows и вспомогательные ресурсы для использования с SecLab Taskflow Agent. Мы используем агента и эти taskflows для экспериментов с применением AI-агентов в целях безопасности, таких как аудит кода на уязвимости или триаж issues.
Мы будем рады услышать ваши отзывы. Пожалуйста, создайте issue, чтобы отправить нам запрос на функцию или сообщение об ошибке. Мы также приветствуем pull requests (см. наши рекомендации по участию для получения дополнительной информации, если вы хотите внести свой вклад).
Образы контейнеров из ghcr.io/githubsecuritylab/ используют тег latest.
Поскольку этот тег изменяемый, локально кэшированный образ может устареть, и
Docker может продолжать использовать его вместо текущего образа из реестра. Удалите
локальные образы перед запуском taskflow, когда вам нужно убедиться, что Docker загружает
последние версии:
docker rmi -f $(docker images --format '{{.Repository}}:{{.Tag}}' | grep '^ghcr.io/githubsecuritylab/')
Этот проект лицензирован на условиях лицензии MIT. Полные условия см. в файле LICENSE.