PGSTY SILO 博客
-
SILO 20261015:已替代草稿记录
状态:已被正式版 Server 20261018 替代。 RELEASE.2026-10-15T00-00-00Z 曾于 2026-10-15 13:52:28(UTC+8)短暂公开,随后撤回为 Draft 并由包含完整十月修复栈的 20261018 接替。本页归档该候选版的源码范围与制品验收记录,新部署与升级请直接使用 20261018。 历史标签:RELEASE.2026-10-15T00-00-00Z 软件包版本:20261015000000.0.0 候选源码 …
状态:已被正式版 Server 20261018 替代。 RELEASE.2026-10-15T00-00-00Z 曾于 2026-10-15 13:52:28(UTC+8)短暂公开,随后撤回为 Draft 并由包含完整十月修复栈的 20261018 接替。本页归档该候选版的源码范围与制品验收记录,新部署与升级请直接使用 20261018。 历史标签:RELEASE.2026-10-15T00-00-00Z 软件包版本:20261015000000.0.0 候选源码 …
-
对象锁保留期越权与版本覆写漏洞修复设计(SN-2026-015 / SN-2026-016)
本文档完整记录针对外部报告与内部关联排查发现的两处对象锁(Object Lock / WORM)安全缺陷——**SN-2026-015(PutObjectRetention 绕过请求头越权与条件策略失灵)**与 SN-2026-016(版本寻址写入覆写绕过及写路径锁缺口)——的事实核验、Git 历史溯源、修复设计、关键路径影响评估与候选方案的权衡取舍。完整修复(#234、#235、#241)已随 Server 20261018 正式发布。 关联公开安全公告: SN-2026-015 / …
本文档完整记录针对外部报告与内部关联排查发现的两处对象锁(Object Lock / WORM)安全缺陷——**SN-2026-015(PutObjectRetention 绕过请求头越权与条件策略失灵)**与 SN-2026-016(版本寻址写入覆写绕过及写路径锁缺口)——的事实核验、Git 历史溯源、修复设计、关键路径影响评估与候选方案的权衡取舍。完整修复(#234、#235、#241)已随 Server 20261018 正式发布。 关联公开安全公告: SN-2026-015 / …
-
SN-2026-015 与 SN-2026-016:S3 Object Lock 治理模式保留锁绕过与指定版本号原地覆盖漏洞分析
SN-2026-015 与 SN-2026-016 涵盖了在 SILO Server 20261018 中通过 PR #234(14042b5aa)与 PR #235(0d3ba5d4c)修复的两组 S3 Object Lock 合规保留与不可变性漏洞(配套修复设计方案)。虽然删除路径此前已按 CVE-2023-25812 正确校验 s3:BypassGovernanceRetention,但保留期修改路径(PutObjectRetention)与四条原地版本覆写路径仍存在绕过缺陷。 漏洞范围 …
SN-2026-015 与 SN-2026-016 涵盖了在 SILO Server 20261018 中通过 PR #234(14042b5aa)与 PR #235(0d3ba5d4c)修复的两组 S3 Object Lock 合规保留与不可变性漏洞(配套修复设计方案)。虽然删除路径此前已按 CVE-2023-25812 正确校验 s3:BypassGovernanceRetention,但保留期修改路径(PutObjectRetention)与四条原地版本覆写路径仍存在绕过缺陷。 漏洞范围 …
-
写死 TLS 参数与握手兼容性
Go TLS 默认值修复 48e184652 随 Server 20260916 发布后,issue #154 的报告人在该版本复测,OIDC discovery 仍然报同一条 connection reset by peer。与此同时,上游 Go 社区的同类 issue 将完全一致的症状定位到检查 signature_algorithms_cert 扩展并发送重置的 TLS 中间设备(见上游的同款案例)。本文在《Go 1.27 TLS 默认值与 OIDC Discovery 故障形态》的基础上 …
Go TLS 默认值修复 48e184652 随 Server 20260916 发布后,issue #154 的报告人在该版本复测,OIDC discovery 仍然报同一条 connection reset by peer。与此同时,上游 Go 社区的同类 issue 将完全一致的症状定位到检查 signature_algorithms_cert 扩展并发送重置的 TLS 中间设备(见上游的同款案例)。本文在《Go 1.27 TLS 默认值与 OIDC Discovery 故障形态》的基础上 …
-
SILO Console 2.4.1 发布
SILO Console v2.4.1 于 2026 年 9 月 16 日发布,源码为 1360e26d976d。 本版接入 pkg v3.14.1 与 mcli 20260916,收紧匿名分享代理,支持多对象流式 ZIP 下载,并提供带签名和构建溯源的发布制品。 共享下载 #52 的修复将匿名代理限制为 配置的 S3 源站上的对象内容 GET 请求,拒绝重定向、系统路径和通过查询参数选择的非下载操作。 公开对象、预签名链接和指定版本下载继续可用。不需要新增一个关闭分享的环境变量。 感谢 …
SILO Console v2.4.1 于 2026 年 9 月 16 日发布,源码为 1360e26d976d。 本版接入 pkg v3.14.1 与 mcli 20260916,收紧匿名分享代理,支持多对象流式 ZIP 下载,并提供带签名和构建溯源的发布制品。 共享下载 #52 的修复将匿名代理限制为 配置的 S3 源站上的对象内容 GET 请求,拒绝重定向、系统路径和通过查询参数选择的非下载操作。 公开对象、预签名链接和指定版本下载继续可用。不需要新增一个关闭分享的环境变量。 感谢 …
-
silo-pkg 3.14.1 发布
v3.14.1 从 fa657ef4 发布。 这是 github.com/pgsty/silo-pkg/v3 的依赖与工具更新; 相对 v3.14.0 的差异没有修改包的 Go 源码或公开 API。 依赖变化 JWX 从 v3.2.0 升至 v3.3.0。上游发布说明 将自定义 JSON 字段名编码时缺少转义的问题标识为 GHSA-4cf7-xm37-g63h。可利用性取决于是否接受攻击者控制的自定义 claim 名称; 本包 env 的 JWT 路径仅使用已注册的 claim 名称。 上游 …
v3.14.1 从 fa657ef4 发布。 这是 github.com/pgsty/silo-pkg/v3 的依赖与工具更新; 相对 v3.14.0 的差异没有修改包的 Go 源码或公开 API。 依赖变化 JWX 从 v3.2.0 升至 v3.3.0。上游发布说明 将自定义 JSON 字段名编码时缺少转义的问题标识为 GHSA-4cf7-xm37-g63h。可利用性取决于是否接受攻击者控制的自定义 claim 名称; 本包 env 的 JWT 路径仅使用已注册的 claim 名称。 上游 …
-
列举不能丢掉仍有仲裁的 null 版本
本文记录 2026-09-16 调查的对象列举漏项问题:未开启版本控制的存储桶在并发覆盖写下返回 HTTP 200 的列表,却漏掉了同一端点仍能正常 GET 的对象键。下文说明已确认的合并缺陷机制、提交 8d06424b1(随 Server 20260916 发布)的针对性修复与验证数据,以及在 #218 中跟踪、随后在 Server 20261018 中由 PR #239 关闭的滚动重启漏项边界(详见 LIST 恢复设计)。 缺陷机制 对象列举会合并被询问各块磁盘返回的版本流。当各盘状态不一致 …
本文记录 2026-09-16 调查的对象列举漏项问题:未开启版本控制的存储桶在并发覆盖写下返回 HTTP 200 的列表,却漏掉了同一端点仍能正常 GET 的对象键。下文说明已确认的合并缺陷机制、提交 8d06424b1(随 Server 20260916 发布)的针对性修复与验证数据,以及在 #218 中跟踪、随后在 Server 20261018 中由 PR #239 关闭的滚动重启漏项边界(详见 LIST 恢复设计)。 缺陷机制 对象列举会合并被询问各块磁盘返回的版本流。当各盘状态不一致 …
-
Go 1.27 TLS 默认值与 OIDC Discovery 故障诊断
SILO 工具链升级至 Go 1.27 后,Server TLS 修复 48e184652(“fix(tls): honor Go key exchange defaults across transports”,随 Server 20260916 发布)移除了 8 处 Server TLS 配置点上的显式椭圆曲线覆盖。本文记录 Go 1.27 在 TLS 层的变更细节、issue #154 排查总结的分阶段诊断方法,以及身份提供方(IdP)在启动阶段不可达时的健康检查端点行为。 关于发布后复测 …
SILO 工具链升级至 Go 1.27 后,Server TLS 修复 48e184652(“fix(tls): honor Go key exchange defaults across transports”,随 Server 20260916 发布)移除了 8 处 Server TLS 配置点上的显式椭圆曲线覆盖。本文记录 Go 1.27 在 TLS 层的变更细节、issue #154 排查总结的分阶段诊断方法,以及身份提供方(IdP)在启动阶段不可达时的健康检查端点行为。 关于发布后复测 …
-
请求头截止时间:绝对头部上限与滚动的正文空闲超时
本文记录 Server HTTP 读取截止时间的修复设计,该修复通过 PR #196 合入主干(提交 055030ea5),随 Server 20260916(40220bd836cbd066ca424fa4dc5dbb90057fb55a)发布。 排查源于慢速 HTTP DoS 扫描器报告(#183),并通过两组实验验证:一是直接 TCP 对照实验(请求头限制设为 100 ms、实际分批发送耗时 400 ms,标准 Go 服务拒绝该请求而旧版服务返回 204);二是单盘进程探针验证(通过命令行 …
本文记录 Server HTTP 读取截止时间的修复设计,该修复通过 PR #196 合入主干(提交 055030ea5),随 Server 20260916(40220bd836cbd066ca424fa4dc5dbb90057fb55a)发布。 排查源于慢速 HTTP DoS 扫描器报告(#183),并通过两组实验验证:一是直接 TCP 对照实验(请求头限制设为 100 ms、实际分批发送耗时 400 ms,标准 Go 服务拒绝该请求而旧版服务返回 204);二是单盘进程探针验证(通过命令行 …
-
副本元数据归一化:可信复制不得重新注入什么
随 SILO Server 20260916(40220bd836cbd066ca424fa4dc5dbb90057fb55a)发布的 PR #194(修复提交 4fcdf37ce,合并提交 9f3037e941,采纳并保留 Mikhail Khadarenka 在 PR #187 中的实现),修复了可信复制接收端在恢复副本内部元数据时重新调用宽松请求头提取器、导致仅用于传输的 aws-chunked Content-Encoding 标记与 GHSA 已脱敏的用户元数据重新回流至落盘对象中的回 …
随 SILO Server 20260916(40220bd836cbd066ca424fa4dc5dbb90057fb55a)发布的 PR #194(修复提交 4fcdf37ce,合并提交 9f3037e941,采纳并保留 Mikhail Khadarenka 在 PR #187 中的实现),修复了可信复制接收端在恢复副本内部元数据时重新调用宽松请求头提取器、导致仅用于传输的 aws-chunked Content-Encoding 标记与 GHSA 已脱敏的用户元数据重新回流至落盘对象中的回 …
-
复制标签排序:修订时间戳、墓碑与复活
随 SILO Server 20260916(40220bd836cbd066ca424fa4dc5dbb90057fb55a)发布的 PR #193(修复提交 03027727d)与 PR #196(修复提交 680eac66e),修复了对象标签在跨桶复制中保持顺序的两项缺陷:SSE-KMS 目的端复制静默丢弃标签修订时间戳(R4),以及空标签值(删除操作)缺失修订时间戳导致延迟到达的复制事件将已删除标签“复活”(R5)。 共同模型:标签值与其修订时间戳共同构成单一状态 对象标签在复制时通过请 …
随 SILO Server 20260916(40220bd836cbd066ca424fa4dc5dbb90057fb55a)发布的 PR #193(修复提交 03027727d)与 PR #196(修复提交 680eac66e),修复了对象标签在跨桶复制中保持顺序的两项缺陷:SSE-KMS 目的端复制静默丢弃标签修订时间戳(R4),以及空标签值(删除操作)缺失修订时间戳导致延迟到达的复制事件将已删除标签“复活”(R5)。 共同模型:标签值与其修订时间戳共同构成单一状态 对象标签在复制时通过请 …
-
联邦 CopyObject:保持目标对象契约
Server 20260916 通过 PR #157、PR #159、PR #163、PR #177 与 PR #179 修复了旧版 etcd 存储桶联邦(bucket federation)的 CopyObject 转发路径。当代理节点将跨集群复制作为远端 PutObject 转发到目标集群时,代理节点流式读取并发送源对象的逻辑字节,由目标端执行加密与 Object Lock 规则,校验完整对象校验和,并原样返回目标端实际提交的写入元数据。 转发一次逻辑字节,由目标端执行加密 代理节点在本地按 …
Server 20260916 通过 PR #157、PR #159、PR #163、PR #177 与 PR #179 修复了旧版 etcd 存储桶联邦(bucket federation)的 CopyObject 转发路径。当代理节点将跨集群复制作为远端 PutObject 转发到目标集群时,代理节点流式读取并发送源对象的逻辑字节,由目标端执行加密与 Object Lock 规则,校验完整对象校验和,并原样返回目标端实际提交的写入元数据。 转发一次逻辑字节,由目标端执行加密 代理节点在本地按 …
-
多池对象一致性
随 SILO Server 20260916 发布的 PR #178 修复了多存储池修改顺序问题,PR #207 将当前逻辑对象选择扩展至条件 PUT(关闭 #133 与 #144),提交 fced86303 则修复了跨池再平衡(rebalance)与退役(decommission)迁移丢失对象标签的缺陷。随后的 SILO Server 20261018 进一步合入 60c7179dd(纳入 PR #248)与 1748f62c7,修复了跨池迁移期间旧数据覆盖新副本以及删除标记(Delete …
随 SILO Server 20260916 发布的 PR #178 修复了多存储池修改顺序问题,PR #207 将当前逻辑对象选择扩展至条件 PUT(关闭 #133 与 #144),提交 fced86303 则修复了跨池再平衡(rebalance)与退役(decommission)迁移丢失对象标签的缺陷。随后的 SILO Server 20261018 进一步合入 60c7179dd(纳入 PR #248)与 1748f62c7,修复了跨池迁移期间旧数据覆盖新副本以及删除标记(Delete …
-
持久化 IAM 撤销
SILO 保留已删除 IAM 记录的版本(Revision),使离线站点在重新连接后无法将已删除的旧身份或旧授权恢复为有效状态。该机制覆盖内置用户、服务账号、组、策略文档,以及用户、STS 父身份和组各自命名空间中的策略映射。内置用户被删除后,即使管理员有意重建同名用户,此前签发的旧服务账号、STS 临时凭证与组授权也不会因此复活。 持久化 IAM 撤销架构(PR #191、#192,提交 f99ed829b5eba549160725f035156c9e020b6a07)已随 Server …
SILO 保留已删除 IAM 记录的版本(Revision),使离线站点在重新连接后无法将已删除的旧身份或旧授权恢复为有效状态。该机制覆盖内置用户、服务账号、组、策略文档,以及用户、STS 父身份和组各自命名空间中的策略映射。内置用户被删除后,即使管理员有意重建同名用户,此前签发的旧服务账号、STS 临时凭证与组授权也不会因此复活。 持久化 IAM 撤销架构(PR #191、#192,提交 f99ed829b5eba549160725f035156c9e020b6a07)已随 Server …
-
SSE-C 副本完整性
本文记录由 #122、#123、#124、#126 和 #134 共同构成的 SSE-C 副本完整性契约(随 Server 20260916 发布),与此前在 Server 20260903 中发布的零字节/属性读取认证及目标密钥 checksum 响应修复衔接。 密文与信任 普通 SSE-C 请求提供客户密钥,操作明文。经过授权的副本传输可以携带原始密文和保留原对象所需的密封对象密钥元数据。目标必须原样存储这些字节,再加密一次会产生不可读的双重加密对象。内部标记本身不是授权:仍需精确复制标记和 …
本文记录由 #122、#123、#124、#126 和 #134 共同构成的 SSE-C 副本完整性契约(随 Server 20260916 发布),与此前在 Server 20260903 中发布的零字节/属性读取认证及目标密钥 checksum 响应修复衔接。 密文与信任 普通 SSE-C 请求提供客户密钥,操作明文。经过授权的副本传输可以携带原始密文和保留原对象所需的密封对象密钥元数据。目标必须原样存储这些字节,再加密一次会产生不可读的双重加密对象。内部标记本身不是授权:仍需精确复制标记和 …
-
Object Lock 复制排序
Object Lock 复制时间戳排序的初始修复(f4c1286c9)已随 SILO Server 20260903 发布(收录于安全公告台账)。针对仅携带时间戳的删除(墓碑)、SSE-C 副本完整重传以及跨存储池 Object Lock 状态合并的后续修复(PR #129、PR #134 与 PR #178)已随 SILO Server 20260916 正式发布。 在重建目标元数据前捕获已存状态 此前,副本 COPY 在比较 Object Lock 保留期(Retention)与法务锁定 …
Object Lock 复制时间戳排序的初始修复(f4c1286c9)已随 SILO Server 20260903 发布(收录于安全公告台账)。针对仅携带时间戳的删除(墓碑)、SSE-C 副本完整重传以及跨存储池 Object Lock 状态合并的后续修复(PR #129、PR #134 与 PR #178)已随 SILO Server 20260916 正式发布。 在重建目标元数据前捕获已存状态 此前,副本 COPY 在比较 Object Lock 保留期(Retention)与法务锁定 …
-
九月安全修复:载荷完整性、IAM 撤销与 Console 分享
本文汇总随 Server 20260916 与 Console v2.4.1 发布的三项安全修复(SN-2026-012 至 SN-2026-014)及底层依赖安全更新。完整台账索引见安全公告台账。 编号与问题 修复源码 发布状态 SN-2026-012:预签名载荷完整性 Server c4b5e1cb4,PR #177 已随 Server 20260916 发布(RELEASE.2026-09-03T13-18-01Z 及更早版本受影响) SN-2026-013:持久 IAM 撤销 …
本文汇总随 Server 20260916 与 Console v2.4.1 发布的三项安全修复(SN-2026-012 至 SN-2026-014)及底层依赖安全更新。完整台账索引见安全公告台账。 编号与问题 修复源码 发布状态 SN-2026-012:预签名载荷完整性 Server c4b5e1cb4,PR #177 已随 Server 20260916 发布(RELEASE.2026-09-03T13-18-01Z 及更早版本受影响) SN-2026-013:持久 IAM 撤销 …
-
SILO 20260916 发布注记
版本日期: 2026-09-16 · 正式发布: 2026-09-17(UTC 2026-09-16) · 标签: RELEASE.2026-09-16T00-00-00Z · 软件包版本: 20260916000000.0.0。安装入口见下载页。 源码范围为已发布提交 9b11dc9469e6 到本版 2a4d51406b7e,共 210 个提交,其中 140 个非合并提交。本文覆盖该范围内的最终行为,包含 #214 之后的列表 quorum、版本 purge 和迁移标签修复。 本版重点 更完 …
版本日期: 2026-09-16 · 正式发布: 2026-09-17(UTC 2026-09-16) · 标签: RELEASE.2026-09-16T00-00-00Z · 软件包版本: 20260916000000.0.0。安装入口见下载页。 源码范围为已发布提交 9b11dc9469e6 到本版 2a4d51406b7e,共 210 个提交,其中 140 个非合并提交。本文覆盖该范围内的最终行为,包含 #214 之后的列表 quorum、版本 purge 和迁移标签修复。 本版重点 更完 …
-
mcli 20260916 发布
版本: RELEASE.2026-09-16T00-00-00Z · 软件包: 20260916000000.0.0 · 源码: e952aa78f10a。 相对 20260913 的变化 接入 silo-pkg v3.14.1、上游 minio-go v7.3.1-0.20260915093545-32e1f32cb176 和 JWX v3.3.0。CopyObject 会重试并报告 HTTP 200 响应内嵌的 S3 错误,避免复制失败后授权 mv 删除源对象;JWX 正确转义输出 JSON …
版本: RELEASE.2026-09-16T00-00-00Z · 软件包: 20260916000000.0.0 · 源码: e952aa78f10a。 相对 20260913 的变化 接入 silo-pkg v3.14.1、上游 minio-go v7.3.1-0.20260915093545-32e1f32cb176 和 JWX v3.3.0。CopyObject 会重试并报告 HTTP 200 响应内嵌的 S3 错误,避免复制失败后授权 mv 删除源对象;JWX 正确转义输出 JSON …
-
mcli 20260913 发布
版本: RELEASE.2026-09-13T00-00-00Z · 软件包: 20260913000000.0.0 · 源码: 4f609a4d。 相对 20260903 的变化 mirror --remove --watch 保留目标端历史版本。 服务重启的 dry run 只显示计划,不执行重启;明确非交互环境行为。 传输与 S3 Select 出错时返回失败;空上传遵守显式校验和参数;quiet 模式下仍输出 pipe JSON。 布尔环境变量接受 on/off,修复跨平台 …
版本: RELEASE.2026-09-13T00-00-00Z · 软件包: 20260913000000.0.0 · 源码: 4f609a4d。 相对 20260903 的变化 mirror --remove --watch 保留目标端历史版本。 服务重启的 dry run 只显示计划,不执行重启;明确非交互环境行为。 传输与 S3 Select 出错时返回失败;空上传遵守显式校验和参数;quiet 模式下仍输出 pipe JSON。 布尔环境变量接受 on/off,修复跨平台 …