信任中心

您的剪贴板留在您的电脑上。以下说明它如何做到 — 以及它的边界在哪里。

本页的每一句陈述都已对照源代码核实,并在旁边注明了负责强制执行的代码。凡是 ClipVault 保护不了您的地方,本页也照实写明。

已对照 ClipVault 0.1.0 核实 · 页面生成于 2026-09-15

原则

由代码强制执行的四项承诺

这些不是需要有人记住的方针:每一项都由一项检查或测试把守,违反就会让构建失败。

网络

剪贴内容无法离开这台电脑

整个程序中只有一个文件 net.py 可以建立连接,而它唯一的函数 get_json(url, allowed) 没有任何可以携带请求正文的参数。不存在上传剪贴内容的代码路径,因为根本没有可用来上传的东西。

每次推送时由 scripts/check_network.py 强制检查:只要其他模块导入网络库,或网关新增了 databodypayloadcontenttext 参数,构建就会失败。

遥测

没有遥测,连选项都没有

程序没有使用统计、崩溃报告或分析功能。设置文件里还留着一个 telemetry 字段,但没有任何代码读取它来发送东西;而且每次加载或保存设置时,无论文件里写的是什么,Config.normalize() 都会把它强制设为 false。

src/clipvault/config.py — 每次加载和保存都经过 normalize()

更新

更新检查和消息需要您主动开启

全新安装时两者都是关闭的,ClipVault 会在首次运行时询问。选择否,它就从不建立连接。选择是,它每天对一个小小的版本文件发出一次 HTTPS GET — 没有正文,没有 Cookie,没有标识符;它添加的唯一请求头只写明 ClipVault 及其版本。明文 HTTP 和重定向一律拒绝,超过 64 KB 的响应直接丢弃。

net.get_jsonupdates.fetch。组织可以通过 DisableUpdateCheckDisablePromos 策略将两者关闭。

更新链接

“获取新版本”只会指向官方网站

版本文件是程序获取来的东西,而不是它信任的东西。其中的链接只有在是 ClipVault 网站上的路径,或同一主机上的 https 地址时才会保留,因此被篡改的文件无法把您引向仿冒的下载。版本号只接受数字和点,所以也无法夹带消息。

updates.official_linkupdates.clean_version — 对缓存的副本同样适用。

数据流向

一条剪贴内容的去向,逐步说明

上方框内的一切都发生在您的电脑上、在您的 Windows 账号之下。下方框是程序唯一的网络路径,它接触不到您的剪贴内容。

ClipVault 数据流向 复制的剪贴内容先经过捕获关卡,带有“不要记录”标记或从排除的应用中复制的内容会在这里被丢弃。检测环节查找凭据;凭据用 Windows DPAPI 加密,如果加密失败则完全不保存。剪贴内容保存在 %LOCALAPPDATA%\ClipVault 中的本地 SQLite 数据库里,该文件夹的权限锁定为仅限您的账号。剪贴内容只有在被粘贴到已确认位于前台的窗口时才会离开存储,粘贴过的凭据随后会从剪贴板中清除。另外,只有在您主动开启时,程序才会对一个版本文件发出一次 HTTPS GET;这条路径上没有任何剪贴数据。
这台电脑 · 您的 Windows 账号
1剪贴板您在任意应用中复制文本、图片或文件。
2捕获关卡排除标记 · 排除的应用 · 组织策略
3检测在前 1,000,000 个字符中查找凭据
4DPAPI 加密仅限凭据。加密失败则不保存。
其他剪贴内容
从不保存被其应用标记为“不要记录”,或从排除的应用中复制
5本地数据库%LOCALAPPDATA%\ClipVault 中的 SQLite · 文件夹权限仅限您
6弹窗与粘贴按键只发给已确认在前台的窗口
7粘贴后清除粘贴的凭据 30 秒后清除,除非您又复制了新内容
剪贴内容没有通往网络的路径
唯一的网络路径 · 除非您开启,否则关闭
更新检查每天一次,仅在您允许时
HTTPS GET · 无正文 · 无 Cookie
ClipVault 网站上的 release.json最新版本、说明链接和可选的消息——对所有人都是同一个响应
发送:该文件的地址,以及写明 ClipVault 及其版本的 User-Agent,从您的 IP 地址发出。从不发送:剪贴内容、历史记录、设置或任何标识符。
ClipVault 数据流向 复制的剪贴内容先经过捕获关卡,带有“不要记录”标记或从排除的应用中复制的内容会在这里被丢弃。检测环节查找凭据;凭据用 Windows DPAPI 加密,如果加密失败则完全不保存。剪贴内容保存在 %LOCALAPPDATA%\ClipVault 中的本地 SQLite 数据库里,该文件夹的权限锁定为仅限您的账号。剪贴内容只有在被粘贴到已确认位于前台的窗口时才会离开存储,粘贴过的凭据随后会从剪贴板中清除。另外,只有在您主动开启时,程序才会对一个版本文件发出一次 HTTPS GET;这条路径上没有任何剪贴数据。
这台电脑 · 您的 Windows 账号
1剪贴板您在任意应用中复制文本、图片或文件。
2捕获关卡排除标记 · 排除的应用 · 组织策略
3检测在前 1,000,000 个字符中查找凭据
4DPAPI 加密仅限凭据。加密失败则不保存。
5本地数据库%LOCALAPPDATA%\ClipVault 中的 SQLite · 文件夹权限仅限您
6弹窗与粘贴按键只发给已确认在前台的窗口
7粘贴后清除粘贴的凭据 30 秒后清除,除非您又复制了新内容
剪贴内容没有通往网络的路径
唯一的网络路径 · 除非您开启,否则关闭
更新检查每天一次,仅在您允许时
HTTPS GET · 无正文 · 无 Cookie
ClipVault 网站上的 release.json最新版本、说明链接和可选的消息——对所有人都是同一个响应
发送:该文件的地址,以及写明 ClipVault 及其版本的 User-Agent,从您的 IP 地址发出。从不发送:剪贴内容、历史记录、设置或任何标识符。

关卡。被其应用标记为“不要记录”的剪贴内容 — 即 KeePass、1Password 和 Bitwarden 设置的标准标记 — 根本不会被读取。来自排除应用的剪贴内容会在保存前被丢弃;默认名单涵盖密码管理器和韩国的银行安全模块。组织策略可以添加应用,并关闭图片或文件的捕获。win/clipboard.readVault._gate

失败即关闭(fail-closed)的加密。凭据用 Windows DPAPI 加密并移除其文本,因此永远不会进入搜索索引。如果 DPAPI 不可用或加密失败,该剪贴内容会被丢弃,而不是以明文保留。Vault._protect

存储。首次运行时,文件夹停止继承权限,并显式授予您的账号访问权,因此上级文件夹的变动无法放宽它。凭据用带密钥的哈希去重,因此数据库中不含可被猜出值的指纹。win/acl.harden_onceVault._dedupe_key

粘贴。ClipVault 会把焦点还给您原来的窗口,并在发送 Ctrl+V 之前再次确认它位于前台。如果无法确认,它什么都不发送,剪贴内容会留在剪贴板上等您处理。它放到剪贴板上的凭据本身就带有“不要记录”标记,因此 Windows 剪贴板历史和其他剪贴板管理器会跳过它。actions.deliverwin/exclusions.exclusion_payloads

清除。粘贴凭据后,剪贴板默认会在 30 秒后清空 — 但前提是这期间没有复制新内容。actions.clear_if_unchanged

网络。请求由一个只接收地址和您的同意、别无其他参数的函数发出,因此任何剪贴数据都不在它能触及的范围内。它拒绝明文 HTTP 和重定向,并丢弃超过 64 KB 的响应。net.pyupdates.fetch

威胁模型

它能防范什么,不能防范什么

本地程序可以让某些攻击变得更难,但无法让已被攻破的 Windows 账号变得安全;如果声称可以,只会让您依赖错误的东西。

能防范

  • 被拷走的数据库文件或备份。其中的凭据是与您的 Windows 账号绑定的 DPAPI 密文,其指纹也带有密钥。
  • 同一台电脑上的其他账号。文件夹权限固定为您的账号,而 DPAPI 密钥只属于一个账号。
  • 从密码管理器复制的机密。带有标准排除标记的剪贴内容会被跳过,不会被读取。
  • 对列表的一瞥。凭据行会被遮住;只有按下 Ctrl+R 才会显示值。
  • 粘贴到错误的窗口。除非确认目标窗口位于前台,否则不发送任何按键。
  • 被篡改的版本文件或导入文件。更新链接仅限官方主机,导入内容会根据其本身重新检查 — 路径、哈希和标签都会重新计算。
  • 为让应用卡死而精心构造的文本。检测模式都有上限,并且只扫描前 1,000,000 个字符。

不能防范

  • 以您的身份运行的恶意软件。在您的 Windows 账号下运行的任何程序都能读取剪贴板,并请求 DPAPI 解密,与 ClipVault 的做法完全一样。
  • 这台电脑的管理员。管理员账号可以读取其他账号的文件,并以其身份行事。
  • 剪贴板上有内容时的其他应用。Windows 剪贴板由所有正在运行的程序共享。粘贴后清除只能缩短这段时间,而且只适用于凭据。
  • 屏幕上显示的内容。您显示出来的值可能被屏幕录制、屏幕共享、屏幕阅读器以及身边的任何人看到。
  • 它识别不出的凭据。检测查找的是已知的格式和标签。没有标签的裸密码看起来就像普通文本,也会作为普通文本保存。
  • 普通剪贴内容。不属于凭据的文本、图片和文件路径以未加密的形式保存在您的文件夹中,仅受 Windows 权限保护 — 电子邮件地址和电话号码也包括在内。
  • 您自己更改的设置。关闭加密后,凭据会被遮住但不会被加密。您导出的文件由您自行保管。
  • 被人看到您在检查更新。更新检查开启期间,网站的主机每天会看到一次您的 IP 地址和 ClipVault 版本。

这与程序在 管理控制台 → 安全 中说明的边界相同:加密保证的是单凭数据库文件无法读取,仅此而已。

凭据检测

它查找什么

检测只给剪贴内容加标签,从不删除。被标记为凭据的剪贴内容会被加密并遮住。只有当您或您所在组织的策略开启相应选项时,才会拒绝保存。

密码

带值的标签 — “password:”、“密码:”、“contraseña=”等,涵盖本应用提供的全部十二种语言中表示“密码”的词,全角冒号也包括在内。还包括 scheme://user:password@host 形式的地址。

API 密钥和令牌

OpenAI、Anthropic、Stripe、GitHub、GitLab、npm、SendGrid、AWS、Slack 和 Google 的已知格式;api_key=client_secret: 之类带标签的值;DB_PASSWORD= 之类的 .env 行;Azure 连接字符串中的密钥。

Webhook URL

Slack 和 Discord 的 Webhook 地址,它们本身就是凭据。

私钥

PEM 私钥块。

JSON Web Token

eyJ 开头的三段 base64url。

银行卡号

通过 Luhn 校验的 13 到 19 位数字。0000 0000 0000 0000 之类的占位数字会被忽略。

韩国居民登录号

会核对其中的日期和校验位。

电子邮件地址和电话号码

标记为个人数据,但不加密:人们是有意复制它们的。

设计上不会卡死

检测在每次复制时运行,所以一个缓慢的模式就会让快捷键卡住。每个模式中的每处重复都有上限;测试会输入 14 个对抗性样本,如果输入变为 4 倍时耗时增加超过 8 倍就判定失败 — 这正是灾难性回溯的特征。只扫描剪贴内容的前 1,000,000 个字符,程序保存的文本也从不超过它扫描的长度。

sensitive.DETECT_LIMITConfig.normalizetests/test_security.py

面向团队

策略只能让它更严格

IT 部门可以通过组策略或 Intune 在 HKLM\SOFTWARE\Policies\ClipVault 下强制设置。计算机和用户两处策略键都会被读取,以更严格的值为准;标准用户对两者都没有写入权限。

  • 19 条规则。拒绝保存凭据、强制加密、限制保留期和条数、强制粘贴后清除的时间、添加排除的应用、按应用缩短保留期、添加检测规则,关闭图片或文件捕获、导出、更新检查或消息,以及锁定文件夹权限、强制屏幕截图保护、禁用隐私模式,以及强制确认把凭据粘贴到新程序。
  • 没有放宽的开关。没有任何策略能关闭加密、移除排除的应用或开启任何使用网络的功能 — 如果策略名称不以 Disable、Require、Max、Excluded 或 LockDown 开头,测试就会让构建失败。
  • 无法读取的值会被忽略,绝不会被当作许可。
  • 不对用户隐藏。被锁定的设置显示为灰色,管理控制台会列出正在生效的规则。

组策略模板

包含 ADMX 以及英文和韩文 ADML,并附有每个值的说明指南。可用于组策略,也可用于 Intune 的 ADMX 导入。

下载 ClipVault-policy.zip
供应链

可执行文件里装了什么

部件越少,别人的代码能混进来的地方就越少。

  • 没有第三方库。程序只使用 Python 标准库 — 通过 ctypes 调用 Win32,通过 tkinter 构建界面,通过 sqlite3 存储,PNG 编解码器由本项目自行编写。PyInstaller 只用于打包。scripts/check_stdlib_only.py 会读取每一条 import,发现任何其他依赖就让构建失败。
  • 只有一道网络之门,由机器检查。scripts/check_network.py 把网络功能限制在 net.py 之内,并确保其中不会出现任何正文参数。
  • 每次推送都检查。完整测试套件、依赖检查、网络检查、下载计数器测试和翻译检查都会在 CI 的 Windows 环境中运行。

此版本已进行代码签名

ClipVault.exePROJECTTEAMFORYOU 通过 Azure Artifact Signing 签名。要核实,请右键单击该文件 → 属性数字签名。配置了签名时,构建会拒绝以未签名状态完成,并且在文件离开构建机器之前会再次验证签名。

本网站

下载计数器保留了什么

网站会统计下载次数,以便我们了解哪些文件被使用。它保存的是计数,而不是日志。

保存

  • 日期(UTC)
  • 文件名
  • 由托管服务商网络提供的两位字母国家代码

从不保存

  • 您的 IP 地址
  • 您的 User-Agent — 读取它仅为排除机器人和链接预览
  • 您来自哪个页面
  • Cookie,或任何其他关于您的信息

断点续传的下载和爬虫不计入,程序的更新检查也完全不计入 — 同意检查版本并不等于同意被统计。deploy/cloudflare/lib/downloads.js

我们自己广告的点击——无论是在本网站上,还是在您开启消息后程序中的消息里——都以同样方式计数:日期、广告和国家。程序绝不在弹出窗口中展示广告,也绝不展示其他任何人的广告。deploy/cloudflare/lib/ads.js

负责任的披露

发现了漏洞?请先告诉我们。

请通过电子邮件私下报告,以便在公开之前修复。

报告安全问题 security@clipvault.dev
撰写安全报告

我们的目标是在 3 个工作日内确认收到报告,并与您商定修复方案和披露日期。这是目标,而非保证:ClipVault 由一个小团队开发。

请附上

  1. ClipVault 版本(clipvault-cli --version)和您的 Windows 版本
  2. 复现步骤,以及攻击者能获得什么
  3. 概念验证(如有)
  4. 您是否计划公开,以及何时公开

请不要发送真实密码或他人的剪贴板数据,并且只在属于您自己的计算机和账号上进行测试。

我们没有付费的漏洞赏金计划。如果您愿意,我们会在发布说明中具名致谢。

机器可读的联系方式:security.txt →