ikaruscareer/SafeAI

GitHub: ikaruscareer/SafeAI

面向 AI Agent 应用的静态代码风险分析器,在部署前离线检测框架能力暴露、Prompt 注入及 MCP 配置风险。

Stars: 7 | Forks: 4

# SafeAI — 静态 AI 能力与风险分析器 [![CI](https://github.com/ikaruscareer/SafeAI/actions/workflows/ci.yml/badge.svg)](https://github.com/ikaruscareer/SafeAI/actions/workflows/ci.yml) [![OpenSSF Scorecard](https://api.scorecard.dev/projects/github.com/ikaruscareer/SafeAI/badge)](https://scorecard.dev/viewer/?uri=github.com/ikaruscareer/SafeAI) [![网站](https://img.shields.io/badge/web-safeai--analyzer.ikaruscareer.com-0f766e)](https://safeai-analyzer.ikaruscareer.com) **SafeAI** 是一款静态分析工具,用于扫描 AI 应用源代码中的安全风险、能力暴露和治理缺陷。它完全在离线环境下运行,绝不执行 agent 或调用 LLM,并可集成到 CI/CD pipeline 中。 SafeAI_Agent_Software_Static_Analyzer ## 为什么选择 SafeAI? 传统的应用安全工具(SAST、SCA、IaC 扫描)并非为 AI agent 系统设计。AI 应用引入了新的风险面: - **Prompt injection** — 不可信的输入流入模型 prompt - **Agent 工具滥用** — 拥有文件系统、shell 或数据库访问权限的 agent - **能力蔓延** — 框架在缺乏可见性的情况下暴露各项能力 - **MCP 暴露** — Model Context Protocol endpoint 和工具 - **治理缺陷** — 缺失身份验证、权限控制、审计跟踪 SafeAI 弥补了这一空白,通过在部署前对处于静止状态的框架、agent、工具、能力和 MCP 集成进行分析。 SafeAI 在不执行 AI 应用的前提下对其进行分析,帮助开发者在软件生命周期的早期发现能力、识别潜在风险并完善治理。 SafeAI 的设计初衷是保持轻量级、可解释且由社区驱动,旨在成为 AI 能力和风险分析的开放基石。 在安全生命周期中,SafeAI 位于 runtime 防护和红队工具之前。它在代码提交时扫描 agent 源代码——在你将 agent 部署到预发布环境之前,检测特定于框架的能力、MCP 配置错误以及 prompt injection 模式。它不替代 runtime 工具(Microsoft AGT)、评估框架(LangSmith、DeepEval)或红队扫描器(Promptfoo、Garak)。而是作为它们的补充:先在代码中发现风险,然后在 runtime 中进行验证。 SafeAI_Concept ## 核心功能 | 功能 | 描述 | |---------|-------------| | **框架检测** | 检测并解析 15 种 AI agent 框架 | | **能力发现** | 识别文件系统、shell、网络、数据库等能力 | | **AI 风险分析** | 将发现结果归类为 7 个风险类别,并带有加权信任评分 | | **Prompt 风险分析** | 检测 injection 模式、分隔符问题、系统泄露、角色覆盖 | | **工具分析** | 识别绑定到 agent 的工具及其风险特征 | | **记忆分析** | 检测 agent 工作流中的 memory/checkpointer 使用情况 | | **MCP 分析** | 发现 MCP 服务器、客户端、工具、资源,并验证配置 | | **数据泄露检测** | 标记硬编码的 secret、token 和 API key | | **CI/CD 集成** | 包含 SARIF 输出、退出代码、GitHub Actions 工作流 | | **多格式报告** | 终端摘要、JSON、SARIF 2.1.0、HTML | | **跨文件分析** | Import graph、符号解析及项目图 | | **置信度仲裁解析** | 每个文件使用多个解析器,并结合来源进行合并 | ## 工作原理 ``` Source Code │ ▼ Framework Detection — identifies AI frameworks via imports, configs, deps │ ▼ Static Analysis — AST parsing, capability patterns, dependency scanning │ ▼ Capability Mapping — maps framework objects to normalized risk categories │ ▼ Risk Rules — applies rule engine with configurable severity and weights │ ▼ Trust Score — deterministic category-weighted scoring from 0–100 │ ▼ Reports — terminal, JSON, SARIF, HTML ``` SafeAI_AI_Capability_Risk_Analyzer ## 支持的框架 | 框架 | 检测 | 发现 | 能力分析 | 风险分析 | 状态 | |-----------|-----------|-----------|-------------------|---------------|--------| | LangGraph | ✔ | 部分 | 部分 | 部分 | 早期预览 | | CrewAI | ✔ | 部分 | 部分 | 部分 | 早期预览 | | LangChain | ✔ | 部分 | 部分 | 部分 | 早期预览 | | Semantic Kernel | ✔ | 部分 | 部分 | 部分 | 早期预览 | | OpenAI Agents SDK | ✔ | 部分 | 部分 | 部分 | 早期预览 | | Microsoft Agent Framework | ✔ | 部分 | 部分 | 部分 | 早期预览 | | Azure AI Foundry | ✔ | 最小 | 最小 | 最小 | 早期预览 | | Bedrock Agent | ✔ | 最小 | 最小 | 最小 | 早期预览 | | Claude Code | ✔ | 最小 | 最小 | 最小 | 早期预览 | | Google ADK | ✔ | 部分 | 最小 | 最小 | 早期预览 | | Mastra | ✔ | 部分 | 最小 | 最小 | 早期预览 | | Haystack | ✔ | 部分 | 最小 | 最小 | 早期预览 | | LlamaIndex | ✔ | 部分 | 最小 | 最小 | 早期预览 | | Dify | ✔ | 最小 | 最小 | 最小 | 早期预览 | | n8n | ✔ | 部分 | 最小 | 最小 | 早期预览 | ### 框架支持详情 - **LangGraph** — 检测 `StateGraph`、`add_edge`、`bind_tools`、节点、模型 - **CrewAI** — 检测 `Agent`、`Task`、工具、模型 - **LangChain** — 检测 `AgentExecutor`、`Chain`、`Tool`、`PromptTemplate`、模型 - **Semantic Kernel** — 检测 `Kernel.invoke`、插件、函数、技能、memory - **OpenAI Agents SDK** — 检测 `Agent`、工具、handoff、MCP 引用 - **Microsoft Agent Framework** — 检测 `AgentClient`、工具、工作流、Azure 模型 - **Azure AI Foundry** — 检测带有 Azure 资源的 YAML 配置 - **Bedrock Agent** — 检测带有 Bedrock 资源的 JSON 配置 - **Claude Code** — 检测 `CLAUDE.md` 和 `.claude/` 配置引用 - **Google ADK** — 检测 ADK agent、工作流、工具和模型模式 - **Mastra** — 检测 Mastra agent、工作流、工具和模型引用 - **Haystack** — 检测 Haystack pipeline、agent、工具和 retriever - **LlamaIndex** — 检测 agent、工具、索引和模型引用 - **Dify** — 检测 Dify 工作流和 agent 配置文件 - **n8n** — 检测 n8n 工作流导出、节点和连接 上述七个框架属于早期预览适配器。目前提供检测和基础组件发现功能,但其特定于框架的分析尚未达到与成熟适配器同等的水平。 ## 支持的能力 SafeAI 在框架对象级别和通过备选 regex 模式对能力进行指纹识别。每项能力都包含证据、置信度得分、解析后的定义以及来源信息。 SafeAI_Capability_Risk_Report | 能力 | 类别 | 风险影响 | |------------|----------|-------------| | Shell 执行 | Shell | 命令注入、主机被攻陷 | | 文件系统访问 | 文件系统 | 数据泄露、文件篡改 | | 浏览器自动化 | 浏览器 | 基于 UI 的攻击、凭证窃取 | | 规划 / 编排 | 规划器 | 自主决策链风险 | | Agent 委托 | 委托 | 未受控的子 agent 权限 | | 记忆 / 检查点 | 记忆 | 跨会话数据保留 | | RAG / 检索 | RAG | 文档泄露、通过文档进行 prompt injection | | GitHub 集成 | GitHub | 仓库访问权限、secret 泄露 | | Slack 集成 | Slack | 频道监控、消息注入 | | 电子邮件集成 | 电子邮件 | 网络钓鱼、数据泄露 | | 数据库访问 | 数据库 | SQL 注入、数据泄露 | | 云服务 | 云 | 云资源滥用、成本激增 | | 外部 API | 外部 API | 第三方数据泄露 | | MCP 服务 | MCP | 暴露的 endpoint、未授权工具访问 | | 人工审批 | 人工审批 | 绕过审批风险 | | 多 Agent | 多 Agent | 基于委托的权限提升 | ## 安装 ### 前提条件 - Python 3.11 或 3.12 - PyYAML(用于解析 YAML 配置) ### 从源码安装 ``` git clone https://github.com/ikaruscareer/SafeAI.git cd SafeAI pip install -e . ``` ### 安装开发依赖 ``` pip install -e ".[dev]" ``` ## 命令行用法 ``` python -m safeai scan [options] ``` ### 选项 | 选项 | 默认值 | 描述 | |--------|---------|-------------| | `directory` | 必需 | 要扫描的路径 | | `--sarif` | `report.sarif` | SARIF 输出路径(留空则跳过) | | `--json` | — | JSON 输出路径 | | `--html` | — | HTML 报告输出路径 | | `--rules` | 内置 | 自定义规则目录 | | `--fail-on` | `critical` | 退出代码阈值:`critical`、`high`、`medium` | | `--verbose` | — | 启用详细输出 | ### 退出代码 | 代码 | 条件 | |------|-----------| | 0 | 未发现达到或超过阈值的结果 | | 1 | 检测到达到或超过阈值的结果 | ## 输出示例 ### 终端 ``` SafeAI Scan Summary Files: 12 Frameworks: langgraph, crewai MCP assets: 2 Overall AI Risk Score: 73 critical: 1 high: 3 medium: 5 Findings: [critical] app.py:10 - Untrusted input interpolated into prompt [high] app.py:22 - Capability detected: shell_execution [high] mcp.json:1 - MCP configuration does not define authentication ``` ### 示例:带有 MCP 的 LangGraph agent ``` { "Framework": "LangGraph", "Capabilities": ["Planner", "Memory", "Filesystem", "MCP"], "Risk Score": 73, "Findings": 9, "Critical": 1, "High": 3 } ``` ## CI/CD 集成 ### GitHub Actions `.github/workflows/ci.yml` 中包含了一个工作流。要在你的项目中使用: ``` jobs: safeai-scan: runs-on: ubuntu-latest steps: - uses: actions/checkout@v4 - uses: actions/setup-python@v5 with: python-version: '3.12' - name: Install SafeAI run: | pip install -e . - name: Run scan run: | python -m safeai scan . --sarif results.sarif --html report.html - name: Upload SARIF uses: github/codeql-action/upload-sarif@v3 with: sarif_file: results.sarif ``` ### GitLab CI ``` safeai-scan: image: python:3.12 script: - pip install -e . - safeai scan . --sarif results.sarif --html report.html artifacts: paths: - results.sarif - report.html ``` ### Azure DevOps ``` - task: PythonScript@0 inputs: scriptSource: 'inline' script: | import subprocess subprocess.run(["pip", "install", "-e", "."]) subprocess.run(["safeai", "scan", ".", "--sarif", "$(Build.ArtifactStagingDirectory)/results.sarif"]) ``` ### SARIF 集成 SafeAI 输出 SARIF 2.1.0 格式,与 GitHub Advanced Security、Azure DevOps 及其他兼容 SARIF 的工具无缝对接。 ## 路线图 请查看 [ROADMAP.md](./ROADMAP.md) 获取涵盖所有 5 个阶段的详细路线图: - **阶段 1** — 静态 AI 风险扫描器 (OSS) — *正在积极开发中* - **阶段 1.5** — AI 组件安全 - **阶段 2** — AI 安全测试(未来可选) - **阶段 3** — 测试包 - **阶段 4** — 企业版(商业化) - **阶段 5** — 社区情报 SafeAI_Roadmap ## 许可证 SafeAI 基于 Apache 2.0 许可证发布。
标签:AI安全, Chat Copilot, DevSecOps, LNA, 上游代理, 人工智能, 安全合规, 恶意代码分类, 用户模式Hook绕过, 网络代理, 自动化payload嵌入, 逆向工具, 错误基检测, 静态代码分析