T3 Code 61c3794c 供应链遗留问题。更新程序从与归档相同的源验证 SHA256SUMS。无签名。回环实验环境。
更新程序会校验与下载文件放在一起的 SHA-256 文件。控制了下载主机,也就控制了校验和。该路径上没有签名。意外损坏仍会失败。来自同一来源的成对替换文件则会被安装。
类别: 供应链
影响范围: 供应链(任何控制 releaseBaseUrl 的人)
T3 Code 61c3794c - Ping
| ID | 暂无 CVE |
| 类别 | 供应链 |
| 影响范围 | 供应链(被攻陷的发布主机、CDN,或该来源上的 DNS/TLS) |
| CWE | CWE-345 / CWE-494 |
| CVSS | 中危:6.8 CVSS:3.1/AV:N/AC:H/PR:N/UI:R/S:U/C:H/I:H/A:H |
| 产品 | T3 Code |
| 受影响版本 | 61c3794c32b0eeebfac09add43e403618c65d2d7 |
| 认证 | 一旦发布者被控制,受害者侧无需认证;受害者只需执行安装或更新 |
| 许可证 | GNU Affero GPL v3.0 |
| 实验环境 | 回环发布者 127.0.0.1:18192;tar 被模拟,因此归档字节永远不会被执行 |
需要控制同时提供 SHA256SUMS 和归档文件的来源(该构建的 releaseBaseUrl / GitHub Releases)。不需要在受害者机器上拥有 T3 账户。
| 权限 | 方法 / 汇聚点 | 侦察 / 完整性 / 可用性 | 实验验证或推断 |
|---|---|---|---|
| 从同一来源发布匹配的归档 + 校验和 | ensurePinnedRuntimeInstalled 先获取 ${baseUrl}/SHA256SUMS,再获取 ${baseUrl}/${fileName},进行 SHA-256 比对 | 完整性(安装被接受) | 实验验证。checksum-pass=1,见证值 t3f02s9m4 出现在两个文件中 |
| 通过同一辅助函数驱动自更新 / 启动服务 | selfUpdate.ts、bootService.ts 传入 releaseBaseUrl | 完整性 | 源码。实验直接调用了该辅助函数 |
| 解压后执行已安装的二进制文件 | tar -xf 然后运行 t3 | 完整性 / 可用性 | 推断。实验模拟了 tar,未执行字节 |
| 阴性对照:校验和不匹配 | 同一辅助函数,SHA256SUMS 中填入零 | 不适用 | 实验验证。步骤 verifying the t3 release archive checksum |
在此遗留问题中仍然关闭的方面
| 维度 | 方法 / 汇聚点 | 为何关闭 |
|---|---|---|
| 完整性 | 传输中的意外位翻转 | SHA-256 不匹配会拒绝解压 |
| 完整性 | 未签名的额外来源 | 实验只使用一个基础 URL;第二个来源从未被查询,因为不存在 |
| 完整性 | 本实验执行攻击者字节 | tar 被模拟;extracted-binary-executed=0 |
在下载+摘要代码块以及自更新 / 启动服务调用方中,signature-check=0(没有 minisign、cosign、GPG 或 sigstore)。
pinnedRuntime.ts 从 cliReleaseDownloadBaseUrl 构建两个 URL。树内测试已经锁定了同源校验和通过、不匹配失败的行为。它们不要求签名。
错误方向:把校验和当作发布者身份验证器。
python3 t3code-release-checksum-same-origin-Abraxas-Labs.py
或:
cd lab
./run.sh
127.0.0.1:18192 上的回环 HTTP 发布器。生产环境的 ensurePinnedRuntimeInstalled 使用 Effect fetch 访问该源。匹配的配对会安装(模拟解压)。不匹配的配对会在验证阶段停止。
IOC loopback-bound=127.0.0.1:18192
IOC same-origin=1
IOC checksum-pass=1
IOC checksum-fail=1
IOC signature-check=0
IOC tar-mocked=1
IOC extracted-binary-executed=0
SUCCESS T3-F02-CHECKSUM t3f02s9m4
对校验和清单进行签名(minisign、cosign 或 GPG),并将公钥嵌入二进制文件。在解析 SHA256SUMS 之前验证签名。将发布来源固定为不可变的已签名引用。
61c3794c32b0eeebfac09add43e403618c65d2d7pinnedRuntime.ts 下载+摘要GNU Affero GPL v3.0。参见 LICENSE。仅限回环实验环境。不提供任何担保。
Abraxas Labs [email protected]
请将 CVE 归功于 Abraxas Labs。