apisec-inc/AI-Surface

GitHub: apisec-inc/AI-Surface

ai-surface 是一款开源的本地静态分析工具,可在 PR 合并前自动扫描代码库中的 AI 攻击面并生成 AI-BOM 与合规证据。

Stars: 64 | Forks: 13

# ai-surface **在本地、离线状态下,于 PR 合并前,找出你的代码即将发布的 AI 攻击面。** [![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](https://opensource.org/licenses/MIT) [![Python 3.9+](https://img.shields.io/badge/python-3.9%2B-blue.svg)](https://www.python.org/downloads/) [![Version](https://img.shields.io/badge/version-1.0.2-blue.svg)](https://github.com/apisec-inc/AI-Surface/blob/main/CHANGELOG.md) [![Tests](https://img.shields.io/badge/tests-passing-brightgreen.svg)](https://github.com/apisec-inc/AI-Surface/tree/main/tests) [![Runs offline](https://img.shields.io/badge/no_telemetry-runs_offline-brightgreen.svg)](https://github.com/apisec-inc/AI-Surface/blob/main/docs/PRIVACY.md)
`ai-surface` 可以映射代码库中的 AI 攻击面:LLM 调用、agents、MCP 服务器、RAG/向量数据库、模型网关、自托管 runtime、提供商密钥以及暴露它们的 HTTP API。在本地或 CI 中运行它,以查看 PR 引入了哪些 AI 攻击面,生成 AI-BOM,并在合并前拦截新增的高风险发现。 它作为本地静态分析过程运行,不执行任何代码,不发起任何网络调用,不发送任何遥测数据,也不需要任何凭证,因此你的源码永远不会离开当前主机。 无需安装即可试用: ``` uvx --from apisec-ai-surface ai-surface scan . ``` 检查结果会映射到 OWASP LLM Top 10 以及欧盟 AI 法案、NIST AI RMF 和 ISO 42001,因此 AI-BOM 也可用作合规性证据(参见[合规性](#compliance-and-governance))。运行时漏洞验证不在此 OSS 扫描器的范围之内。
![ai-surface 攻击面映射图](https://static.pigsec.cn/wp-content/uploads/repos/cas/bf/bf07b07387d8f14e547cabc995b53d05199f306fdba3cd3d7b71cd628d9f7122.png) 可选的 --ui 映射图会将检测到的 AI 攻击面显示为按类别分组的节点。它仅在本地环回地址上提供服务并完全在本地运行。
## 适用人群? 如果你属于以下情况,请使用 `ai-surface`: - 正在为应用程序添加 agents、MCP 服务器、RAG、模型网关或 LLM 调用 - 正在审核即将合并的 AI 相关 pull request - 正在向 CI/CD 添加 AI 风险拦截机制 - 正在从源代码构建 AI-BOM 或 AI 治理清单 - 想要了解 AI 风险是从哪里进入你的代码库的 专为 DevOps、DevSecOps、平台工程、AppSec 以及具备安全意识的工程团队打造。 ## 目录 - [适用人群?](#who-is-this-for) - [快速开始](#quick-start) - [输出效果](#what-the-output-looks-like) - [在成熟项目上的首次运行](#first-run-on-a-mature-repo) - [GitHub Action 与 CI 拦截](#github-action-and-ci-gating) - [打开本地 UI](#open-the-local-ui) - [检测内容](#what-it-detects) - [在真实代码上的验证](#proven-on-real-code) - [输出格式](#output-formats) - [CLI 参考](#cli-reference) - [合规与治理](#compliance-and-governance) - [工作原理](#how-it-works) - [与相关工具的对比](#comparison-with-adjacent-tools) - [功能局限](#what-it-does-not-do) - [路线图](#roadmap) - [运行时验证](#runtime-validation) - [开发](#development) - [项目](#project) - [License](#license) ## 快速开始 安装一次,然后即可在任何地方运行 `ai-surface`: ``` pipx install apisec-ai-surface ai-surface scan . # 或无需安装直接运行一次 uvx --from apisec-ai-surface ai-surface scan . # 或在项目 venv 中运行 pip install apisec-ai-surface && ai-surface scan . # 以可视化方式探索结果 ai-surface scan . --ui ``` 需要 Python 3.9+。CLI 在本地运行;`--ui` 仅在本地环回地址上提供服务。 ### 输出效果 你可以通过内置的演示应用亲自复现一份完整的多类别报告:`ai-surface scan examples/demo-app --governance`(添加 `--ui` 可查看交互式映射图)。下面的报告来自一个具有代表性的 AI 应用,使用了 `--governance` 参数,以便显示每项发现对应的欧盟 AI 法案 / NIST / ISO 条款。默认情况下,这些条款会折叠成一行摘要(`治理:针对欧盟 AI 法案、NIST AI RMF、ISO/IEC 42001、OWASP LLM Top 10 的证据`),以保持输出内容紧凑;传入 `--governance` 可查看下方所示的逐条详情。添加 `--ai-only` 可省略普通的 API endpoint 部分,专注于 AI 相关的攻击面。 ``` AI Attack Surface Report ──────────────────────────────────────────────────────────────── Project: lumora Repository: apisec-inc/lumora 19 production AI surfaces · 25 risk indicators · across 8 detector(s) Severity: 6 high · 2 medium AGENT FRAMEWORKS • LangChain Agent: agent (in backend/app/ai/support_agent.py) [HIGH] Tools/perms: process_refund, lookup_order, send_email, update_address, search_knowledge ⚠ financial action exposed ⚠ messaging action exposed ⚠ high blast-radius combination ⚑ [HIGH] financial-action Agent can invoke financial tools (process_refund) OWASP: LLM06 Governance: EU AI Act Art. 9 Fix: Gate financial tools behind human approval; least-privilege the agent. ⚑ [HIGH] no-human-oversight High-risk action runs with no human approval / in-the-loop gate detected OWASP: LLM06, LLM09 Governance: EU AI Act Art. 14 ⚑ [MEDIUM] pii-to-llm Personal data (PII) is interpolated into a prompt template sent to the model OWASP: LLM02 Governance: EU AI Act Art. 10, ISO 42001 A.7 → validate at runtime: agent validation in APIsec • Mastra Agent: inventory (in assistant/src/inventory-agent.ts) [HIGH] Tools/perms: checkStock, reorder, deleteSku ⚑ [HIGH] destructive-action Agent can invoke destructive tools (deleteSku) OWASP: LLM06 Governance: EU AI Act Art. 9 MCP SERVERS • MCP Server: payments-mcp [HIGH] Trust: verified (90/100) ⚑ [HIGH] secrets-in-env Environment variables in the config appear to hold sensitive credentials OWASP: LLM02, LLM07 Governance: EU AI Act Art. 15 ⚑ [HIGH] financial-action MCP exposes financial tools (refund, charge, payout) to the model OWASP: LLM06 Governance: EU AI Act Art. 9 ⚑ [MEDIUM] unverified-source MCP is not from a known/verified publisher OWASP: LLM03 Governance: ISO 42001 A.10 • MCP Server: db-mcp [HIGH] ⚑ [HIGH] database-access MCP can query or modify database contents OWASP: LLM06 • MCP Server: filesystem-mcp [HIGH] ⚑ [HIGH] filesystem-access MCP can read/write files on the host OWASP: LLM06 VECTOR-STORE • Vector store: pgvector · RAG pipeline: LangChain (backend/app/ai/knowledge.py) ⚠ retrieved content reaches the model (retrieval-augmented generation) ⚠ ingests external content (RAG poisoning surface) LLM SDK CALL SITES • OpenAI SDK · gpt-4o · backend/app/ai/llm.py ⚠ non-literal data flows into LLM call • AWS Bedrock · us.anthropic.claude-sonnet-4 · backend/app/ai/llm.py API ENDPOINTS • GET /customers/{customer_id} ⚠ object-id in path (BOLA candidate) • PATCH /customers/{customer_id} ⚠ object-id in path (BOLA candidate) ``` ### 在成熟项目上的首次运行 首次运行会映射代码库中已存在的 AI 攻击面。可扩展的模式是:先建立现有攻击面的 baseline,然后仅在 pull request 中对新增的高风险发现进行拦截: ``` ai-surface scan . --update-baseline # 1. snapshot today's inventory ai-surface scan . --baseline # 2. show only what changed ai-surface scan . --baseline --fail-on high # 3. in CI, fail only on NEW high+ risk ``` `--baseline --fail-on high` 是推荐的 PR 拦截机制:低噪音,不阻碍处理既有技术债,且具备可操作性。 ## GitHub Action 与 CI 拦截 将以下内容放入 `.github/workflows/ai-surface.yml`: ``` name: AI Surface Check on: [pull_request] permissions: contents: read pull-requests: write # required when comment-on-pr is true jobs: ai-surface: runs-on: ubuntu-latest steps: - uses: actions/checkout@v4 with: fetch-depth: 0 # required for base-vs-head diff - uses: apisec-inc/AI-Surface@v1 with: path: '.' comment-on-pr: 'true' fail-on: 'high' # fail only on NEW high-or-critical findings ``` 每个 PR 都会获得一条置顶评论,显示 PR 中具体更改了什么,而不仅仅是当前的仓库状态。`fail-on` 会根据评估的严重级别进行拦截,因此仅作为清单记录的发现不会导致构建失败。设置 `fail-on: high` 后,只有当 PR 引入了新的高危或严重发现时,构建才会失败。 无需 API 密钥。该 Action 使用内置的 `GITHUB_TOKEN` 来发布或更新 PR 评论。 对于非 GitHub CI,拦截机制仅是一个退出代码: ``` ai-surface scan . --fail-on high ``` 有关权限、Fork PR 行为、baseline 选项、SARIF 上传、策略文件以及多仓库汇总,请参见 [`docs/CI_INTEGRATION.md`](https://github.com/apisec-inc/AI-Surface/blob/main/docs/CI_INTEGRATION.md)。 ## 打开本地 UI 安装 `ai-surface` 后,你可以从任何仓库打开交互式的 AI 攻击面映射图: ``` ai-surface scan . --ui ``` UI 会将检测到的 AI 攻击面显示为按类别分组的节点,并附带风险指标、治理徽章、证据以及可用的 AI-BOM 下载。 UI 从临时目录中通过本地 `127.0.0.1` 提供服务。 分析过程永远不会在浏览器中运行,你的源代码永远不会离开你的机器,并且不会收集任何遥测数据。 要停止本地 UI 服务器,请在终端中按 `Ctrl-C`。 ## 检测内容 `ai-surface` 会寻找八大类 AI 攻击面。配置文件、提供商密钥、清单和规范可以在各种技术栈中检测到;针对 Python 和 TypeScript/JavaScript 的更深层次代码级检测目前最为完善。完整矩阵请参见 [`docs/LANGUAGE_SUPPORT.md`](https://github.com/apisec-inc/AI-Surface/blob/main/docs/LANGUAGE_SUPPORT.md)。 | 类别 | 覆盖范围 | 检测目标 | |---|---|---| | Agent 框架 | 11 个 Python + 7 个 JS/TS 框架 | LangChain, LangGraph, CrewAI, LlamaIndex, AutoGen, Haystack, Semantic Kernel, Pydantic AI, AWS Strands, OpenAI Agents SDK 和 Claude Agent SDK (Python);LangChain.js, LangGraph.js, Vercel AI SDK, Mastra, OpenAI Agents SDK, LlamaIndex.ts 以及 Claude Agent SDK (TS/JS)。提取 agent 工具清单,并标记金融、破坏性和高影响范围的权限。 | | MCP 服务器 | 发现 + 深度审计 | 已配置的 MCP 服务器,例如 `.mcp.json` 条目和内部构建的源码服务器。审计结果包括风险标记、修复建议、仅按名称/类型检测到的密钥,以及 registry/信任信号。 | | 向量数据库 / RAG | 13 个数据库 + 2 个框架 | Pinecone, Weaviate, Chroma, Qdrant, Milvus, FAISS, LanceDB, pgvector,处于向量模式下的 Elasticsearch/OpenSearch/Vespa/Redis,以及 LangChain 和 LlamaIndex 的检索 pipeline。标记托管数据库的流量出站、RAG 数据流、embeddings 和外部数据接入。 | | LLM SDK 调用点 | 13 个提供商 | Anthropic, OpenAI, Azure OpenAI, AWS Bedrock, Google Generative AI, Vertex AI, Together, Mistral, Cohere, Replicate, Groq, LiteLLM 和 Vercel AI SDK。在可见的情况下提取模型,并标记非字面量(动态)的 prompt/message 流。 | | API endpoint | HTTP/REST + OpenAPI | OpenAPI/Swagger 规范以及框架路由,包括 FastAPI, Starlette, Flask, Express, Spring 和 Django。捕获 HTTP 方法、路径、框架、认证方式以及可能需要进行 BOLA 审查的 object-id 路径片段。 | | 模型网关 | 配置 + 源码 | LiteLLM proxy, Portkey, Helicone, Cloudflare AI Gateway 和 OpenRouter。在可见的情况下捕获路由模型清单。 | | AI 基础设施 | 清单 + IaC | 用于 AI runtime 和托管 AI 服务(如 Ollama, vLLM, TGI, SGLang, Triton, llama.cpp, Bedrock, SageMaker 和 Vertex endpoint)的 Kubernetes, Helm, Docker Compose, Dockerfile 和 Terraform。 | | AI 提供商密钥 | 仅限名称 | 环境文件和配置中常见的提供商密钥名称,例如 `OPENAI_API_KEY`、`ANTHROPIC_API_KEY` 和 `AZURE_OPENAI_*`。永远不会读取或打印密钥的值。 | 清单类别默认不会被分配严重级别。只有当深度审计掌握了足够的证据时(目前针对 MCP、agent 和 RAG 发现),才会分配严重级别。有关匹配的每一个模式,请参见 [`docs/DETECTORS.md`](https://github.com/apisec-inc/AI-Surface/blob/main/docs/DETECTORS.md)。 ## 在真实代码上的验证 我们在 GitHub 上针对 19 个热门的开源 AI 项目测试了 `ai-surface`,这些项目在分析时的综合 Star 数约为 94.1 万。集合包含 AutoGPT、Dify、RAGFlow、AutoGen、CrewAI、LlamaIndex、Continue、Danswer 等。 这仅仅是静态、离线分析:每个仓库都被浅克隆、在本地分析,然后被删除。没有运行任何应用程序。没有任何代码离开过主机。 该集合分为 12 个应用程序和 7 个框架/库仓库。框架和库会单独报告,因为它们通常在代码路径中包含许多集成,因此它们的原始组件计数与应用程序没有可比性。 在这 12 个应用程序仓库中,`ai-surface` 发现: | 指标 | 应用占比 | |---|---| | 发布 AI agents | 83% | | 包含向量数据库 / RAG 层 | 83% | | 暴露 API endpoint | 83% | | 存在可能需要进行 BOLA 审查的 API endpoint | 67% | | 暴露 MCP 服务器 | 42% | | 运行的 agent/MCP 攻击面未接入可观测性 | 33% | | 将 PII 插入到 prompt 中 | 17% | | 至少触发一项风险规则和一项治理规则 | 100% | 这些是类别存在性指标,并不代表可利用性。这些数字是下限,而不是上限:目前的工具解析主要基于 regex/轻量级 AST,因此对于较大的平台,某些 agent/工具风险可能会出现漏报。原始的组件计数对调查很有用,但可能会因框架、编码风格和探测器覆盖范围的不同而有所差异。 完整的方法论、单应用附录、框架/库附录以及注意事项均在 [State of AI Surface](https://github.com/apisec-inc/AI-Surface/blob/main/docs/STATE_OF_AI_SURFACE.md) 报告中。
![State of AI Surface 报告](https://static.pigsec.cn/wp-content/uploads/repos/cas/1c/1c60a1708c74c6a971aff9a5a582d836c611a460b2e86d10a173dac167e50483.png)
## 输出格式 ``` ai-surface scan . # terminal report ai-surface scan . --ui # interactive map in a local browser ai-surface scan . --output json # machine-readable JSON (schema 1.0) ai-surface scan . --output markdown # human-readable Markdown report ai-surface scan . --output cyclonedx # CycloneDX AI-BOM ai-surface scan . --output sarif # SARIF 2.1.0 for GitHub code scanning ai-surface scan . --write-inventory # write .ai-inventory.md to the project root ai-surface scan . --quiet # one-line CI summary ``` CycloneDX 输出即为 AI-BOM:这是一种在 CI 中生成的清单制品,就像团队已经生成 SBOM 一样,并附带 AI 治理映射。 SARIF 输出可以上传到 GitHub 代码扫描,以便在 Security 标签页中获得可见性,并在 PR 中提供内联注释。 `--ui` 查看器会从临时的废弃目录中通过 `127.0.0.1` 提供服务;分析过程从不在浏览器中运行,不会向你的机器外发送任何内容,也没有任何遥测。 ## CLI 参考 ``` # 映射当前项目 ai-surface scan . # 打开本地交互式地图 ai-surface scan . --ui # 生成机器可读或人类可读的输出 ai-surface scan . --output json ai-surface scan . --output markdown ai-surface scan . --output cyclonedx ai-surface scan . --output sarif # 按特定类别过滤 # 别名:mcp, agents, llm, gateway, infra, keys, api, vector ai-surface scan . --categories mcp,agents ai-surface scan . --categories vector # 专注于 AI 专属 surface(丢弃普通的、非 AI 的 API endpoint) ai-surface scan . --ai-only # 显示每个 finding 的治理条款(EU AI Act / NIST / ISO) # 默认关闭;始终显示一行治理摘要。 ai-surface scan . --governance # 根据评估的 severity 阻断 CI ai-surface scan . --fail-on high # fail on high or critical findings ai-surface scan . --fail-on critical # fail only on critical findings # 无法被基线抑制的 severity 下限(关闭基线接受差距) # 新增的 high+ 会阻断 PR;任何 critical 始终会阻断,即使是既有的。 ai-surface scan . --baseline --fail-on high --always-fail-on critical # 严格 gate:在任何 risk indicator 上失败 ai-surface scan . --fail-on-risk # 对既有 AI surface 建立基线,然后仅显示变更内容 ai-surface scan . --update-baseline ai-surface scan . --baseline ai-surface scan . --baseline --fail-on high # 比较两份报告 ai-surface compare base.json head.json ``` ## 合规与治理 `ai-surface` 将审计结果映射到 OWASP LLM Top 10 以及欧盟 AI 法案、NIST AI RMF 和 ISO/IEC 42001 中与证据相关的条款。 在终端和 Markdown 输出中,默认关闭逐项发现的条款,而是显示一行治理摘要;传入 `--governance` 可在每个风险标记下打印出相关条款。UI 会将这些映射显示为徽章。JSON 输出始终将它们作为结构化的 `standards` 字段携带。CycloneDX 输出将它们作为组件属性,从而使其成为你的 AI-BOM 制品。 `ai-surface` 用于生成证据;它不提供认证、证明或断言合规性。只有当分析产生了该类证据时,才会报告相应的框架要求。
![治理证据与 AI-BOM](https://static.pigsec.cn/wp-content/uploads/repos/cas/3c/3ce4040af7c8b4210885e2267fdde80e54dbedf5039b245d936b4b6c84e432d1.png)
### 映射覆盖范围 | 证据类型 | 示例 | 框架用途 | |---|---|---| | 清单 | agents、MCP 服务器、RAG/向量数据库、LLM 调用、网关、AI 基础设施 | AI-BOM、系统文档、治理清单 | | 风险 | 金融工具、破坏性工具、高影响范围 agents、包含密钥的 MCP 配置 | 风险审查与评估证据 | | 人工监督 | 未检测到审批门槛的高风险操作 | 欧盟 AI 法案第 14 条 审查信号 | | 日志 / 监控 | 未检测到链路追踪的 agent 或 MCP 执行面 | 欧盟 AI 法案第 12 条、NIST MEASURE 3、ISO A.6.2.6 证据 | | 数据治理 | RAG/向量层、插入到 prompt 中的 PII | 欧盟 AI 法案第 10 条、ISO A.7 证据 | ### 风险标记映射示例 | 风险标记 | OWASP | 欧盟 AI 法案 | NIST AI RMF | ISO/IEC 42001 | |---|---|---|---|---| | `secrets-in-env` | LLM02 | Art. 15 | - | - | | `financial-action` / `destructive-action` / `high-blast-radius` | LLM06 | Art. 9 | - | - | | `no-human-oversight` | LLM06 / LLM09 | Art. 14 | - | - | | `no-observability` | - | Art. 12 | MEASURE 3 | A.6.2.6 | | `pii-to-llm` | LLM02 | Art. 10 | - | A.7 | | `unverified-source` / `remote-mcp` / `local-binary` | LLM03 | - | - | A.10 | | 存在向量数据库 / RAG | LLM08 | Art. 10 | data | A.7 | 报告覆盖范围是下限,而不是上限:静态分析可能会漏掉那些通过动态方式或工厂函数构建工具的代码中隐藏的风险。 完整的映射细节、注意事项以及 AI-BOM 生成指南详见 [`docs/COMPLIANCE.md`](https://github.com/apisec-inc/AI-Surface/blob/main/docs/COMPLIANCE.md)。 ## 工作原理 ``` flowchart TD A[Developer writes AI code] --> B[Opens PR] B --> C[CI runs ai-surface] C --> D[Read repo files locally] D --> E[Detect AI surfaces
agents · MCP · RAG · LLMs · APIs] E --> F[Audit risk indicators
+ map governance evidence] F --> G[Compare base vs head
+ attach AI-BOM] G --> H{DevOps / security reviewer} H --> I[Request changes] H --> J[Merge] style E fill:#00a99d,stroke:#0b6b63,stroke-width:2px,color:#ffffff style F fill:#7c3aed,stroke:#4c1d95,stroke-width:2px,color:#ffffff style H fill:#d97706,stroke:#7c4a14,stroke-width:2px,color:#ffffff style J fill:#16a34a,stroke:#0f7a37,stroke-width:2px,color:#ffffff ``` CLI 不执行任何代码,不使用任何凭证,不发送任何遥测数据,也不发起任何网络调用。 当启用 PR 评论时,GitHub Action 会使用仓库的 `GITHUB_TOKEN` 通过 GitHub API 发布或更新评论。它不会向 APIsec 发送源代码、检查结果或元数据。 深入了解:[`docs/ARCHITECTURE.md`](https://github.com/apisec-inc/AI-Surface/blob/main/docs/ARCHITECTURE.md)。 ## 与相关工具的对比 | 工具 | 提供的信息 | AI 可见性时机 | |---|---|---| | SAST (Semgrep, CodeQL) | 代码模式漏洞 | Commit 之后;通常不构建 AI 攻击面清单 | | DAST (Burp, ZAP) | 可达的 Web 漏洞 | 部署之后;关注 HTTP 行为,而非 LLM/agent 内部 | | SCA (Snyk, Dependabot) | 易受攻击的依赖项 | Commit 之后;关注 packages,而非 AI 组件的使用方式 | | 可观测性 (Helicone, LangSmith, Arize, Phoenix) | 运行时发生了哪些 LLM 调用 | 部署之后;需要运行时流量 | | AI-SPM / AI 治理工具 | 云/运行时 AI 清单与安全态势 | 通常以运行时/云优先;一般不作为本地 PR 阶段的拦截机制 | | **`ai-surface`** | **即将发布的 AI 攻击面有哪些,并映射至治理证据** | **在 PR 阶段,合并之前,离线运行** | | APIsec 平台 | 哪些 AI/API 攻击面真正可被利用 | 运行时验证,并附带可复现的证据 | `ai-surface` 并不取代这些工具。它专注于填补大多数相邻工具未能直接覆盖的本地、PR 阶段的 AI 攻击面空白。 ## 功能局限 - **运行时遥测或行为监控。** 请使用 Helicone、LangSmith、Arize 或 Phoenix 等工具。 - **运行时漏洞验证。** `ai-surface` 进行静态映射和审计;它无法证明针对运行中应用程序的可利用性(参见[运行时验证](#runtime-validation))。 - **Prompt 注入、越狱、偏见或准确性测试。** 在设计上不在此范围内。`ai-surface` 是一个结构性分析器,而非模型评估器。 - **用于工具解析的完整跨文件数据流分析。** 目前主要基于 regex/轻量级 AST;通过工厂函数构建的 agent 工具可能无法被完全解析。请将此映射视为一个坚实的基础,而非完全覆盖的证明。AST/数据流分析是路线图的首要任务。 - **密钥值读取或 PII 分类。** 密钥仅通过名称和类型进行报告,其值会被脱敏。如需针对值的级别进行覆盖排查,请使用专门的密钥扫描器。 ## 路线图 | 版本 | 状态 | 包含内容 | |---|---|---| | v1.0 | 已发布 | 8 大类映射,MCP + agent + RAG 审计,OWASP + 欧盟/NIST/ISO 治理映射,AI-BOM + SARIF,交互式 `--ui` 映射图,冻结的 schema 1.0,带有 PR diff 评论的 GitHub Action,`--baseline` 和 `--fail-on` 拦截机制。 | | 紧随其后 | 计划中 | 用于工具解析的 AST / 跨文件数据流分析,`.ai-surface.yml` 策略文件,GitLab CI 组件。 | | 未来 | 计划中 | kubectl 插件,实时 cluster 发现,持续模式 + 漂移告警,多仓库汇总,插件 SDK。 | ## 运行时验证 `ai-surface` 从源代码和配置中映射 AI 攻击面。它能识别出 agents、MCP 服务器、RAG 路径、LLM 调用、网关、基础设施、提供商密钥以及暴露的 AI API 的位置,并在存在静态证据时标记出风险指标。 它不负责证明针对正在运行的应用程序的可利用性。 有关带有可复现证据的运行时验证,请参见 [APIsec](https://www.apisec.ai/products): | 源攻击面 | 运行时验证路径 | |---|---| | AI / agent 攻击面 | agent 验证 | | MCP 服务器 | MCP 运行时验证 | | 发现的 API | API 从外到内的运行时测试 | 这种边界划分是有意为之的:在这里进行免费的本地发现,在 APIsec 中进行运行时漏洞验证。桥梁是一种升级路径,而不是一种数据共享集成。任何发现数据都不会离开你的机器;此桥梁仅作为一个深度链接。 ## 开发 ``` git clone https://github.com/apisec-inc/AI-Surface cd AI-Surface python -m venv .venv source .venv/bin/activate pip install -e ".[dev]" pytest # tests ruff check src/ tests/ # lint mypy src/ # types ``` 要添加探测器,请在 `types.py` 中实现 `Detector` 协议,在 `default_detectors()` 中注册它,并在 `tests/` 下添加 fixtures 和测试。 ## 项目 | 资源 | 链接 | |---|---| | 探测器 | [docs/DETECTORS.md](https://github.com/apisec-inc/AI-Surface/blob/main/docs/DETECTORS.md) | | 合规映射 | [docs/COMPLIANCE.md](https://github.com/apisec-inc/AI-Surface/blob/main/docs/COMPLIANCE.md) | | 语言支持 | [docs/LANGUAGE_SUPPORT.md](https://github.com/apisec-inc/AI-Surface/blob/main/docs/LANGUAGE_SUPPORT.md) | | 架构 | [docs/ARCHITECTURE.md](https://github.com/apisec-inc/AI-Surface/blob/main/docs/ARCHITECTURE.md) | | CI 集成 | [docs/CI_INTEGRATION.md](https://github.com/apisec-inc/AI-Surface/blob/main/docs/CI_INTEGRATION.md) | | 报告 schema | [docs/SCHEMA_v1.md](https://github.com/apisec-inc/AI-Surface/blob/main/docs/SCHEMA_v1.md) | | State of AI Surface | [docs/STATE_OF_AI_SURFACE.md](https://github.com/apisec-inc/AI-Surface/blob/main/docs/STATE_OF_AI_SURFACE.md) | | 隐私 | [docs/PRIVACY.md](https://github.com/apisec-inc/AI-Surface/blob/main/docs/PRIVACY.md) | | 更新日志 | [CHANGELOG.md](https://github.com/apisec-inc/AI-Surface/blob/main/CHANGELOG.md) | ## License MIT。详见 [LICENSE](https://github.com/apisec-inc/AI-Surface/blob/main/LICENSE)。
由 [APIsec](https://apisec.ai) 维护。APIsec Labs OSS 系列的一部分。
标签:AI安全, Chat Copilot, DevSecOps, SBOM, 上游代理, 合规治理, 文档结构分析, 硬件无关, 逆向工具, 错误基检测, 静态代码分析