用于审计源代码、分类问题以及检测 Web、Android 和 iOS 项目漏洞的示例 AI-agent 任务流和 MCP 服务器。
本仓库包含用于 SecLab Taskflow Agent 的示例 taskflow,以及运行这些 taskflow 所需的自定义 MCP 服务器。
(.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
现在试着在你自己的某个项目上运行我们的审计 taskflow。 这里我们以 OWASP Juice Shop 为例:
./scripts/audit/run_audit.sh juice-shop/juice-shop
⚠️ 注意:审计 taskflow 可能需要运行数小时,尤其是在较大的项目上,并且会发出_大量_ AI 请求,这可能产生相当可观的费用。 默认情况下,taskflow 使用 Copilot API。你可以在这里了解有关 Copilot 计费的更多信息。 或者,你可以通过设置
AI_API_ENDPOINT环境变量来使用其他 AI API,具体说明见这里。
审计结果会写入一个 SQLite 数据库,该数据库会在运行结束时自动在 SQLite 查看器中打开。结果位于名为 "audit_result" 的表中。该表有一列名为 "has_vulnerability",在那些最可能是真实漏洞的行中会有勾选标记。
审计工作流除了支持 Web 应用和库之外,还识别 Android、iOS 和跨平台移动应用。 移动入口点收集会记录导出的 Android 组件、deep link、URL scheme、Universal Link、app extension 以及 WebView JavaScript bridge,包括它们的权限、导出状态和输入过滤器。
审计运行器会在分类之前收集这些元数据,分类过程会对标记为移动应用的组件应用
移动端专属的指导。现有的 --advisory 和 -m 选项同样适用于移动端运行。
两个移动入口点 taskflow 都使用由容器支持的源代码访问工具箱,并且需要 Docker。
移动元数据存储在 mobile_entry_point 表中。现有的上下文数据库会自动获得可为空的
application.is_mobile_app 列,而不会删除已有结果。
我们建议在沙箱环境中运行 taskflow。GitHub Codespaces 很方便,或者如果你愿意,也可以使用脚本 run_seclab_agent.sh 来运行 seclab-taskflow-agent 的 docker 容器,具体说明见这里。请注意,该脚本需要从仓库的主目录运行,并且包含自定义 MCP 服务器存储数据所需环境变量的 .env 文件需要位于同一目录中。
首先,在仓库的主目录中创建一个 .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 secrets 进行配置。特别是,环境变量 AI_API_TOKEN 和 AI_API_ENDPOINT 需要设置为相应的 AI API 端点和凭据。如果未设置,默认的 AI_API_ENDPOINT 是 GitHub Copilot:
AI_API_ENDPOINT="https://api.githubcopilot.com"
此外,还需要设置 GH_TOKEN 环境变量,以允许与 GitHub API 交互,例如获取内容、创建 issue 等。
个别 taskflow 可能需要额外的设置,请参阅相关子目录中的 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 维护的实验性智能体框架。本仓库提供了用于 SecLab Taskflow Agent 的示例 taskflow 和支持资源。我们正在使用该智能体和这些 taskflow 来试验将 AI 智能体用于安全目的,例如审计代码中的漏洞或对 issue 进行分类。
我们很乐意听取你的反馈。请创建一个 issue 向我们发送功能请求或错误报告。我们也欢迎 pull request(如果你想贡献,请参阅我们的贡献指南以了解更多信息)。
来自 ghcr.io/githubsecuritylab/ 的容器镜像使用 latest 标签。
由于该标签是可变的,本地缓存的镜像可能会过时,而
Docker 可能会继续使用它,而不是当前注册表中的镜像。当你需要确保 Docker 拉取
最新版本时,请在运行 taskflow 之前删除本地镜像:
docker rmi -f $(docker images --format '{{.Repository}}:{{.Tag}}' | grep '^ghcr.io/githubsecuritylab/')
本项目根据 MIT 许可证的条款授权。请参阅 LICENSE 文件以了解完整条款。