跳转到主要内容

PGSTY SILO 博客

  • CompleteMultipartUpload 重复分片号漏洞分析与修复

    发布于 安全编年史

    S3Multipart UploadCorrectnessSILO

    CompleteMultipartUpload 重复分片号漏洞分析与修复

    在 S3 API 的 CompleteMultipartUpload 请求中,协议要求完成清单 XML 中的分片号(PartNumber)必须严格递增。直到 Server 20260725 为止,SILO 一直使用 sort.SliceIsSorted 配合严格小于号 < 来校验这一不变量——但这套写法实际上校验的是“非递减序”,会放行 [1, 1] 这类包含相邻重复分片号的列表,导致同一个底层分片在最终对象中被重复拼接。Server 20260804(pgsty/silo#49)将其替换为显式 …

    在 S3 API 的 CompleteMultipartUpload 请求中,协议要求完成清单 XML 中的分片号(PartNumber)必须严格递增。直到 Server 20260725 为止,SILO 一直使用 sort.SliceIsSorted 配合严格小于号 < 来校验这一不变量——但这套写法实际上校验的是“非递减序”,会放行 [1, 1] 这类包含相邻重复分片号的列表,导致同一个底层分片在最终对象中被重复拼接。Server 20260804(pgsty/silo#49)将其替换为显式 …

  • SN-2026-002:内部节点路径包含审计——补完 CVE-2026-42600 欠下的那笔账

    发布于 安全编年史

    安全Path Containment

    SN-2026-002:内部节点路径包含审计——补完 CVE-2026-42600 欠下的那笔账

    发布状态: 已随 Server 20260804 发布(发行注记) 安全编号: SN-2026-002(安全公告台账) 修复提交: ca7baa670、b6f70ab08、80e8eaa42、1af351a70、a36fd8fff 影响范围: 仅分布式纠删码(distributed erasure)部署;需持有集群 root / 节点间 JWT 前置阅读: CVE-2026-42600 · ReadMultiple 在 CVE-2026-42600 移除 /rmpl(ReadMultiple)端 …

    发布状态: 已随 Server 20260804 发布(发行注记) 安全编号: SN-2026-002(安全公告台账) 修复提交: ca7baa670、b6f70ab08、80e8eaa42、1af351a70、a36fd8fff 影响范围: 仅分布式纠删码(distributed erasure)部署;需持有集群 root / 节点间 JWT 前置阅读: CVE-2026-42600 · ReadMultiple 在 CVE-2026-42600 移除 /rmpl(ReadMultiple)端 …

  • Silo 20260618 发布

    发布于 发布注记

    发布SILO

    Silo 20260618 发布

    发布日期: 2026-06-18 · 版本: RELEASE.2026-06-18T00-00-00Z 这是 pgsty/minio 社区分支的一次例行安全与依赖维护更新。该版本加固 LDAP STS 限流,补齐 S3 Select 超大记录限制,移除废弃的 ReadMultiple 节点间 storage-REST API,将 Go 构建基线升级到 1.26.4,并刷新 Go 模块依赖以吸收第三方安全修复。 说明 说明 已知问题:本版本与自 …

    发布日期: 2026-06-18 · 版本: RELEASE.2026-06-18T00-00-00Z 这是 pgsty/minio 社区分支的一次例行安全与依赖维护更新。该版本加固 LDAP STS 限流,补齐 S3 Select 超大记录限制,移除废弃的 ReadMultiple 节点间 storage-REST API,将 Go 构建基线升级到 1.26.4,并刷新 Go 模块依赖以吸收第三方安全修复。 说明 说明 已知问题:本版本与自 …

  • CVE-2026-42600:ReadMultiple Storage-REST 路径穿越

    发布于 安全编年史

    安全ReadMultiple

    CVE-2026-42600:ReadMultiple Storage-REST 路径穿越

    状态: 已发布 首个包含版本: RELEASE.2026-06-18T00-00-00Z 修复提交: 73ac524 GitHub Advisory: GHSA-xh8f-g2qw-gcm7 影响范围: 仅分布式纠删码(distributed erasure)部署;需持有集群 root / 节点间 JWT 节点间 storage-REST 路由 /rmpl(ReadMultiple)的 msgpack 请求体中包含 Bucket、Prefix 与 Files 字段,旧代码未做磁盘根目录包含 …

    状态: 已发布 首个包含版本: RELEASE.2026-06-18T00-00-00Z 修复提交: 73ac524 GitHub Advisory: GHSA-xh8f-g2qw-gcm7 影响范围: 仅分布式纠删码(distributed erasure)部署;需持有集群 root / 节点间 JWT 节点间 storage-REST 路由 /rmpl(ReadMultiple)的 msgpack 请求体中包含 Bucket、Prefix 与 Files 字段,旧代码未做磁盘根目录包含 …

  • Silo 20260417 发布

    发布于 发布注记

    发布SILO

    Silo 20260417 发布

    发布日期: 2026-04-17 · 版本: RELEASE.2026-04-17T00-00-00Z 本次版本聚焦安全加固与兼容性收敛,集中修复了 OIDC、LDAP STS、S3 Select、对象复制元数据、unsigned-trailer、Snowball 上传链路,以及依赖与 Go 工具链相关的多项安全问题,并同步完成 LDAP TLS 回归修复与社区分叉文档整理。 主要变更 身份认证链路收紧:OIDC / WebIdentity 现在只接受来自 IdP JWKS 的非对称签名 ID …

    发布日期: 2026-04-17 · 版本: RELEASE.2026-04-17T00-00-00Z 本次版本聚焦安全加固与兼容性收敛,集中修复了 OIDC、LDAP STS、S3 Select、对象复制元数据、unsigned-trailer、Snowball 上传链路,以及依赖与 Go 工具链相关的多项安全问题,并同步完成 LDAP TLS 回归修复与社区分叉文档整理。 主要变更 身份认证链路收紧:OIDC / WebIdentity 现在只接受来自 IdP JWKS 的非对称签名 ID …

  • 续命 MinIO:承诺兑现

    发布于 文章

    postminio

    续命 MinIO:承诺兑现

    两个月前,我在《MinIO 已死,MinIO 复生》里立了一个 flag,承接上游的烂摊子,跟 CVE、修 Bug。 那篇文章上了几个小时的 Hacker News 头条。鼓励不少,质疑也不少:一个人,真维护得了这种项目吗? 这个问题其实问得很好。因为真正见真章的时刻,不是点 fork 按钮,也不是改 README 文档,而是当安全漏洞真砸下来的时候。 现在,这件事可以交账了。 4 月 15 日到 17 日,三天时间,pgsty/minio 发布了 RELEASE.2026-04-17,连续修掉 …

    两个月前,我在《MinIO 已死,MinIO 复生》里立了一个 flag,承接上游的烂摊子,跟 CVE、修 Bug。 那篇文章上了几个小时的 Hacker News 头条。鼓励不少,质疑也不少:一个人,真维护得了这种项目吗? 这个问题其实问得很好。因为真正见真章的时刻,不是点 fork 按钮,也不是改 README 文档,而是当安全漏洞真砸下来的时候。 现在,这件事可以交账了。 4 月 15 日到 17 日,三天时间,pgsty/minio 发布了 RELEASE.2026-04-17,连续修掉 …

  • CVE-2026-41145:Unsigned-Trailer 查询认证绕过

    发布于 安全编年史

    安全Unsigned Trailer

    CVE-2026-41145:Unsigned-Trailer 查询认证绕过

    状态: 已发布 首个包含版本: RELEASE.2026-04-17T00-00-00Z 修复提交: f444b6f37 GitHub Advisory: GHSA-hv4r-mvr4-25vw 在 f444b6f37 之前,查询字符串(query-string)形式的 SigV4 凭据可以进入 STREAMING-UNSIGNED-PAYLOAD-TRAILER 上传流,但旧处理器仅在存在 HTTP Authorization 请求头时才执行签名验证。因此,攻击者只要知道一个有效的 …

    状态: 已发布 首个包含版本: RELEASE.2026-04-17T00-00-00Z 修复提交: f444b6f37 GitHub Advisory: GHSA-hv4r-mvr4-25vw 在 f444b6f37 之前,查询字符串(query-string)形式的 SigV4 凭据可以进入 STREAMING-UNSIGNED-PAYLOAD-TRAILER 上传流,但旧处理器仅在存在 HTTP Authorization 请求头时才执行签名验证。因此,攻击者只要知道一个有效的 …

  • CVE-2026-40344:Snowball 自动解包认证绕过

    发布于 安全编年史

    安全Snowball

    CVE-2026-40344:Snowball 自动解包认证绕过

    状态: 已发布 首个包含版本: RELEASE.2026-04-17T00-00-00Z 修复提交: efb6e5b00 GitHub Advisory: GHSA-9c4q-hq6p-c237 Snowball 自动解包处理器 PutObjectExtractHandler(X-Amz-Meta-Snowball-Auto-Extract: true)此前漏掉了 authTypeStreamingUnsignedTrailer 认证分支。携带伪造签名的 …

    状态: 已发布 首个包含版本: RELEASE.2026-04-17T00-00-00Z 修复提交: efb6e5b00 GitHub Advisory: GHSA-9c4q-hq6p-c237 Snowball 自动解包处理器 PutObjectExtractHandler(X-Amz-Meta-Snowball-Auto-Extract: true)此前漏掉了 authTypeStreamingUnsignedTrailer 认证分支。携带伪造签名的 …

  • CVE-2026-39414:S3 Select 超大记录与 SIMD 快路径绕过

    发布于 安全编年史

    安全S3 Select

    CVE-2026-39414:S3 Select 超大记录与 SIMD 快路径绕过

    状态: 已发布,6 月完成第二轮闭环 初始修复版本: RELEASE.2026-04-17T00-00-00Z 完整修复版本: RELEASE.2026-06-18T00-00-00Z 修复提交: 3252d5b、5dc705936(fd69c89) GitHub Issue: pgsty/silo#25 4 月份的第一轮修复(3252d5b)复用既有的 1 MiB maxCharsPerRecord 常量,同时限制 S3 Select 中的 CSV 与标准 JSON Lines 单条记录长度, …

    状态: 已发布,6 月完成第二轮闭环 初始修复版本: RELEASE.2026-04-17T00-00-00Z 完整修复版本: RELEASE.2026-06-18T00-00-00Z 修复提交: 3252d5b、5dc705936(fd69c89) GitHub Issue: pgsty/silo#25 4 月份的第一轮修复(3252d5b)复用既有的 1 MiB maxCharsPerRecord 常量,同时限制 S3 Select 中的 CSV 与标准 JSON Lines 单条记录长度, …

  • CVE-2026-34204:复制元数据注入

    发布于 安全编年史

    安全Replication

    CVE-2026-34204:复制元数据注入

    状态: 已发布 首个包含版本: RELEASE.2026-04-17T00-00-00Z 修复提交: 56fa63b GitHub Issue: pgsty/silo#24 在 56fa63b 之前,普通 PutObject 与 CopyObject 请求可以把客户端传入的 X-Minio-Replication-* 请求头混入内部 X-Minio-Internal-* SSE 与复制元数据,写出复制状态与真实授权路径不符、甚至后续无法读取的对象。 最终修复在默认元数据提取路径中不再接受复制专用 …

    状态: 已发布 首个包含版本: RELEASE.2026-04-17T00-00-00Z 修复提交: 56fa63b GitHub Issue: pgsty/silo#24 在 56fa63b 之前,普通 PutObject 与 CopyObject 请求可以把客户端传入的 X-Minio-Replication-* 请求头混入内部 X-Minio-Internal-* SSE 与复制元数据,写出复制状态与真实授权路径不符、甚至后续无法读取的对象。 最终修复在默认元数据提取路径中不再接受复制专用 …

  • CVE-2026-33419:LDAP STS 用户枚举与限流链演进

    发布于 安全编年史

    安全LDAP STS

    CVE-2026-33419:LDAP STS 用户枚举与限流链演进

    状态: 已发布,并经历两轮后续修正 首个包含版本: RELEASE.2026-04-17T00-00-00Z 完整修正版本: RELEASE.2026-06-18T00-00-00Z 修复提交: 3b950f8、18b712d、9e10f6d、f441108、5e40665 GitHub Issue: pgsty/silo#23 AssumeRoleWithLDAPIdentity 的初始漏洞非常直观:LDAP STS 对“用户不存在”与“密码错误”返回不同的错误信息,构成了无需认证即可利用的用 …

    状态: 已发布,并经历两轮后续修正 首个包含版本: RELEASE.2026-04-17T00-00-00Z 完整修正版本: RELEASE.2026-06-18T00-00-00Z 修复提交: 3b950f8、18b712d、9e10f6d、f441108、5e40665 GitHub Issue: pgsty/silo#23 AssumeRoleWithLDAPIdentity 的初始漏洞非常直观:LDAP STS 对“用户不存在”与“密码错误”返回不同的错误信息,构成了无需认证即可利用的用 …

  • CVE-2026-33322:OIDC JWT 算法混淆

    发布于 安全编年史

    安全OIDC

    CVE-2026-33322:OIDC JWT 算法混淆

    状态: 已发布 首个包含版本: RELEASE.2026-04-17T00-00-00Z 影响入口: AssumeRoleWithWebIdentity、AssumeRoleWithClientGrants 修复提交: d24f449 GitHub Issue: pgsty/silo#22 internal/config/identity/openid 的旧实现将 OIDC client_secret 放进了本地 JWT 验签密钥环(keyring),同时允许 HMAC 签名算法 …

    状态: 已发布 首个包含版本: RELEASE.2026-04-17T00-00-00Z 影响入口: AssumeRoleWithWebIdentity、AssumeRoleWithClientGrants 修复提交: d24f449 GitHub Issue: pgsty/silo#22 internal/config/identity/openid 的旧实现将 OIDC client_secret 放进了本地 JWT 验签密钥环(keyring),同时允许 HMAC 签名算法 …

  • CVE-2026-32285:最终无需补丁的 jsonparser 通告

    发布于 安全编年史

    安全jsonparser

    CVE-2026-32285:最终无需补丁的 jsonparser 通告

    状态: 无需代码改动,问题已关闭 GitHub Issue: pgsty/silo#26 关联上游提交: c1a49490(CVE-2025-62506) 对 CVE-2026-32285 的初始排查假设仓库可能仍携带未修复的 github.com/buger/jsonparser,团队甚至一度评估过替换依赖或维护独立分支。但在逐一核对通告引用的上游提交、Go 模块实际解析版本以及符号可达性后,结论完全改变: 外部漏洞库将 CVE-2026-32285 的摘要写成了 jsonparser 漏洞, …

    状态: 无需代码改动,问题已关闭 GitHub Issue: pgsty/silo#26 关联上游提交: c1a49490(CVE-2025-62506) 对 CVE-2026-32285 的初始排查假设仓库可能仍携带未修复的 github.com/buger/jsonparser,团队甚至一度评估过替换依赖或维护独立分支。但在逐一核对通告引用的上游提交、Go 模块实际解析版本以及符号可达性后,结论完全改变: 外部漏洞库将 CVE-2026-32285 的摘要写成了 jsonparser 漏洞, …

  • Silo 20260325 发布

    发布于 发布注记

    发布SILO

    Silo 20260325 发布

    发布日期: 2026-03-25 · 版本: RELEASE.2026-03-25T00-00-00Z 本版本重点改进容器镜像打包、修复 ldaps:// 连接的 TLS 配置透传回归,并同步锁定多项第三方依赖的安全更新版本。 主要变更 将 mcli(及兼容别名 mc)内置到 Docker 镜像中并增加二进制校验,开箱即可直接执行管理命令。 修复 ldaps:// 场景下的 LDAP TLS 配置回归,确保自定义 CA 证书与 …

    发布日期: 2026-03-25 · 版本: RELEASE.2026-03-25T00-00-00Z 本版本重点改进容器镜像打包、修复 ldaps:// 连接的 TLS 配置透传回归,并同步锁定多项第三方依赖的安全更新版本。 主要变更 将 mcli(及兼容别名 mc)内置到 Docker 镜像中并增加二进制校验,开箱即可直接执行管理命令。 修复 ldaps:// 场景下的 LDAP TLS 配置回归,确保自定义 CA 证书与 …

  • Silo 20260321 发布

    发布于 发布注记

    发布SILO

    Silo 20260321 发布

    发布日期: 2026-03-21 · 版本: RELEASE.2026-03-21T00-00-00Z 这是一次围绕 Go 1.26.1 与依赖收敛展开的维护版。除了适配更严格的编译与 lint 检查外,这个版本也完成了本轮最关键的一次安全依赖刷新。 主要变更 将构建环境从 Go 1.26.0 升级到 Go 1.26.1。 全面刷新直接与间接依赖,收敛新工具链下的兼容性问题。 修正 Go 1.26.1 更严格检查暴露出来的一批 lint 与测试问题。 修复的 CVE …

    发布日期: 2026-03-21 · 版本: RELEASE.2026-03-21T00-00-00Z 这是一次围绕 Go 1.26.1 与依赖收敛展开的维护版。除了适配更严格的编译与 lint 检查外,这个版本也完成了本轮最关键的一次安全依赖刷新。 主要变更 将构建环境从 Go 1.26.0 升级到 Go 1.26.1。 全面刷新直接与间接依赖,收敛新工具链下的兼容性问题。 修正 Go 1.26.1 更严格检查暴露出来的一批 lint 与测试问题。 修复的 CVE …

  • Silo 20260314 发布

    发布于 发布注记

    发布SILO

    Silo 20260314 发布

    发布日期: 2026-03-14 · 版本: RELEASE.2026-03-14T12-00-00Z 这个版本完成了向社区维护 Console 分支的切换,并在切换过程中做了一轮较大幅度的依赖更新,为后续 Go 1.26.x 维护版打下基础。 主要变更 切换到社区维护的 georgmangold/console v1.9.1,替换不可持续维护的上游 Console 依赖。 大幅更新 go.mod 中的直接与间接依赖,使 Console 与新工具链组合能够稳定构建。 修复 …

    发布日期: 2026-03-14 · 版本: RELEASE.2026-03-14T12-00-00Z 这个版本完成了向社区维护 Console 分支的切换,并在切换过程中做了一轮较大幅度的依赖更新,为后续 Go 1.26.x 维护版打下基础。 主要变更 切换到社区维护的 georgmangold/console v1.9.1,替换不可持续维护的上游 Console 依赖。 大幅更新 go.mod 中的直接与间接依赖,使 Console 与新工具链组合能够稳定构建。 修复 …

  • Silo 20260214 发布

    发布于 发布注记

    发布SILO

    Silo 20260214 发布

    发布日期: 2026-02-14 · 版本: RELEASE.2026-02-14T12-00-00Z 这是社区分支早期的一个基础设施版本,除了恢复内嵌 Console 与建立 GitHub CI/CD 之外,也把 Go 运行时基线提升到 1.26.0,因此一并消化了上一代工具链中的一批安全问题。 主要变更 恢复内嵌 Console,并更新 README 以明确社区维护分支的定位。 新增 GitHub CI/CD 流水线,为后续自动构建和多平台分发建立基础。 补充文档、Docker、GitHub …

    发布日期: 2026-02-14 · 版本: RELEASE.2026-02-14T12-00-00Z 这是社区分支早期的一个基础设施版本,除了恢复内嵌 Console 与建立 GitHub CI/CD 之外,也把 Go 运行时基线提升到 1.26.0,因此一并消化了上一代工具链中的一批安全问题。 主要变更 恢复内嵌 Console,并更新 README 以明确社区维护分支的定位。 新增 GitHub CI/CD 流水线,为后续自动构建和多平台分发建立基础。 补充文档、Docker、GitHub …

  • MinIO 已死,MinIO 复生

    发布于 文章

    postminio

    MinIO 已死,MinIO 复生

    MinIO 开源仓库正式归档,不再维护。一个时代落幕,但开源的精神不死。 老冯 Fork 了 MinIO,复活了管理控制台,重建了二进制分发渠道,让 MinIO 浴火重生。 2026-10-25 更新: 当前维护的 Docker 镜像已更名为 pgsty/silo。下文 Docker 链接与示例已更新为当前名称,详见迁移指南。 如果你正在用 MinIO,把 minio/minio 换成 pgsty/silo ,其他一切照旧。 MinIO 的死亡证明 2025年12月3日,MinIO 在 …

    MinIO 开源仓库正式归档,不再维护。一个时代落幕,但开源的精神不死。 老冯 Fork 了 MinIO,复活了管理控制台,重建了二进制分发渠道,让 MinIO 浴火重生。 2026-10-25 更新: 当前维护的 Docker 镜像已更名为 pgsty/silo。下文 Docker 链接与示例已更新为当前名称,详见迁移指南。 如果你正在用 MinIO,把 minio/minio 换成 pgsty/silo ,其他一切照旧。 MinIO 的死亡证明 2025年12月3日,MinIO 在 …

  • Silo 20251203 发布

    发布于 发布注记

    发布SILO

    Silo 20251203 发布

    发布日期: 2025-12-15 · 版本: RELEASE.2025-12-03T12-00-00Z 这是目前可追溯到的首个社区版发布,确立了社区维护分支的打包与分发基线。 主要变更 基于 minio/pkger 建立社区版打包流程。 选择 MinIO 进入 maintenance mode 后的一版上游基线作为社区分支起点。 首次产出 apk、deb、rpm 等多种平台包,为后续持续发布建立基础。 修复的 CVE 首个社区版发布基线,无相对前序社区版本的增量 CVE 列表。 关联提交 …

    发布日期: 2025-12-15 · 版本: RELEASE.2025-12-03T12-00-00Z 这是目前可追溯到的首个社区版发布,确立了社区维护分支的打包与分发基线。 主要变更 基于 minio/pkger 建立社区版打包流程。 选择 MinIO 进入 maintenance mode 后的一版上游基线作为社区分支起点。 首次产出 apk、deb、rpm 等多种平台包,为后续持续发布建立基础。 修复的 CVE 首个社区版发布基线,无相对前序社区版本的增量 CVE 列表。 关联提交 …

  • MinIO已死,谁能接盘?

    发布于 文章

    postminio

    MinIO已死,谁能接盘?

    前天 MinIO 宣告进入维护模式,老冯写了一篇《MinIO 已死》聊了聊这个话题。 很多朋友也问我,MinIO 既然摆烂躺平了,有谁能接 MinIO 的班? 大方向的话,台面上的替代品无非就那几个:Ceph、RustFS、SeaweedFS、Garage…… 老冯把这些方案都打好了 Linux 上的 RPM/DEB 包,挨个试了一遍。 总结一句话:没有完美替代。 各有各的问题 —— Ceph 功能全但太复杂;SeaweedFS 针对小文件优化但需要独立元数据库;Garage 小巧玲珑但功能简陋 …

    前天 MinIO 宣告进入维护模式,老冯写了一篇《MinIO 已死》聊了聊这个话题。 很多朋友也问我,MinIO 既然摆烂躺平了,有谁能接 MinIO 的班? 大方向的话,台面上的替代品无非就那几个:Ceph、RustFS、SeaweedFS、Garage…… 老冯把这些方案都打好了 Linux 上的 RPM/DEB 包,挨个试了一遍。 总结一句话:没有完美替代。 各有各的问题 —— Ceph 功能全但太复杂;SeaweedFS 针对小文件优化但需要独立元数据库;Garage 小巧玲珑但功能简陋 …