mcpField
S
secure-secret-drop

secure-secret-drop

github.com/moeadham安全14.2k 次安装5 周前更新
代码仓库

关于 secure-secret-drop

Secure Secret Drop 是一项本地技能,可通过临时表单收集秘密并直接写入获准文件,避免提交值进入聊天和模型上下文。Quick Tunnel 使用 Cloudflare,因此 Cloudflare 属于信任边界。

主要功能

  1. 01创建临时秘密填写表单
  2. 02通过 Quick Tunnel 传输提交内容
  3. 03查看回执状态但不暴露值
  4. 04将回执写入获准的 env 或 JSON 文件
  5. 05使表单和回执过期或取消

适用场景

  1. 01不通过聊天收集 API 密钥
  2. 02将提交的凭据保存到获准的 env 文件
  3. 03接收并写入明确授权路径的秘密

安装

复制下面的命令,在终端中运行。

$npx skills add https://github.com/moeadham/secure-secret-drop --skill secure-secret-drop

安装后在 Claude Code 中输入/secure-secret-drop确认已加载。

包含的文件

除 SKILL.md 外,安装时一起下载的参考资料和脚本。

.gitignore
LICENSE
README.md
references/
security-model.md
cloudflared-setup.md
scripts/
handoff.py
tests/
test_handoff.py

详细介绍

安全机密投递

当用户需要在不通过聊天或保管库的情况下提供机密信息时,使用此本地技能。它会通过隔离的 Cloudflare Quick Tunnel 创建一个临时公开能力 URL,该隧道由仅绑定到 127.0.0.1 的 HTTP 源站支持,然后将提交的字节直接写入明确授权的目标文件,不会将其放入模型上下文。

要求和首次运行设置

必需:

  • Python 3 和标准库;无需安装 Python 软件包。
  • cloudflared 可执行文件。
  • 可访问 Cloudflare 的出站网络。本地表单源站仅绑定到 127.0.0.1。

不需要 Cloudflare 账户、域名、API 令牌、cloudflared tunnel login、命名隧道、DNS 记录或后台服务。此技能会为每次投递创建匿名临时 Quick Tunnel。

创建第一个表单前,运行 doctor。如果报告 cloudflared=missing,不要尝试运行 create;当终端工具可用时,也不要让用户自行解决。阅读 Cloudflared 设置,确定主机操作系统和软件包管理器,说明拟议的安装方案,获得安装软件包或使用 sudo 所需的任何批准,从 Cloudflare 官方分发渠道安装,然后重新运行 cloudflared --version 和 doctor。此技能绝不可运行 cloudflared tunnel login、创建 DNS、安装隧道服务或更改现有 Cloudflare 配置。

如果 cloudflared 安装在 PATH 之外,请在命令调用或 Agent 服务环境中将 CLOUDFLARED_BIN 设置为其绝对可执行文件路径。CLI 也会自动检查 macOS/Linux 的常见位置。

工作流

  1. 运行 doctor。
  2. 创建表单并将返回的 URL 发送给用户。绝不要让用户在聊天中粘贴值。
  3. 用户提交一次,然后只需告知已完成提交。
  4. 运行 status RECEIPT_ID;此命令只会显示状态和字段名称,不会显示值、长度或哈希。
  5. 直接将内容写入用户批准的确切路径,或丢弃虚拟测试回执。

通过技能加载器解析已安装的技能目录;不要复制作者专用的绝对路径。然后使用其中的脚本:

PY="$(command -v python3)"
CLI="<installed-skill-directory>/scripts/handoff.py"
$PY "$CLI" doctor
$PY "$CLI" create --field API_KEY --field API_SECRET --ttl 600
$PY "$CLI" status RECEIPT_ID
$PY "$CLI" consume RECEIPT_ID --env-file /exact/approved/path.env
$PY "$CLI" consume RECEIPT_ID --json-file /exact/approved/path.json
$PY "$CLI" consume RECEIPT_ID --env-file /exact/path.env --overwrite
$PY "$CLI" consume RECEIPT_ID --discard
$PY "$CLI" cancel RECEIPT_ID

选项:重复使用 --field NAME;使用 --label NAME=Visible label;仅对已声明的非机密字段使用 --plain NAME。名称最初必须符合大写环境变量键的格式。默认 TTL 为 10 分钟。

操作规则

  • 绝不要对回执调用 read_file、cat、show 或其他显示命令。CLI 刻意不提供原始输出命令。
  • 绝不要将值放入参数、URL、日志、状态输出或聊天中。
  • 现有目标键需要使用 --overwrite。用户明确指定目标路径即视为已授权;消费前不要再次询问。仅当目标缺失或不明确,或需要获得覆盖批准时才询问。
  • 目标验证或写入失败时,已提交的回执仍可重试。
  • GET 和 HEAD 不会消费表单;只有一个有效的 POST 会成功。因此,链接扫描器不会消费表单。
  • 表单会过期,其本地源站和隧道会自动终止。cancel 会提前关闭。成功的 POST 会立即使能力失效,留出约两秒以便完整确认响应送达浏览器,然后停止服务;回执会等待显式消费。
  • 使用脚本和目标路径的绝对路径,确保新的 Hermes 会话行为一致。
  • 表单视觉风格应克制、专业;配色中不要使用紫色。

信任与存储模型

这是一个仅使用 TLS 的 MVP,并非浏览器端到端加密。该 URL 是一个临时的公开能力 URL。Cloudflare 在其边缘节点终止公网 TLS,并通过 Quick Tunnel 转发到仅绑定至 127.0.0.1 的 HTTP 源站。因此,Cloudflare 属于信任边界的一部分。隧道通过 tunnel --no-autoupdate --config /dev/null --url http://127.0.0.1:<random-port> 启动;不会触碰命名隧道、现有配置、DNS、Workers 或 sudo。

待处理表单的能力/CSRF 材料和已提交的回执默认存储在技能目录之外的 $XDG_STATE_HOME/secure-secret-drop/ 或 ~/.local/state/secure-secret-drop/ 中(目录权限为 0700,文件权限为 0600)。设置 SECURE_SECRET_DROP_STATE_DIR 可覆盖该路径。按照此已批准的 MVP 方案,回执以明文形式静态存储,其安全性取决于本地用户帐户和磁盘加密。请及时使用或取消。使用、取消或过期后,会删除回执/私人表单数据;同时保留一条不含机密信息的最小状态记录,以便 status 报告终止状态。

有关限制和不变量,请参阅安全模型。

评论

支持 Markdown