AI代理安全扫描工具

专注于检测AI代理工具调用和动作安全性的扫描工具,适用于MCP服务器和AI代理的安全审计。

  • by omer-yehuda
  • TypeScript
  • 本地部署
  • 更新于
在 GitHub 查看 omer-yehuda/shieldagent

使用说明

屏蔽剂

AI代理安全扫描程序 -第一个工具专注于保护哪些AI代理 做 (工具调用、操作),而不仅仅是他们所说的。

为什么选择屏蔽剂?

  • 90%的AI代理被过度授权
  • 43%的MCP实现存在命令注入缺陷
  • 78%的MCP服务器存在严重漏洞
  • 欧盟人工智能法案全面实施:2026年8月

运作原理

MCP Server Directory
        |
        v
  +-- Loader --+       +-----------+
  | Discover   |       | Config    |
  | tools &    | <---- | Exclude   |
  | source     |       | patterns  |
  +-----+------+       +-----------+
        |
        v
  +-- Scan Engine --------------------------+
  |  Schema     Pattern      AST            |
  |  Scanners   Scanners    Scanners        |
  |  (input-    (poisoning, (cmd-injection, |
  |   valid.)    prompt-inj)  over-perm)    |
  +---------+--+--+---------+---------------+
            |  |  |
            v  v  v
       Finding[] (deduplicated, fingerprinted)
            |
            v
  +-- Reporters ---+
  | Table | JSON | SARIF |
  +-------+------+-------+

快速开始

# Install globally
pnpm add -g shieldagent

# Scan an MCP server
shieldagent scan ./my-mcp-server

# JSON output for CI
shieldagent scan ./my-mcp-server --format json

# SARIF for GitHub Security
shieldagent scan ./my-mcp-server --format sarif > results.sarif

# CI mode (exit code 1 on findings)
shieldagent scan ./my-mcp-server --ci

# Exclude test fixtures from scanning
shieldagent scan ./my-mcp-server --exclude "tests/**" "fixtures/**"

扫描仪

扫描程序 类别 严重性范围 检测
输入验证 架构 中高 缺少架构、类型约束、边界
工具中毒 模式 高度关键 工具描述中的隐藏说明
提示注入 模式 高临界 参数元数据中的注入
身份验证和传输 模式 中等关键 缺少身份验证,传输不安全
供应链 模式 中等关键 恶意存款、打字错误
命令注入 AST 临界 对exec/spawn/eval的未初始化输入
权限过大 AST 中高 功能过多与描述不符
数据过滤 AST 高临界 敏感数据读取+出站网络
秘密检测 模式 介质关键 硬编码API密钥、令牌、凭据

合规框架

  • OWASP代理商前10名 -每个发现都对应其OWASP类别
  • 广告MCP Top 25 -每个发现都映射到其Adversa类别

配置

创建一个 .shieldagentrc.json 在项目根目录中:

{
  "scanners": {
    "command-injection": { "enabled": true, "severity": "critical" },
    "tool-poisoning": { "enabled": true }
  },
  "exclude": ["tests/**", "node_modules/**"],
  "format": "table",
  "ci": false
}

程序化API

import {
  ScanEngine,
  createDefaultRegistry,
  loadMCPServer,
  formatOutput,
} from 'shieldagent';

const registry = createDefaultRegistry();
const engine = new ScanEngine(registry);
const target = await loadMCPServer('./my-mcp-server');

const result = await engine.scan(target, {
  scanners: ['command-injection', 'tool-poisoning'],
  format: 'json',
});

console.log(`Found ${result.findings.length} issues`);
const output = formatOutput(result, 'json');

GitHub操作集成

name: MCP Security Scan
on: [push, pull_request]

jobs:
  security-scan:
    runs-on: ubuntu-latest
    permissions:
      security-events: write
    steps:
      - uses: actions/checkout@v4
      - uses: pnpm/action-setup@v4
      - uses: actions/setup-node@v4
        with:
          node-version: 20
          cache: pnpm
      - run: pnpm add -g shieldagent
      - run: shieldagent scan . --format sarif > results.sarif
      - uses: github/codeql-action/upload-sarif@v3
        with:
          sarif_file: results.sarif
        if: always()

CLI参考

shieldagent scan <path> [options]

Options:
  -f, --format <format>       Output format: table, json, sarif (default: "table")
  -s, --scanners <scanners>   Specific scanners to run
  -e, --exclude <patterns>    Glob patterns to exclude from scanning
  -c, --config <path>         Path to config file
  --ci                        CI mode: exit with code 1 if findings detected
  -v, --verbose               Verbose output
  -V, --version               Output version number
  -h, --help                  Display help

许可证

麻省理工学院