2026-10-15。本文汇总资产、威胁和控制措施;具体实现分别见 DATA_MODEL、CONFIG_PIPELINE、RUNTIME_HOST、CLOUD_SYNC。
| 资产 | 存放位置 |
|---|---|
| 订阅 URL 与请求头、节点凭据、JSON 覆写、Clash API 密钥 | 本机加密秘密表;运行计划文件(平台私有目录);用户授权的同步内容;本机备份文件(密码加密) |
| Cloud 令牌 | 本机加密秘密表 |
| Windows/Linux 系统代理恢复原值(可能包含 PAC 地址或凭据) | 本机加密秘密表的固定设备恢复条目;不进入备份或同步 |
| Tailscale 身份 | 宿主目录(Tailscale 自身状态) |
| 主密钥 | 系统安全存储;Linux 明确无 Secret Service 且允许首次初始化时可用 0600 文件(D23、D108) |
| 用户的网络流量 | 宿主进程内存 |
| 威胁 | 控制 |
|---|---|
| 恶意订阅或文件(解析炸弹、超大内容、恶意字段) | 大小、深度、别名展开、数量上限;YAML 禁用自定义 tag;只接受登记过的字段和规则类型;解析在 isolate 中进行,不执行任何内容 |
| 订阅或规则集请求被引导到本机或私网服务 | 在实际连接的 IP 上检查地址,覆盖每次重定向与内容带出的依赖地址;只有用户输入的地址可指向本机或私网(CONFIG_PIPELINE §2) |
| 同步代理端点通过 DNS 重绑定访问本机或私网 | Bridge 在启动、重载与测速前解析并检查端点和代理链各跳,把通过检查的 IP 固定给内核,保留 TLS 名称与传输 Host;未覆盖路径明确拒绝(D105) |
| 凭据泄露到其他站点 | 凭据不随跨域重定向转发;订阅与资源下载始终校验 TLS;界面不提供跳过证书验证的开关(导入节点自带的该选项保留并提示,见 CONFIG_PIPELINE §4) |
| 本机数据库被复制 | 秘密以 XChaCha20-Poly1305 加密,主密钥在系统安全存储中 |
| 日志或分享泄露秘密 | 统一脱敏 Logger;分享日志和「查看生成的配置」都遮蔽秘密;有测试保证 token、密码、验证码、认证 URL 不会进入日志 |
| 本机其他程序控制代理 | Clash API 默认只监听回环地址并使用随机密钥;LAN 开关只影响代理端口;Windows 命名管道 ACL 仅限当前用户;Linux socket 权限 0600 并校验对端 UID;Apple 平台用同一 App Group 的应用/扩展与系统 VPN 会话通信 |
| 提权宿主被滥用 | 宿主只接受计划和白名单命令;不执行任意命令、不读写任意路径。Linux 只给固定 root 拥有的 helper 授予 CAP_NET_ADMIN,Flutter 不提权(D112);卸载移除宿主,保留用户内容 |
| 停止或崩溃后系统代理残留,或恢复覆盖用户的新代理 | Windows/Linux 设置前加密持久化恢复记录,启动与退出时恢复;代理模式与端点成组检查,外部修改保留整组。只使用已确认的运行端口,不支持的桌面环境明确报错(D111、RUNTIME_HOST §7) |
| DNS 或流量泄漏 | 默认开启严格路由和 DNS 劫持;远程 DNS 经代理;TUN 授权失败时保持未连接,不改为直连。各平台在 L2 实测泄漏情况 |
| 备份文件被他人获取 | Argon2id 派生密钥加密整个文件,并认证文件头;密码至少 8 位 |
| 账号被盗或跨账号访问 | 令牌加密保存;并发刷新合并;结果不确定时不重放旧 refresh;同步回包提交前核对账号、会话和代次;原账号材料不上传给新账号 |
| 误报云端数据清除范围 | 严格识别公开清理状态;不把在线密钥移除显示为所有副本已清除,不把未知状态解释成成功 |
| 服务提供方可读取同步内容 | 同步不采用端到端加密;按 D02 在安全文案与隐私说明中如实告知用户 |
| 出口 IP 探测泄露位置 | 只发往一个固定的、写进隐私政策的服务(D89),请求不带任何账号或设备标识;只在页面显示出口 IP 时探测 |
| 依赖或供应链 | 锁定版本;核对许可证与来源;sing-box 固定 commit;构建可复现,发行附带对应源码(LICENSING) |
-
本机主密钥只在确认可首次初始化时创建;有旧密文但缺钥或存储异常时停止,保留材料且不换钥。Android关闭存储错误自动重置,主密钥读取验证32字节(D97);单条密文认证失败不转为空秘密、dirty或墓碑。Cloud代次重建与本机失钥恢复须分别隔离,不用清库或普通文件备份恢复冒充。
-
Linux 主密钥回退只接受 Secret Service 明确不可用的结果;锁定、权限拒绝、超时和不确定结果不创建文件密钥。有旧密文时仍拒绝缺钥后的重建,已有文件回退安装不因服务重新出现而换存储(D108)。
-
秘密明文仅限受控处理内存、平台私有运行计划及HTTPS同步正文;备份先在内存加密。同步响应和待处理远端记录同样含秘密,不写日志/普通缓存/临时正文文件,持久化只能入加密秘密存储。
-
失败时不降级:授权失败、规则集缺失、成员不可用时,都不改为直连或换节点。
-
不新增任何「跳过安全检查」的设置。
-
安全相关改动(存储格式、同步协议、宿主命令)必须同步更新本文件和对应文档。
-
iOS 宿主的 App Group 目录只保存扩展需要的运行计划、规则集及内核状态;数据库、加密秘密表和主密钥仍在应用原来的私有存储。宿主目录与文件使用
completeUntilFirstUserAuthentication保护并排除系统备份,限制计划/下载路径且不把请求内容写入日志。模拟器缺少 App Group 时,只允许未连接测速使用私有目录,正式 VPN 不使用该回退;规则集升级迁移只复制登记且 SHA-256 匹配的资源,不复制旧计划/数据库/密钥。权限、后台保护和系统恢复的设备验收仍待签名真机。 -
macOS 直装宿主采用 System Extension 的 Packet Tunnel;应用进程不链接或加载内核,只通过原生通道与 VPN 会话转发白名单命令(D109)。运行计划及内核状态在 App Group 中,目录/文件分别为 0700/0600 并排除系统备份;数据库和主密钥仍属应用私有存储。启动要求有效团队签名、扩展权限、App Group 及系统批准,缺少条件明确拒绝。调试构建的私有计划目录只供本地编译,不可替代正式隧道共享目录;签名批准与真实流量验收仍待完成。
-
Linux helper 安装源由 root 或包管理器先行暂存;源与目标是常规 ELF 可执行文件,不能是符号链接,其父目录须为 root 拥有且普通用户不可替换。只在
/usr/lib/avalon/avalon-helper安装 root:root 0755、cap_net_admin=ep的二进制;安装和卸载拒绝正在运行的 helper,不删除用户 XDG 状态或无关文件(D112)。
公开客户端不得以嵌入密钥、包名、installationId或契约SHA证明权限。激活、上传、下载依赖公开接口的授权结果,不依据本机缓存自行授予权限。同步资料、未解析引用、幂等原请求和待处理回包在本机加密保存,所有提交重新匹配账号、会话、本机worker及同步代次,拒绝迟到的其他账号回包。
实际使用的协议2及认证/购买候选约定由独立 candidates.lock.json 固定,普通契约检查同时核对文件清单、摘要、双端副本和既有 wire 兼容;授权和删除等规范文字同样受保护。变更按D114评审并显式更新候选摘要,旧正式契约及历史归档保持原样。摘要用于变更审查,不作为客户端身份凭据。公开文档只描述互操作与安全义务,服务端内部实现保留在其私有项目中。
本机主密钥不得上传,也不要求用户保管Cloud密钥。协议2 deleted 文案只确认相关在线密钥移除,不映射为密码学销毁或所有副本清除;公开保留说明须如实显示(D100)。客户端保留legacy destroyed原值并严格拒绝未知状态;新状态只在独立0.3.0开发草案适配,冻结契约/SHA锁/旧归档不变。
远端内容的来源标记贯穿刷新、providers、规则集、override和core;不得自动访问本机/私网、任意文件/命令或绕过实际IP/重定向检查。D105 的宿主计划标记由 Bridge 在内核读取前消费:每次启动、重载与测速重新解析同步来源端点,检查所有解析结果,逐跳固定公开 IP,保留原 TLS 名称和传输 Host。自动 URLTest、内核自行下载的远端资源、同步来源覆写及无法覆盖的端点选项继续明确拒绝;不能去掉来源限制后运行。
经原生代理下载的同步资源要求 publicNetworkVersion=1 能力,并以 publicOnly 执行;能力缺失或不支持时拒绝下载。每次连接和 HTTP 重定向都重新解析、检查并把同一个 IP 交给实际拨号器,避免检查后再次解析;失败信息不回显带凭据的地址。该能力是本机宿主协议,不改变 Cloud 公共接口。账号命名空间、加密未解析引用/outbox、旧账号回包保护和大小/配额预算遵循 OpenAPI 引用的公开 SYNC_PROTOCOL。完整跨平台运行验收见 IMPLEMENTATION_PLAN,源码实现不等同于签名设备和真实流量验收通过。
L1 至 C2 各阶段的安全验收项见 IMPLEMENTATION_PLAN。发行前做一次独立安全审查,覆盖宿主 IPC、秘密存储、Cloud 认证与隔离。