AI代理安全扫描器

Sentori是一款专为MCP(模型上下文协议)生态系统和AI代理工具链设计的安全扫描器,专注于检测提示注入、供应链中毒、MCP配置错误、秘密泄露和其他代理特有的攻击向量。

  • by TakumaLee
  • TypeScript
  • 本地部署
  • 更新于
在 GitHub 查看 TakumaLee/AgentShield

使用说明

守るべきものを、守る。

感觉 是专为MCP(模型上下文协议)生态系统和AI代理工具链构建的安全扫描器。在广泛的表面区域工具松散地扫描一切的地方,Sentori深入研究了快速注射、供应链中毒、MCP配置错误、秘密泄漏和通用扫描仪完全错过的代理攻击媒介。

深度大于广度。从第一天起就是MCP本地人。


🚀 快速开始

# Scan current directory
npx @nexylore/sentori scan

# Scan a specific agent project
npx @nexylore/sentori scan ./path/to/agent

# JSON output for CI/CD pipelines
npx @nexylore/sentori scan ./path/to/agent --json

# Save report to file
npx @nexylore/sentori scan ./path/to/agent --output report.json

# Enable deep scan (OCR on images)
npx @nexylore/sentori scan ./path/to/agent --deep-scan

✨ v0.13.0的新增功能

AI-BOM输出(CycloneDX 1.6)

将扫描结果导出为CycloneDX AI-BOM,以符合欧盟人工智能法案和审计证据:

npx @nexylore/sentori scan . --format cyclonedx --output ai-bom.json

GitHub代码扫描集成

将结果直接上传到GitHub安全选项卡:

- uses: TakumaLee/Sentori@main
  with:
    upload-sarif: 'true'

MCP注册表IOC自动更新

每次扫描时自动获取最新的已知恶意MCP服务器列表。

A2A协议安全(7条新规则)

涵盖代理卡伪造、身份欺骗、重放攻击、能力升级、, 以及Google A2A多代理环境中的恶意输出模式。


为什么是森托里?

2026年的AI代理使用真正的工具访问:文件系统、API、数据库、代码执行。单个受损的MCP服务器或技能包可以升级为完全的系统访问权限,不需要漏洞利用链。

通用SAST工具无法理解代理攻击面。 他们不会抓住:

  • MCP工具描述中嵌入的快速注入
  • 对技能登记处的公约抢注攻击
  • 代理工具中的隐蔽DNS/ICMP泄漏通道
  • 图像元数据中隐藏的视觉提示注入
  • 通过知识库中的重复攻击导致RAG中毒

Sentori是专门为这些代理威胁载体而构建的。


🔍 36个安全扫描仪

Sentori船只 36台扫描仪 7个类别:

🔗 供应链和代码完整性

扫描仪 它能捕捉到什么
供应链扫描器 Base64隐藏命令、RCE模式、IOC阻止列表、凭证盗窃、数据泄露、持久性机制
安装后扫描仪 恶意 postinstall 在软件包安装时执行的脚本
LangChain序列化扫描器 LangChain和代理管道中的不安全酸洗/反序列化
常规蹲式扫描仪 拼写错误、前缀劫持、技能和MCP服务器名称的名称空间混淆
NPM认证扫描仪 验证npm包认证和OIDC来源签名,以确保供应链的完整性
IDE规则注入扫描器 恶意 .cursorrules, .windsurfrules, .github/copilot-instructions.md 将提示注入开发人员IDE

💉 快速注射和对抗

扫描仪 它能捕捉到什么
快速注射测试仪 提示、MCP工具描述和面向用户的文本中的已知注入模式
视觉提示注射扫描仪 图像中嵌入的隐藏指令(alt文本、元数据、隐写术)
RAG中毒扫描仪 RAG知识库中的重复攻击和内容中毒
红队模拟器 模拟越狱、角色扮演漏洞、多回合攻击和间接注入向量

🔐 机密和数据保护

扫描仪 它能捕捉到什么
秘密泄漏扫描仪 API密钥、令牌、密码、代码和配置之间的私钥
剪贴板Exfiltration扫描仪 用于无声数据盗窃的剪贴板访问模式
DNS/ICMP工具扫描程序 通过代理工具中的DNS隧道或ICMP通道进行隐蔽数据泄露

🛡️ 配置和权限

扫描仪 它能捕捉到什么
DXT安全扫描仪 不安全的Claude桌面扩展——执行不受限制,文件/网络访问不受限制
MCP配置审计员 危险的MCP服务器配置、特权过高的工具、缺少身份验证
代理配置审计员 危险的代理配置、缺失的安全护栏和速率限制
卫生审计员 权限过宽、缺少访问控制、默认值有风险
权限分析器 权限授予过多,缺少最小权限执行
环境隔离审核员 缺少沙盒、共享环境、容器逃逸风险
Tetora配置审计员 Tetora代理配置安全——不安全的调度设置、缺少护栏、特权过多的角色

🧪 建筑与国防

扫描仪 它能捕捉到什么
技能审核员 技能包结构问题、不安全模式、缺少验证
通道表面审计员 多通道攻击面,无保护的输入通道
防御分析器 缺少防御层,安全架构存在漏洞

🔮 MCP专家套房

扫描仪 它能捕捉到什么
MCP刀具阴影检测器 模仿合法MCP服务器工具拦截调用的工具名称——相似名称(Levenshtein距离)、分隔符交换(read-file 对比 read_file),以及案例差异(Bash 对比 bash)
MCP Git CVE扫描程序 检查MCP服务器与已知CVE数据库的依赖关系
MCP工具清单扫描仪 验证MCP工具清单是否存在架构问题、缺失字段和不安全的默认值
MCP工具结果注入扫描仪 在MCP工具结果处理中检测注入向量——从工具返回给LLM的恶意有效载荷

🤖 代理框架安全

扫描仪 它能捕捉到什么
代理框架扫描器 跨多代理框架的安全问题——不安全的委托、缺失的护栏、未经验证的工具输出
A2A安全扫描仪 Google A2A(代理到代理)协议漏洞——未经身份验证的端点、缺少功能限制、不安全的任务委派

即将推出

  • 代理环路检测器 --识别多步代理计划中的无限循环/资源耗尽风险

📊 安全评分

Sentori输出a 安全等级 (A+至F)基于4个维度的置信度加权结果:

╔══════════════════════════════════════════╗
║         Sentori Security Report          ║
╠══════════════════════════════════════════╣
║  Security Grade:  B+    (78/100)         ║
║  Findings:  2 high · 5 medium · 3 low   ║
║  Scanners:  36/36 active                 ║
╚══════════════════════════════════════════╝

三维评分

尺寸 重量 测量值
代码安全 35% 供应链、秘密、代码中的注入模式
配置安全 25% MCP配置、DXT清单、权限、通道
防御得分 25% 护栏、沙箱、快速硬化
环境安全 15% 隔离、共享环境风险、容器配置

基本规则: 如果任何一个维度得分为F(<60),则总得分上限为该维度的得分+10。安全性取决于最薄弱的环节。

置信水平

每一个发现都有一个 自信 影响其在分数中权重的级别:

信心 权重 分配时
definite 1.0× 直接模式匹配(例如,硬编码API键)
likely 0.8× 低假阳性率的静态分析
possible 0.6× 推理分析(例如,缺失防御检测)

第三方代码发现的权重为0.3倍(开发人员不能直接修复供应商提供的代码)。

CLI标志

标志 描述
--include-vendored 在扫描中包括第三方/供应商目录
--json 以JSON格式输出结果
--output <file> 将JSON报告保存到文件
--context <app|framework|skill> 设置严重性调整的扫描上下文

JSON输出

使用时 --json 或 --output,报告包括:

  • summary.dimensions --每个维度得分(codeSafety, configSafety, defenseScore, environmentSafety)
  • summary.scannerBreakdown --按严重程度统计每个扫描仪的查找次数
  • 每个发现都包括 confidence 现场(definite, likely,或 possible)

🆚 Sentori vs其他

能力 Sentori mcp扫描(Snyk) MEDUSA 通用SAST
MCP配置审核 ✅ 深 ✅ 基础 ❌ ❌
DXT(克劳德桌面)扫描 ✅ ❌ ❌ ❌
视觉提示注入(OCR) ✅ ❌ ❌ ❌
IDE规则注入(.cursorules) ✅ ❌ ❌ ❌
公约蹲位检测 ✅ ❌ ❌ ❌
MCP工具结果注入 ✅ ❌ ❌ ❌
A2A协议安全 ✅ ❌ ❌ ❌
DNS/ICMP泄漏通道 ✅ ❌ ✅ ❌
RAG中毒 ✅ ❌ ❌ ❌
红队模拟 ✅ ❌ ✅ ❌
供应链(npm脚本) ✅ ❌ ✅ 部分
秘密检测 ✅ ❌ 部分 ✅
零配置,npx就绪 ✅ ✅ ❌ 变化多样
CI/CD GitHub行动+SARIF ✅ ❌ ❌ 变化多样
安全等级评分 ✅ ❌ ❌ 变化多样
  • mcp扫描 (被Snyk收购)——轻量级MCP服务器扫描器,现已集成到Snyk平台中
  • 水母 --实时代理端点的框架级红队(运行时,而非源)
  • 感觉 --部署前将代理代码库的静态扫描程序向左移动(作为运行时工具的补充)

💰 定价

计划 价格 功能
自由 $0 所有36个扫描程序,CLI+npx,JSON/SARIF输出,GitHub Action,无限制本地扫描
专业云 每月29美元 免费+云扫描仪表板、团队报告、Slack/GitHub通知、扫描历史记录、优先级支持中的所有内容
企业 自定义 Pro+中的所有内容自定义扫描程序规则、SSO/SAML、气隙部署、SLA、专用安全审查

Pro Cloud和Enterprise将于2026年第二季度上市。 加入候补名单→


🔧 CI/CD集成

GitHub操作

- name: Sentori Security Scan
  uses: TakumaLee/Sentori@main
  with:
    scan-path: '.'
    fail-on-critical: 'true'
    output-format: 'text'
输入 描述 默认值
scan-path 扫描路径 .
fail-on-critical 关键发现的工作流程失败 true
output-format 输出格式(text 或 json) text

并发调优

Sentori并行运行扫描仪。默认并发性为 Math.min(5, cpu_count)在受约束的CI运行程序(例如GitHub Actions 2-core)上,使用OCR+正则表达式繁重的扫描程序减少它以避免OOM:

环境 推荐 --concurrency
GitHub操作(2核运行器) 2
地方发展 5 (默认)

通过CLI标志:

npx @nexylore/sentori scan --concurrency 2

通过环境变量:

SENTORI_CONCURRENCY=2 npx @nexylore/sentori scan

🛡️ 安全徽章

使用Sentori徽章直接在README中显示项目的MCP安全状态。

徽章URL格式

https://sentori.nexylore.com/api/badge/:owner/:repo

替换 :owner 使用您的GitHub用户名/org和 :repo 使用您的存储库名称。

Markdown嵌入

[![Sentori Security](https://sentori.nexylore.com/api/badge/OWNER/REPO)](https://sentori.nexylore.com)

示例 (替换 OWNER 和 REPO 与你的价值观):

[![Sentori Security](https://sentori.nexylore.com/api/badge/TakumaLee/my-mcp-server)](https://sentori.nexylore.com)

徽章状态级别

徽章 状态 描述
安全 未检测到安全问题
警告 存在中等严重程度的发现
关键的 检测到高或关键发现
未扫描的 尚未扫描存储库

运作原理

  1. 跑 npx @nexylore/sentori scan 在您的项目上,并通过 Sentori仪表板
  2. 徽章会自动反映您的最新扫描结果
  3. 每次新扫描后几分钟内徽章更新

📦 程序化API

import { ScannerRegistry, SupplyChainScanner, DxtSecurityScanner } from '@nexylore/sentori';

const registry = new ScannerRegistry();
registry.register(new SupplyChainScanner());
registry.register(new DxtSecurityScanner());

const report = await registry.runAll('./target-directory');
console.log(report.summary);

配置

.sentoriignore

创建一个 .sentoriignore 项目根目录中的文件,用于从扫描中排除路径(gitignore语法):

# Exclude vendored dependencies
vendor/
third_party/

# Exclude specific directories
docs/
examples/

自定义规则(.sentori.yml)

地点a .sentori.yml 在目标目录的根目录中定义特定于项目的规则、抑制发现或覆盖严重性级别:

version: 1

rules:
  - id: no-hardcoded-aws-key
    pattern: "AKIA[0-9A-Z]{16}"
    severity: critical
    message: "Hardcoded AWS access key ID"
    files: "**/*.{ts,js,py}"  # optional glob — defaults to all files

ignore:
  - scanner: "Secret Leak Scanner"
    file: "tests/**"

overrides:
  - scanner: "Supply Chain Scanner"
    severity: high

看 docs/sentori-yml.md 获取完整的模式参考。

IOC阻止列表

内置的IOC阻止列表位于 src/data/ioc-blocklist.json.提供一个外部JSON文件来扩展它:

npx @nexylore/sentori scan ./agent --ioc ./custom-ioc-blocklist.json

发展

npm install
npm run build
npm test

关于Nexylore

感觉 由以下人员建造和维护 Nexylore --一家专注于代理人工智能时代的安全工具公司。

守护应该守护的东西。 --保护必须保护的东西。


许可证

BSL 1.1 ©Nexylore

免费使用 用于扫描您自己的项目、内部CI/CD、教育和研究。 商业限制 仅适用于构建相互竞争的安全扫描服务。 转换为 Apache 2.0 2030年3月16日。