SILO 安全编年史
这里记录 SILO 社区分支自分叉以来处理过的安全事件。文章严格按照发现与修复时间排列,每个 CVE 独立成篇:最初的威胁模型、复核中的转折、被否决的方案、最终恢复的不变量、验证证据与兼容性代价,都留在它自己的故事里。
编年表
| 日期 | CVE | 事件 | 首个包含版本 |
|---|---|---|---|
| 2026-04-15 | CVE-2026-32285 | jsonparser:最终无需补丁的安全通告 | 当前依赖图原本已经修复 |
| 2026-04-15 | CVE-2026-33322 | OIDC JWT 算法混淆 | SILO 2026-04-17 |
| 2026-04-15 | CVE-2026-33419 | LDAP STS 用户枚举与限流 | SILO 2026-04-17;2026-06-18 完整闭环 |
| 2026-04-15 | CVE-2026-34204 | 复制元数据注入 | SILO 2026-04-17 |
| 2026-04-15 | CVE-2026-39414 | S3 Select 超大记录 | SILO 2026-04-17;2026-06-18 完整闭环 |
| 2026-04-16 | CVE-2026-40344 | Snowball 自动解包认证绕过 | SILO 2026-04-17 |
| 2026-04-16 | CVE-2026-41145 | Unsigned-Trailer 查询认证绕过 | SILO 2026-04-17 |
| 2026-06-12 | CVE-2026-42600 | ReadMultiple Storage-REST 路径穿越 | SILO 2026-06-18 |
下方文章按时间正序排列;同一天的事件按 CVE 编号排列。只涉及 Go 或依赖升级的 CVE 继续留在对应的发布注记中,不把它们包装成应用层漏洞故事。
CVE-2026-32285:最终无需补丁的 jsonparser 通告
2026年04月15日 在 安全编年史

状态: 无需代码改动,问题已关闭 GitHub Issue: pgsty/minio#26 安全维护不只有“发现漏洞,然后提交补丁”。CVE-2026-32285 的初始判断是:仓库可能仍携带未修复的 jsonparser,甚至一度讨论过替换依赖或维护自己的分支。真正检查 module version 与可达性后,结论却是当前代码已经使用包含修复的 v1.1.2,govulncheck 也没有发现可达的 vulnerable symbol。 最终正确的动作不是制造一个依赖升级,而是把证据记录下来 …
状态: 无需代码改动,问题已关闭 GitHub Issue: pgsty/minio#26 安全维护不只有“发现漏洞,然后提交补丁”。CVE-2026-32285 的初始判断是:仓库可能仍携带未修复的 jsonparser,甚至一度讨论过替换依赖或维护自己的分支。真正检查 module version 与可达性后,结论却是当前代码已经使用包含修复的 v1.1.2,govulncheck 也没有发现可达的 vulnerable symbol。 最终正确的动作不是制造一个依赖升级,而是把证据记录下来 …
CVE-2026-33322:OIDC JWT 算法混淆
2026年04月15日 在 安全编年史

状态: 已发布 首个包含版本: RELEASE.2026-04-17T00-00-00Z 影响入口: AssumeRoleWithWebIdentity、AssumeRoleWithClientGrants GitHub Issue: pgsty/minio#22 旧实现把 OIDC client secret 放进 JWT verifier keyring,同时允许 HMAC signing method。知道 client secret 的攻击者因此可以自行签发 HS token,再通过 …
状态: 已发布 首个包含版本: RELEASE.2026-04-17T00-00-00Z 影响入口: AssumeRoleWithWebIdentity、AssumeRoleWithClientGrants GitHub Issue: pgsty/minio#22 旧实现把 OIDC client secret 放进 JWT verifier keyring,同时允许 HMAC signing method。知道 client secret 的攻击者因此可以自行签发 HS token,再通过 …
CVE-2026-33419:LDAP STS 用户枚举与限流链
2026年04月15日 在 安全编年史

状态: 已发布,经历两轮后续修正 首个包含版本: RELEASE.2026-04-17T00-00-00Z 完整修正版本: RELEASE.2026-06-18T00-00-00Z GitHub Issue: pgsty/minio#23 核心漏洞很直接:LDAP STS 对“用户不存在”和“密码错误”返回不同结果,形成 username oracle。第一版修复统一外部错误,并增加 source IP 与 username 双重限流;连续复核却发现,成功退款、可伪造来源 …
状态: 已发布,经历两轮后续修正 首个包含版本: RELEASE.2026-04-17T00-00-00Z 完整修正版本: RELEASE.2026-06-18T00-00-00Z GitHub Issue: pgsty/minio#23 核心漏洞很直接:LDAP STS 对“用户不存在”和“密码错误”返回不同结果,形成 username oracle。第一版修复统一外部错误,并增加 source IP 与 username 双重限流;连续复核却发现,成功退款、可伪造来源 …
CVE-2026-34204:复制元数据注入
2026年04月15日 在 安全编年史

状态: 已发布 首个包含版本: RELEASE.2026-04-17T00-00-00Z GitHub Issue: pgsty/minio#24 普通 PUT 与 COPY 请求可以把 X-Minio-Replication-* header 伪装进内部 X-Minio-Internal-* SSE metadata,写出 replication state 与真实授权路径不一致、甚至无法读取的对象。最终修复不再默认接受 replication-only metadata,只在通过 …
状态: 已发布 首个包含版本: RELEASE.2026-04-17T00-00-00Z GitHub Issue: pgsty/minio#24 普通 PUT 与 COPY 请求可以把 X-Minio-Replication-* header 伪装进内部 X-Minio-Internal-* SSE metadata,写出 replication state 与真实授权路径不一致、甚至无法读取的对象。最终修复不再默认接受 replication-only metadata,只在通过 …
CVE-2026-39414:S3 Select 超大记录与 SIMD 绕过
2026年04月15日 在 安全编年史

状态: 已发布,六月完成二次闭环 初始修复版本: RELEASE.2026-04-17T00-00-00Z 完整修复版本: RELEASE.2026-06-18T00-00-00Z GitHub Issue: pgsty/minio#25 四月的第一轮修复使用既有的 1 MiB maxCharsPerRecord 同时限制 CSV 与普通 JSON Lines,避免在遇到分隔符前持续无界 buffering,并让客户端得到明确的 OverMaxRecordSize。六月复核却发现,支持 SIMD …
状态: 已发布,六月完成二次闭环 初始修复版本: RELEASE.2026-04-17T00-00-00Z 完整修复版本: RELEASE.2026-06-18T00-00-00Z GitHub Issue: pgsty/minio#25 四月的第一轮修复使用既有的 1 MiB maxCharsPerRecord 同时限制 CSV 与普通 JSON Lines,避免在遇到分隔符前持续无界 buffering,并让客户端得到明确的 OverMaxRecordSize。六月复核却发现,支持 SIMD …
CVE-2026-40344:Snowball 自动解包认证绕过
2026年04月16日 在 安全编年史

状态: 已发布 首个包含版本: RELEASE.2026-04-17T00-00-00Z GitHub Advisory: GHSA-9c4q-hq6p-c237 Snowball PutObjectExtractHandler 漏掉了 streaming unsigned-trailer auth case。伪造 signature 的 tar stream 可以在认证完成前进入 untar(),而一次请求又能扇出为多个对象写入。最终修复在任何 tar 字节进入解包器之前,初始化正确 …
状态: 已发布 首个包含版本: RELEASE.2026-04-17T00-00-00Z GitHub Advisory: GHSA-9c4q-hq6p-c237 Snowball PutObjectExtractHandler 漏掉了 streaming unsigned-trailer auth case。伪造 signature 的 tar stream 可以在认证完成前进入 untar(),而一次请求又能扇出为多个对象写入。最终修复在任何 tar 字节进入解包器之前,初始化正确 …
CVE-2026-41145:Unsigned-Trailer 查询认证绕过
2026年04月16日 在 安全编年史

状态: 已发布 首个包含版本: RELEASE.2026-04-17T00-00-00Z GitHub Advisory: GHSA-hv4r-mvr4-25vw query-string SigV4 credential 可以进入 STREAMING-UNSIGNED-PAYLOAD-TRAILER 数据流,但旧代码只在存在 Authorization header 时验证签名。结果是:请求只要提供有效 access key 标识,即使没有正确 signature,也可能完成写入。 最终修复把 …
状态: 已发布 首个包含版本: RELEASE.2026-04-17T00-00-00Z GitHub Advisory: GHSA-hv4r-mvr4-25vw query-string SigV4 credential 可以进入 STREAMING-UNSIGNED-PAYLOAD-TRAILER 数据流,但旧代码只在存在 Authorization header 时验证签名。结果是:请求只要提供有效 access key 标识,即使没有正确 signature,也可能完成写入。 最终修复把 …
CVE-2026-42600:ReadMultiple Storage-REST 路径穿越
2026年06月12日 在 安全编年史

状态: 已发布 首个包含版本: RELEASE.2026-06-18T00-00-00Z GitHub Advisory: GHSA-xh8f-g2qw-gcm7 影响范围: 仅 distributed erasure;需要 cluster-root / internode JWT /rmpl 的 msgpack body 中包含 Bucket、Prefix 与 Files,旧代码直接把它们拼成文件系统路径,没有 containment。最初的修复实现了完整 preflight …
状态: 已发布 首个包含版本: RELEASE.2026-06-18T00-00-00Z GitHub Advisory: GHSA-xh8f-g2qw-gcm7 影响范围: 仅 distributed erasure;需要 cluster-root / internode JWT /rmpl 的 msgpack body 中包含 Bucket、Prefix 与 Files,旧代码直接把它们拼成文件系统路径,没有 containment。最初的修复实现了完整 preflight …