AI代理MCP层监控工具

Heimdall是一款实时监控本地AI代理MCP层配置和服务器文件的工具,通过BLAKE3指纹技术和操作系统密钥库锚定基准,提供变更检测、入侵分析和一键恢复功能。

  • by 2alf
  • Rust
  • 本地部署
  • 46 星标
  • 更新于
在 GitHub 查看 2alf/Claude-Defender

使用说明

Heimdall

The watchman for your local AI agents' MCP layer.



Heimdall对MCP配置和服务器文件进行指纹识别 克劳德桌面, Claude Code、Cursor、Windsurf和LM Studio 加载,并发出警报 你背后的一个瞬间被改变了。

以守卫通往阿斯加德的一座桥并进行打击的挪威守望者命名 当敌人靠近时,号角会保护你 切入点它 手表 并发出警告而且它并没有假装成一堵墙。 (原名克劳德·Defender, 一旦它超过了克劳德,就改名了。)


目录


威胁:LOTL通过MCP

生活在陆地上的攻击者不会带来恶意软件——他们颠覆了合法的 工具已经在你的机器上了。MCP服务器是一个完美的目标:值得信赖的 您的代理以完全访问权限启动程序。毒害其来源,或泄漏 恶意服务器进入代理读取的配置,并且您有一个特洛伊木马条目 每次运行的点——以及 看起来没什么问题这就是重点 洛特。

Heimdall的工作是注意:它会对每个配置和服务器文件进行指纹识别 一旦发生变化,它就会显示给你 正是 什么改变了,让你恢复。

运作原理

flowchart LR
  subgraph Hosts["MCP hosts (auto-discovered)"]
    A[Claude Desktop]
    B[Claude Code]
    C[Cursor]
    D[Windsurf]
    E[LM Studio]
  end
  Hosts -->|configs + server files| W[Filesystem watcher<br/>event-driven]
  W --> Core[Detection core<br/>BLAKE3 fingerprints]
  Core <-->|sign / verify| TR[trustroot<br/>keyed-MAC state]
  TR <-->|MAC key| KS[(OS keystore)]
  Logs[Claude logs] --> IA[Intrusion analysis]
  Core --> V{Verdict}
  IA --> V
  V -->|clean| OK[Protected]
  V -->|changed| DIFF[Diff → accept / revert]
  V -->|state forged| TAMPER[Tamper alert]

事件驱动:仅当 观看 文件发生了变化,所以在静止时也会发生变化 有效地没有工作并且检测是亚秒级的。

看看里面


Changes detected — a real syntax-highlighted diff with per-file or all-at-once accept / revert.

Baseline tamper — the keystore-anchored integrity alert, with one-click rebuild from the current files.

Settings — toggle the mascot, add custom files to watch, and manage the intrusion-notice ignore list.

Protected (logo mode) — the same dashboard with the static crest instead of the animated mark.

为什么基线不能伪造

篡改检测器的可信度取决于其基线。如果这是一个普通的 文件中,编辑服务器的攻击者可以重写基线以匹配 同样的违规行为,下一次检查显示“没有变化”

Heimdall以以下方式结束 trustroot:每条记录(哈希, 快照、挂起队列、审计日志)使用密钥进行身份验证 布莱克3 媒体访问控制 谁的钥匙在你的 操作系统密钥库 (凭证管理器/钥匙链/ 特勤局),不在磁盘上。

sequenceDiagram
  participant Atk as Attacker (file write)
  participant State as baseline
  participant KS as OS keystore
  participant H as Heimdall
  Atk->>State: rewrite hashes to hide the change
  Note over Atk,KS: can't read the MAC key — it's in the keystore
  H->>State: verify MAC
  State-->>H: invalid → TAMPER 🔔

现在需要建立基线 代码执行,而不仅仅是文件写入-- 删除它没有帮助,因为设置后丢失的基线被视为 篡改。这是 不 篡改-证明 针对已经拥有 像你一样执行代码,或者一个受损的操作系统。看 它是什么,不是什么.

支持的MCP主机

自动发现——只有当主机的配置存在时,才会对其进行监视。稍后安装 重新扫描会发现它。

主机 配置
克劳德桌面 %APPDATA%\Claude\claude_desktop_config.json (+操作系统等效值)
克劳德代码 ~/.claude.json
光标 ~/.cursor/mcp.json
风帆冲浪 ~/.codeium/windsurf/mcp_config.json
LM工作室 ~/.lmstudio/mcp.json
自定义 您在“设置”中添加的任何文件

特性

  • 完整性监测 --每个主机配置的实时BLAKE3指纹 以及每个服务器的源代码树 (不仅仅是入口文件,还有它的模块 使用锁文件也可以导入)。在更改时,语法突出显示与 每个文件或一次全部 接受 / 回复 (可疑版本已备份 第一)。即使稍后恢复,也会捕获瞬态编辑。
  • 梯形锚定基线 --上面的篡改证据。
  • 入侵分析 --开采克劳德自己的原木(mcp-info.json, mcp-server-*.log)进入每台服务器的时间线,标记 最近添加, 误差尖峰,以及 孤儿.按行或批量消除噪音。
  • 隔离 --禁用可疑服务器(已备份、可逆)。
  • 审计报告 --导出判决+时间线+签名痕迹到Markdown/JSON。
  • 无头CLI --相同的引擎,没有GUI,用于脚本编写和始终在线观看。

足迹

  • 无头观察者 (watch): 约7.5 MB,约0.1%CPU --没有浏览器,没有投票。
  • 桌面图形用户界面:约35 MB发动机+ WebView 2(Chromium) UI运行时(~310MB, 主要是共享操作系统页面,修剪成托盘)。任何webview应用程序都是固有的。

运行无头 watch 始终处于保护状态;打开GUI进行查看。

基准测试

可复制(Ryzen 9 8945H,发布)——见 基准.md.

  • BLAKE3哈希 8.3千兆字节/秒;基线验证 约27µs (cargo bench).
  • check 约40毫秒 在典型的配置上; 约170毫秒内有1000台服务器 (~0.12ms/文件)。
  • 检测亚秒(400毫秒去抖动+~40毫秒扫描)。

安装

Windows--预构建安装程序

抓住 .msi 或 .exe 来自 发布;它安装到 托盘,将自己添加到启动中,并在首次启动时建立基线。这 安装程序是 无符号,因此SmartScreen将发出警告-- 更多信息→ 无论如何都要跑. 根据发布的SHA-256验证下载。

从源代码构建——推荐;macOS和Linux需要

目前还没有预构建的macOS/Linux捆绑包,Tauri也无法交叉编译,所以 构建本机安装程序 在目标操作系统上:

git clone https://github.com/2alf/Claude-Defender
cd Claude-Defender/claudeDefender-tauri
npm run setup            # frontend deps
npm run tauri build      # native bundle → src-tauri/target/release/bundle/
# or: npm run tauri dev  # run without packaging

先决条件: 锈 + 节点18+.On Linux还安装了webview/keystore构建deps:

sudo apt install libdbus-1-dev libwebkit2gtk-4.1-dev libgtk-3-dev \
  libappindicator3-dev librsvg2-dev patchelf pkg-config

平台状态: 构建并测试于 视窗macOS和Linux路径 (钥匙链/特勤局, notify,本地对话框)已实现,但 不 尚未验证 --欢迎测试人员。

命令行界面

相同的核心,无头:

heimdall watch                # real-time monitoring (~8 MB, no GUI)
heimdall check                # scan once — exit 0 clean / 1 changes / 2 tamper
heimdall accept | revert      # accept/revert pending changes
heimdall reinit               # rebuild baseline from current files (recovery)
heimdall intrusion            # MCP install/run trace from logs
heimdall report               # export an audit report (Markdown + JSON)
heimdall quarantine <server>  # disable a suspect server (restore to undo)
heimdall status               # watched files + last verdict
heimdall reset --yes          # factory reset: wipe all state + keystore anchors

用以下内容覆盖路径 CLAUDE_DEFENDER_CONFIG / CLAUDE_DEFENDER_STATE_DIR.

该二进制文件目前作为 claude-defender-cli; heimdall 是重命名吗 目标。原始Python脚本已退役 legacy/.

它是什么,不是什么

A. 防篡改侦探 控制。诚实是这个名字的重点。

是: 一个实时观察器,它告诉每个服务器发生了什么变化以及何时发生变化 出现;一个不能默默伪造基线的信任锚;一键 恢复/隔离。

不是: 一 墙 (它警告;你决定)· 防损毁的 反对代码exec 作为您的用户或受损的操作系统 防病毒/沙盒.对于 LOTL的预执行外壳侧(curl … | sh 来自一个有毒的README),请参阅 兄弟项目 whatif.

路线图

已签署的发布+SBOM·审计链的远程锚定·更丰富的日志↔配置 关联·一个非WebView UI,用于数十MB的GUI·完整标识符重命名 (二进制文件,捆绑包id)。

安全和许可证

开源。欢迎披露——请参阅 可变数据印刷.国家生活 在...之下 MCPMonitor/ (所有MAC签名;哈希链 audit.log.json;预还原 backups/). GPL-3.0。

感谢所有提供帮助的人-- 名人堂.