mcpField
K
Klarion

Klarion

本地服务
github.com/0x1Adi安全114 周前更新

关于 Klarion

Klarion 是用于代码库的机密扫描工具,先用本地规则筛选候选项,再由 AI 模型判断是否为真实密钥,适合开发者和 CI 流程。它提供命令行、提交拦截、Claude Code 钩子及 MCP 服务等使用方式。

主要功能

  1. 01本地扫描密钥格式、凭据文件及编码内容
  2. 02由 AI 模型判定候选项是否为机密
  3. 03提供扫描与提交保护命令
  4. 04支持 Claude Code 写入拦截钩子
  5. 05提供 CI 扫描与 MCP 服务

适用场景

  1. 01在代码提交前拦截新增密钥
  2. 02在 pull request 中扫描新增代码
  3. 03让编码 Agent 写入代码前检查潜在密钥

MCP 相关

MCP 服务向客户端提供 scan_text 和 scan_file 工具,供 Agent 在写入代码或提交前扫描。未配置模型时由 Agent 根据候选项和规则进行判断;配置模型后由 Klarion 执行判断。

配置

本地服务的配置在各客户端中通用,复制后粘贴到客户端的 MCP 配置文件即可。

暂未收录安装方式

我们还没有获取到这个服务的安装包或远程地址,请按项目 README 中的说明安装。

代码仓库
安装包
mcpbklarion-mcp-v0.4.3.mcpb0.4.3

工具

还没有获取到工具列表

本地服务需要在你的电脑上运行后才能读取工具,维护者暂未提供工具列表。

详细介绍


Klarion 可在代码中发现密钥:API 密钥、密码和令牌。

它分两步运行:

  1. 发现。 快速的本地检查会标记所有看起来像密钥的内容。
  2. 检查。 AI 模型会结合周围的代码读取每个候选项,并判断它是否是真正的密钥。

模式扫描器只做到第 1 步,因此也会标记测试值、ID 和哈希。Klarion 会为你找出 真正泄露的内容。

在泄露发生时运行

这是一个 Claude Code 钩子,会在文件创建前阻止写入。Agent 无法绕过它, 无论是通过文件工具还是 Bash 都不行。

编码 Agent 被要求将 AWS 密钥对硬编码。Klarion 的工具调用前钩子以 95% 的置信度阻止写入,Agent 表示无法通过 Bash 或文件工具写入凭据。

$ klarion scan .

services/billing/client.py
  [critical] stripe-secret-key  39:18  sk_l****4bQx
    verdict: secret (confidence 0.96)
    | stripe.api_key = "sk_l****4bQx"

Summary: 1 finding(s) across 1 file(s), 198 suppressed [1204 files scanned in 612ms]

安装

macOS:

brew install 0x1Adi/tap/klarion

其他平台需要 Go 1.25 或更高版本:

go install github.com/0x1Adi/Klarion/cmd/klarion@latest

或者从发布页面下载二进制文件。

Klarion 需要 AI 模型。请选择一个:

模型设置
Anthropic(默认)export ANTHROPIC_API_KEY=...
OpenAI 或兼容模型export OPENAI_API_KEY=... 并设置 provider = "openai"
本地模型,所有内容都留在你的设备上运行 Ollama 并设置 provider = "ollama"
你的 Claude Code 登录设置 provider = "claude-cli"

设置写入 .klarion.toml 中的 [ai] 部分。所有选项请参阅参考文档。

使用方法

目标方法
扫描文件夹klarion scan .
阻止提交包含密钥的更改klarion protect
使用 pre-commit 框架阻止提交使用下方的 .pre-commit-config.yaml
阻止 Claude Code 写入密钥/plugin marketplace add 0x1Adi/Klarion、/plugin install klarion@klarion,然后重启 Claude Code
阻止 Cline、Cursor 或任何 MCP Agent 写入密钥使用下方的 MCP 服务
让添加密钥的拉取请求检查失败使用下方的 GitHub Action
在已有扫描结果的仓库中开始使用执行 klarion baseline create,这样只有新密钥才会导致失败
# .github/workflows/secrets.yml
name: secret-scan
on: [push, pull_request]

jobs:
  klarion:
    runs-on: ubuntu-latest
    permissions:
      contents: read
      security-events: write
    steps:
      - uses: actions/checkout@v6
        with:
          fetch-depth: 0
      - uses: 0x1Adi/[email protected]
        with:
          anthropic-api-key: ${{ secrets.ANTHROPIC_API_KEY }}

对于拉取请求,它只扫描 PR 新增的内容。它会缓存 AI 的回答,因此未更改的代码 不会产生费用。扫描结果会显示在作业日志中。对于未启用 GitHub Code Security 的私有仓库, 添加 upload-sarif: "false" 以跳过上传到 Security 标签页。GitLab CI 和所有选项请参阅 参考文档。

# .pre-commit-config.yaml
repos:
  - repo: https://github.com/0x1Adi/Klarion
    rev: v0.4.3
    hooks:
      - id: klarion
        stages: [pre-commit]

如果没有 stages 行,钩子就处于关闭状态,只有在你执行 pre-commit run --hook-stage manual klarion 时才会运行。klarion 钩子首次运行时会使用 Go 构建 Klarion;如果已安装 klarion,请使用 id: klarion-system。所有提交者都需要配置模型。

// ~/.cline/mcp.json, or the MCP settings of any other client
{
  "mcpServers": {
    "klarion": {
      "command": "klarion",
      "args": ["mcp"]
    }
  }
}

Agent 会在写入代码前调用 scan_text,并在提交前调用 scan_file。请逐次批准 调用,而不要自动批准该服务:scan_file 会读取传入的任意路径。如果未配置模型,服务会将每个 候选项及其判断规则交给该 Agent 进行判断,因此无需 API 密钥。配置模型后,则由 Klarion 进行判断。 完整步骤包括工具和验证安装的方法,请参阅:llms-install.md。

结果

Klarion 找到的真实密钥约为 gitleaks 的 1.7 倍,其告警中有 89% 属实 (gitleaks:91%)。

我们在 CredData 上测试了 Klarion v0.3.0:该数据集包含 337 个真实的开源仓库,Samsung 标注了其中包含密钥的代码行。以下数据不包括测试文件夹中的代码。

Klariongitleaksdetect-secrets
找到的真实密钥35%21%35%
属实的告警89%91%34%
在 flask 和 rails 中的误报933247

需要了解:

  • Klarion 会有意跳过测试夹具和文档示例。 CredData 将这些也计为真实密钥。 按这种方式计算,Klarion 找到了 9%,gitleaks 找到了 46%。
  • Klarion 的数据来自一个样本:使用一个模型(Claude Haiku)进行的 612 次 AI 检查。预计找到率为 30% 到 40%,真实性为 82% 到 97%。
  • **CredData 的标签来自其他扫描器发现的内容,**这对那些扫描器有利。

完整方法和数据:benchmark/REPORT.md。

工作原理

步骤 1 运行本地检查并找到候选项。步骤 2 由 AI 模型逐一检查:真实密钥会导致扫描失败,其余内容会被隐藏。
  • 步骤 1 在你的机器上运行。 它会查找已知密钥格式、password = value 形式的代码行、.pgpass 等凭据文件,以及隐藏在 base64 或十六进制中的密钥。它还会检查字符串看起来有多随机。
  • 步骤 2 交由模型判断。 每个候选项都会连同几行代码一起发送。模型会将其判定为密钥、误报或不确定。不确定的情况按密钥处理。
  • 你可以查看哪些内容被隐藏。 运行 klarion scan . --show-suppressed。
  • 你的代码只会发送给你选择的模型。 设置 send_secret = false,改为发送掩码后的值。这样准确性会降低。

限制

  • 它需要模型。 如果没有模型,klarion scan 和提交钩子会报错并停止。 Claude Code 钩子仍会拦截 AWS、GitHub 和 Stripe 等服务的密钥,而 MCP 服务会将候选项及其规则交给你的 Agent 判断。
  • 没有 API 密钥? 无需设置即可使用的托管判定服务即将推出。加入列表。
  • 模型可能会判断错误。 使用 --show-suppressed 查看它隐藏的内容。
  • 它能找到密钥,但不会修复密钥。 轮换它发现的任何密钥。
  • 可以使用 git commit --no-verify 跳过本地钩子。 也要通过 Action 在 CI 中运行 Klarion。pre-commit 钩子只检查已暂存的更改,因此在 CI 中没有内容可检查。

更多

参考文档 · 基准测试 · 设计 · 更新日志 · 贡献指南 · 安全

MIT © Klarion 作者

评论

支持 Markdown

第一次接触 MCP?

从协议是什么,到在客户端里装上第一个服务,这几条回答覆盖了大多数入门问题。

一个开放协议,规定了 AI 应用如何以统一方式连接外部工具与数据源。客户端负责与模型对话,MCP 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。