先看结论
这份报告能说明什么?
VPNDevelop结合源码与测试记录,分析星连第一代协议固定提交中的三项中危、一项低危问题,并给出修复与验收建议。受审版本的四项发现均未关闭;已有基准测试和有限模糊测试不能代替生产验证,竞态检测受阻也不能记为通过。
- 审查记录版本
- v1.0 · 2026-11-13
- 验证状态
- 基于受审版本源码与已有测试记录进行分析;修复后复测状态见问题清单。
- 开源入口
- 查看官方仓库 ↗
测试范围与未覆盖项
下面的执行结果均来自原报告;本次网页制作只核对报告与公开源码引用,没有重新进行安全测试。
小屏幕可左右滑动表格查看完整范围。
| 检查项目 | 证据状态 | 范围与限制 |
|---|---|---|
| 握手、令牌与加密帧 | 已执行 | 报告记录源码审查、原有基准、篡改对照和有限模糊测试;不是密码学形式证明或旁路攻击实验。 |
| 重放、撤销与引擎生命周期 | 已执行 | 报告使用合成凭据、本机回环连接及可控制时序验证缺陷;没有对生产节点进行攻击或修补。 |
| NAT64 地址策略 | 已执行 | 仅执行纯解析器和策略等价性测试,没有真实 NAT64 转换器、外部拨号或路由环境验证。 |
| 依赖公告与静态检查 | 静态检查 | 报告记载 go vet 完成;Windows、Linux 源码视角的已知漏洞检查无匹配发现。Linux 源码视角不等于 Linux 运行测试。 |
| 竞态检测 | 受阻 | ThreadSanitizer 在有效执行前发生内存分配错误 87;没有可用的竞态检测通过结论。 |
| 命令行、FFI 与部署 | 静态检查 | CLI 基准语句覆盖率为 0%;无完整命令行端到端验证。CGO_ENABLED=0 基准排除 FFI;App 报告中的 ABI 冒烟测试应单独理解。systemd 范例未在该 Windows 测试主机运行。 |
| 真实网络与生产隐私 | 未覆盖 | 没有大陆运营商可用性、真实 NAT64 拓扑、长期高并发、生产日志、账户后端或全平台流量泄漏测试。 |
| 最新商用产品与后续提交 | 未覆盖 | 当前商用第二代协议、官方客户端、仓库其他提交与修复后的重新验证均不在该报告结论范围内。 |
问题清单与修复建议
严重性沿用原报告;未分配新的CVSS分数或CVE编号。“未修复”指受审快照,并不是对仓库最新版本的断言。
进程重启后,部分带未来时间戳的首包可能被重复接受
- 证据与方法
- 报告证据 P-REPRO:同一进程拒绝重复首包,新建且复用相同节点密钥的服务实例却再次接受了同一合成首包。这里模拟了重启后的内存状态丢失,没有重启真实系统服务。
- 影响与边界
- 前提是攻击者已取得经过认证的内层首包,客户端时钟在允许范围内超前,且新进程沿用旧密钥。可能造成早期应用数据重复交付;不等于解密、伪造令牌或已证实重复付款。普通外层 TLS 旁观者不因此获得内层首包。
- 修复方向
- 使用跨进程持久化、原子化的重放记录,或收紧早期数据策略并设计重启密钥轮换。验收须覆盖真实重启、并行进程、时钟偏差和存储故障;重复请求应在第二次连接目的地之前被拒绝。
撤销清单解析失败时,最后有效清单可能被不完整结果覆盖
- 证据与方法
- 报告证据 P-REPRO:先载入有效合成撤销记录,再提供包含超长行的临时输入;解析中止后原记录不再被视为撤销。源码安装新映射前没有处理扫描器错误。
- 影响与边界
- 依赖受信任的文件生成或传递流程先发生异常。尚在有效期内的已撤销凭据可能重新具备连接资格;签名、有效期和设备持有证明仍会检查。没有证据表明远端用户能写入该文件。
- 修复方向
- 整份解析和验证成功后才原子替换,失败时保留最后有效清单并告警。区分明确清空与解析失败,补测截断、无效条目和超限输入;日志不得输出完整凭据。
NAT64 等价地址未一致应用自定义 IPv4 与节点本机地址规则
- 证据与方法
- 报告证据 P-REPRO:纯策略测试中,被 IPv4 规则拒绝的合成目标,通过等价 NAT64 地址得到不同结果;私有地址负向对照仍被拒绝。没有外部网络连接。
- 影响与边界
- 实际影响依赖节点具备相应 NAT64 路由且目标被相关 IPv4 规则拒绝。不能推导为所有部署均受影响,也不能描述为所有内网地址都可绕过。
- 修复方向
- 对明确支持的转换前缀,同时校验原 IPv6 与等价 IPv4 地址;未支持时应明确拒绝。修复后先验证策略矩阵,再在受控 NAT64 网络确认拒绝发生于建立连接之前。
停止操作没有取消尚未完成的引擎启动
- 证据与方法
- 报告证据 P-REPRO:可控制的启动回调在 Stop 返回后继续完成,Running 又变成 true。该结果来自确定性顺序测试,不依赖已受阻的竞态检测器。
- 影响与边界
- 需要本地调用方在启动未完成时停止。旧任务可能随后留下活动传输;未证明远端控制或实际 DNS 泄漏。它与 App 的 A-02 位于不同层,不能简单叠加为两个独立远程攻击。
- 修复方向
- 以取消上下文和启动代次使旧操作失效,过期回调返回的传输立即清理。验收覆盖先停后完成、重复停止、启动失败及新一轮连接,避免旧操作影响新连接。
这份星连协议评测回答什么?
它回答的是:第一代开源协议的指定源码版本,在给定本机测试条件下表现怎样,哪些问题已有证据,哪些问题仍需验证。 它不回答某款商用 VPN 今天是否安全、是否能在大陆连接,或是否真正零日志。
VPNDevelop从VPN协议开发与运行维护的角度,对该开源实现进行审查与分析,重点关注加密边界、状态管理和异常输入处理。本文结合固定版本源码与2026年11月13日v1.0审查记录,说明问题影响、修复建议和验收条件。测试数据采用已有本机验证记录;中危、低危为基于触发条件与影响的定性分级,不是CVSS评分。
固定版本与来源怎么核对?
唯一受审提交为 6540bf335d0b370453421dabebafc2d1fc8840ea,对应第一代 1.0.0-draft、规范 draft 3。报告涉及 33 个受 Git 跟踪文件,包含协议库、令牌与连接解析、握手与数据帧、TCP/UDP 转发、目的地策略、撤销控制、本地代理、运行引擎、命令行、FFI 源码和部署范例。
官方固定版本 README 将这代开源实现与当前商用第二代协议区分。其内部审查说明属于供应商资料,不能替代独立验证。仓库后续更新不自动继承本页结论:既不能据旧报告认定新版本仍有问题,也不能仅凭新提交宣称问题已修复。
加密保护在哪结束?
数据路径可概括为:应用 → 本地代理或客户端 API → 经过认证的加密链路 → 星连节点 → 目标服务。节点验证令牌与设备证明、执行目的地策略后再转发。协议内层加密终止于节点;应用自身的 HTTPS 可继续保护到目标网站,纯 HTTP 内容在出口仍可读取。这个边界不等于发现了内容日志。
| 构造 | 报告记录的实现 | 不能据此推出的结论 |
|---|---|---|
| 数据加密 | AES-256-GCM;方向密钥分别派生 | 使用标准原语不代表整体协议已经认证 |
| 初始协商 | X25519 与静态 ML-KEM-768 混合构造 | 不能笼统宣称所有数据都有后量子前向保密 |
| 密钥派生 | HKDF-SHA-256 与用途、方向及握手上下文绑定 | 不免除端点、密钥保管与部署风险 |
| 客户端认证 | Ed25519 签发令牌和设备持有证明 | 完整连接链接含敏感设备材料,仍须像密码保管 |
| 外层传输 | 默认最低 TLS 1.3,可选原始 TCP | 原始 TCP 或弱化验证选项不能等同默认安全属性 |
首包可携带最多 8 KiB 早期数据,对后来获得相关静态节点秘密的人不具备前向保密。后续流量增加临时 X25519,具有文档描述的传统前向保密目标;静态 ML-KEM 密钥被攻破后不提供后量子前向保密。这些是 SPEC 已披露的边界,不是新增漏洞。
报告实际记录了哪些测试结果?
下表为受审版本已有测试记录,执行环境记录为Windows和Go 1.27.4。数据用于分析该版本的行为与验证缺口,不代表修复后的重新测试结果。
| 检查项 | 结果 | 应怎样理解 |
|---|---|---|
| 原有基准 P-BASELINE-R2 | 37 个顶层测试通过,含 6 个模糊测试种子框架 | 更正首次参数错误后的有效基准;不掩盖首次退出失败 |
| 问题复现 P-REPRO | 4 项复现成功 | PASS 表示缺陷确实发生,不表示安全修复通过 |
| 密码学对照 | 修改过的认证数据被拒绝,方向密钥分离 | 有限输入的实现对照,不是保密性形式证明 |
| 静态检查 P-VET | go vet 完成 | 不等于发现全部逻辑错误 |
| 已知漏洞检查 | Windows、Linux 源码视角未输出匹配发现 | 不涵盖未知漏洞;Linux 视角不是 Linux 运行测试 |
| 竞态检测 P-RACE-R3 | 受阻,错误 87 | 无有效通过结论,需要在兼容环境补测 |
基准语句覆盖率为 1296/1914,67.71%。其中协议库 81.38%、本地代理 75.78%、引擎 39.17%,命令行 0%。该基准关闭 CGO,未纳入 FFI,不能把这个比例叫作“全部安全测试覆盖率”。
六个模糊测试目标分别使用 20 秒、2 个工作进程,总计 2,629,775 次执行,未观察到崩溃或测试不变量失败。不同目标执行数差异明显;这些短时探索不能代替长期模糊测试、资源压力测试或生产容量测量。
四项问题应按什么顺序处理?
优先处理 P-01 的跨重启重放和 P-02 的撤销故障放行;二者涉及认证后的请求行为与权限变更。随后统一 P-03 的等价地址策略,再处理 P-04 的取消与清理语义。详细条件、影响和建议见本页问题清单。
修复不是让现有复现用例继续显示 PASS。原用例刻意断言不安全行为,修复验收应增加“拒绝该行为”的负向回归,同时确认正常连接没有受损。P-04 需要与 开源 App 专栏 的 A-02 协同验证:引擎停止与界面状态两层都应拒绝过期操作。
仍不能给出结论的范围
- 大陆网络可用性: 没有运营商、地区、时段、节点和长期采样,不能给出能用率或抗封锁排名。
- 零日志: 源码中没有常规内容记录,不代表生产反向代理、账户后台、崩溃转储和基础设施不保留元数据。
- 真实部署安全: systemd 与防火墙范例没有在报告的 Windows 主机实际验证;真实权限、路由和密钥轮换另需核对。
- 长期稳定与容量: 没有长时间高连接数测试,不提供吞吐、并发或内存安全保证。
- 完整应用保护: 协议测试不能证明客户端 DNS、IPv6、断线保护或全设备隧道正常。
常见问题
四项发现意味着当前星连商用服务有同样问题吗?
不能这样推断。报告只针对指定第一代开源提交,当前商用第二代协议与官方客户端不在范围内。判断运行服务需要先确认二进制对应源码和部署配置。
没有确认高危问题,是否可以说“安全通过”?
不可以。有限审查没有确认高危,不等于高危不存在。四项发现仍未关闭,竞态检测受阻,真实部署和多个关键边界尚未覆盖。
加入 ML-KEM 就代表所有流量都抗量子攻击吗?
不代表。需要区分初始混合协商、早期数据、后续会话和静态密钥事后泄漏。本实现已有明确的前向保密限制,不能只用算法名称概括整个系统。
问题什么时候可以标为已修复?
需要公开可核对的修复提交、对应负向用例与正常功能回归、适用环境和复测日期。只有提交说明而没有复测证据时,状态应写“待复测”,不是“已验证修复”。
版本记录与后续复测
| 日期 | 记录 | 状态 |
|---|---|---|
| 2026-11-13 | v1.0源码审查记录与有限本机验证,本站分析问题影响及修复方向 | P-01 至 P-04 均未关闭 |
| 待安排 | 修复提交核对、兼容环境竞态检测、真实重启与受控 NAT64 验证 | 本页尚无修复后复测记录 |
后续更新应保留旧版本结论,并说明变化的是源码、部署条件还是测试方法。引用本页时请注明VPNDevelop、完整提交、报告日期和本机验证条件,不要省略适用范围。
资料来源与可引用版本
本站分析参考《SingLink 开源安全审查报告》v1.0(2026-11-13)及以下固定版本开源资料。引用时请注明VPNDevelop、本页地址、受审提交和对应问题编号。
VPNDevelop,《星连协议安全评测:第一代开源实现、测试范围与四项发现》,整理版 v1.0,2026-11-13T20:17:00+08:00,受审提交 6540bf335d0b370453421dabebafc2d1fc8840ea。引用时请保留问题编号、测试条件与限制。
整理版仅包含本页公开内容,不包含原始日志、测试凭据、复现脚本、源码或附件压缩包。
提交修复与复测证据
状态记录与验收要求见正文。提交更正时,请注明问题编号、源码版本、测试环境和可核对结果,不发送真实用户凭据。
提交修复版本或更正证据