这是本节的多页打印视图。 .
关于 PGSTY SILO
1 - PGSTY SILO 宣言
PGSTY SILO 的存在目的:让一个可信、可维护、功能完整的 S3 兼容社区版对象存储继续存在,确保其软件供应链的持续性。
本页是项目的公开承诺,通篇遵循一项纪律:这里的每一条,要么是我们已经在做、且有公开证据的事实;要么是我们刻意拒绝承诺的事。 一个兑现不了的承诺,比没有承诺更糟。
第一条 · 存在理由与退场条款
本项目因上游收缩社区版而生:Web 控制台被削减为残桩、社区预编译制品停发、社区仓库被归档。 Silo 为既有的 MinIO 兼容部署提供延续性——Pigsty 在生产环境中以 Silo 承载 PostgreSQL 备份存储,我们自己的运维依赖着我们发布的同一批制品。
Fork 是手段,不是身份。若上游恢复对社区版的承诺,我们乐见其成,愿意收缩范围,并把我们的修复回馈给上游。
背景参考:
- MinIO已死(2025-12)——上游拿走了什么,何时拿走的。
- MinIO已死,谁能接盘?(2025-12)——备选方案的逐一评估。
- MinIO 已死,MinIO 复生(2026-02)——本 Fork 的诞生宣言。
- 续命 MinIO:承诺兑现(2026-04)——头几个月的兑现记录。
第二条 · 兼容性合同
产品与商标改名,协议与数据不改。
- S3 API、
MINIO_*环境变量、minio_*指标、x-minio-*头、/minio/*路由与磁盘格式(含.minio.sys)原样保留,并由 CI 兼容性门禁冻结。 - 每个版本在发布说明中标注经过测试的回滚目标与路径。
- 新增能力不触碰磁盘格式;任何例外必须在你启用它 之前 显式标记为 不可回退。
- 迁移指南(包括如何离开 Silo)与逐组件的兼容性审计公开维护。
第三条 · 许可证恒定,且是结构性的
Silo 永远是 AGPLv3。没有 CLA、不做版权聚合:贡献只接受 DCO 签署,版权保留在每位贡献者手中。 不重新授权不是一句口头承诺 —— 我们把它做成结构上的不可能。
我们对 AGPL 边界的解读,以立场而非法律意见的形式公开承诺: 通过 S3 API 使用 Silo 不会使你的应用构成衍生作品。许可证永远不会被用作威胁或销售工具。
第四条 · 改动纪律
相对上游基线的改动只限四类:安全修复、缺陷修复、恢复被移除的社区功能、可选的新增能力。 既有 API 语义只在安全修复必需时才改变,且每一处兼容性代价都记录在引发它的安全公告里。 与上游的全部分歧,以逐项核验代码的兼容性审计形式维护。
第五条 · 永不清单
Silo 永不:
- 将既有功能移入付费墙;
- 给下载设置注册墙或登录墙;
- 加入遥测——上游的回连路径(更新检查、SUBNET、call-home)已被整体移除,而非仅仅默认关闭;
- 引入 CLA;
- 变更许可证;
- 以商标追究正常使用与描述性提及。
本清单只增不减:条目可以增补,永不删除。
第六条 · 安全纪律
- 漏洞通过私密渠道报告,可复现地分诊,协调式披露 —— 完整分析在修复版本发布前不公开。
- 每项安全修复都在安全纪事发布公开公告,附证据与兼容性代价。
- 依赖链 CVE 持续跟踪,任何变更前先做可达性分析。
- 每个版本附带 SHA-256 校验和、SPDX SBOM、Sigstore 签名清单与 GitHub 构建溯源。
我们对确认可远程利用的高危问题尽力加急处理,但不承诺修复时限的具体 SLA。
第七条 · 发布节奏
通常每一到两个月发布一个版本,最长不超过一个季度。安全与缺陷修复随版本集中交付。历史公开可查;请拿它来检验这条承诺。
版本 tag 沿用 RELEASE.YYYY-MM-DDTHH-MM-SSZ 格式,每个版本标注其上游基线。
功能弃用提前至少六个月公告并附迁移路径 —— 安全需要立即移除的情形除外,此时移除及其理由会在安全纪事中公开。
第八条 · 上游关系
出于对上游商标的尊重,我们改了名。上游的版权、许可证与第三方声明完整保留:署名与商标。 若上游恢复接收贡献,适用的修复将择机回馈上游。
第九条 · 延续性
- 仓库归属 pgsty 组织,而非个人账号。
- 构建过程完整文档化并附溯源证明:任何人都可以在没有我们的情况下从源码重建等价制品。
- 若项目停止积极维护超过六个月,我们将公开声明并妥善归档 —— 并尽最大努力确保已发布的制品与文档保持可用。
- 若有成熟的开源组织(例如 CNCF 这样的基金会)愿意为 Silo 引入更正规的治理,我们乐于合作。
第十条 · 商业边界
Silo 各仓库中的一切——服务端、客户端、控制台与软件制品 —— 现在完整免费,将来也完整免费。
第十一条 · 宣言自身的纪律
对本宣言的增补与加强即时生效;削弱或删除任何一条,须提前九十天公示。第五条永远只增不减。
持续更新的证据:
2 - 许可协议
Silo 涉及两套彼此独立的许可协议:软件与文档的分发条款不同,各自沿用其上游作品原有的许可。
| 对象 | 许可协议 | 位置 |
|---|---|---|
silo 服务端 |
AGPL-3.0-or-later | pgsty/silo |
| SILO Console | AGPL-3.0-or-later | pgsty/silo-console |
mcli 客户端 |
AGPL-3.0-or-later | pgsty/mc |
| SILO 共享包 | AGPL-3.0-or-later | pgsty/silo-pkg |
kes 密钥管理服务(可选) |
AGPL-3.0-or-later | pgsty/kes |
| 本文档 | CC BY 4.0 | pgsty/silo.pgsty.com |
软件:AGPLv3
PGSTY SILO 是 MinIO 的分支,而 MinIO 自 2021 年起便以 GNU Affero 通用公共许可证第 3 版分发。 对于已经以该许可发布的代码,授权不可撤回——这正是本分支得以存在的法律基础。 PGSTY SILO 沿用同一许可:不重新授权、不附加限制、不做开源核心式的功能阉割。
具体而言,AGPLv3 允许你运行、研究、修改与再分发 PGSTY SILO;如果你把修改后的 PGSTY SILO 以网络服务形式提供给用户, 则必须向这些用户提供你所修改版本的对应源代码。
在依据任何摘要(包括本段)行事之前,请阅读许可证全文。
向 PGSTY SILO 贡献
五个维护中的软件仓库均按 AGPL-3.0-or-later 接收代码贡献,与各仓库自身的许可证一致。 贡献者保留原创内容的版权。SILO 不要求签署 CLA、转让版权,也不要求向 SILO 维护者或上游 MinIO 额外授予 Apache-2.0 许可。
请向负责相应组件的 PGSTY 仓库提交修改,并通过 git commit -s 签署
开发者原创声明 DCO 1.1。详见
服务端、
Console、
mcli 和
共享包 的贡献指南。
本文档的贡献沿用 CC BY 4.0。已有的版权、许可和署名声明须予以保留, 单独授权的第三方材料继续遵循其原有许可。
文档:CC BY 4.0
本站发布的全部内容依据 知识共享署名 4.0 国际许可协议(CC BY 4.0)授权, 与上游 MinIO 文档使用的许可一致。完整法律文本 以原样形式保存在文档仓库中。
你可以自由地共享与演绎本文档,包括用于商业目的,前提是给出适当的署名、提供许可协议链接, 并说明是否作出了修改。你不得附加任何法律或技术限制,去妨碍他人行使许可协议所允许的权利。
署名是唯一实质性的义务,归属与署名页面给出了可直接复制使用的署名文本, 以及完整的版权归属层次。
许可协议不涵盖什么
许可协议授予的是著作权层面的权利,它不涉及名称。获准使用 MinIO 的代码与文档, 并不等于获准使用 MinIO 商标——参见商标声明。
免责声明
两套许可协议均按“现状”提供作品,不附带任何形式的保证或条件。 完整的保证免责与责任限制条款,见 CC BY 4.0 第 5 条, 以及 AGPLv3 第 15–17 条。
参见
3 - 商标声明
本文档中出现的 MinIO 名称,均为描述性使用,未暗示任何商业合作关系。
Silo 是由 PIGSTY 社区独立维护的分支,与 MinIO, Inc. 无 关联,未获其认可或赞助。
项目为避免混淆所做的事
- 本分支以自己的名称 PGSTY SILO 发布,而非冒用 MinIO 之名。
- 本站每一个页面的页脚都带有商标免责声明。
- 在所有分发渠道——代码仓库、容器镜像、发行制品与本文档——均明确标注为社区分支。
- 从不宣称与 MinIO, Inc. 存在关联、认可、认证或商业合作关系。
为什么这个名字仍然出现在文档中?
许可协议授予的是著作权层面的权利,它不涉及名称。 AGPLv3 赋予任何人分支与再分发 MinIO 代码库的权利, 但商标法属于另一个领域,商标使用并不因许可协议而自动解决。
本文档内出现 MinIO 名称,用于标识本作品所衍生自的上游项目,以及那些在现实中仍沿用上游名称的对象:
- 上游项目及其历史,在署名与叙述中出现
- 通信协议、API 接口,以及 S3 兼容性说明
- 命令名、配置项、环境变量、二进制文件名与错误信息——它们属于软件兼容性契约的一部分
- 自 MinIO 文档承接而来的内容:若强行改名,文本将无法与其所描述的软件对应
其他商标
“Pigsty” 与 “PGSTY” 指 Pigsty 项目及其维护者,PGSTY SILO 由其发布。 Amazon S3 是 Amazon.com, Inc. 或其关联公司的商标,文中提及 S3 仅用于说明协议兼容性。 其余商标均归各自所有者所有。
参见
4 - 署名归属
版权
Copyright © 2020–至今 MinIO, Inc. MinIO 对象存储文档原作。
Copyright © 2026–至今 PIGSTY & SILO Contributors 分支维护、格式转换、内容修改、恢复与新增的文档,以及中文翻译。
两层版权同时存在。经过翻译或修改的页面,底层表达的版权属于 MinIO,翻译与修改部分的版权属于 PGSTY SILO 项目,二者互不取代。
许可
本站所有文档内容依据 知识共享署名 4.0 国际许可协议(CC BY 4.0)授权, 与上游原作使用同一许可证。完整法律文本见 LICENSE。 PGSTY SILO 软件本身另行授权,参见许可协议。
衍生关系
本文档的部分内容衍生自 MinIO 对象存储文档,相对原作已进行若干修改: 更名为 Silo、恢复上游已移除功能的文档、将冻结的 RST/MyST 源码转换为双语 Markdown、 以 Hugo 与 OINK 替换 Sphinx 呈现层、修复链接与构建问题、持续维护,以及翻译为中文。完整的变更记录见提交历史。
博客、下载与发行页面、本节内容,以及 Silo 专属内容, 均为 PGSTY SILO 项目的原创作品。凡包含上游素材的页面,都会在页面底部标注来源; 被 Silo 修改过(超出格式转换范围)的页面,还会给出该页自身的修改历史链接。
翻译
中文翻译由 Silo 项目维护,属于非官方翻译,与 MinIO, Inc. 无关。 如中文译文与英文原文有出入,以英文原文为准。
署名
如果你复用本站内容,按下面这样署名即可满足 CC BY 4.0 的要求:
英文场景可使用:
声明
除许可人另行承诺外,在法律允许的范围内,许可人按“现状”与“现有”方式提供许可材料, 不就许可材料作出任何明示、默示、法定或其他形式的陈述或保证。 完整的保证免责与责任限制条款见 许可证第 5 条。
参见
5 - 贡献者
截至 2026-11-09,SILO 及相关项目共有 76 位社区贡献者,包括维护者、公开 issue / PR 作者,以及已公开致谢的安全披露者。
只要提交过 issue 或 PR,无论开启、关闭、草稿或未合并,均予以认可。同一账号只计一次。排序先列已合并 PR 的作者,再列其他 PR 作者和问题报告者;每组优先展示重要修复、已采纳方案和推动修复的报告,其余按首次参与时间排列。金色圆环突出显著贡献。
原 PR 未直接合并但成果被后续修复采纳时,会单独列出采纳记录。自动化账号不计入人数。上游作者的署名继续保留在 Git 历史与版权声明中。
已合并 PR 的贡献者
其他 PR 贡献
| 贡献者 | 贡献 | 记录 |
|---|---|---|
| @magicxor | 报告并提交 DELETE If-Match 条件请求支持方案 | 未直接合并的已关闭 PR: pgsty/silo#12 已关闭 issue: pgsty/silo#10 条件 DELETE 支持经 #145 纳入后,原 PR 关闭。 |
| @davinkevin | 提交 distroless 容器镜像与依赖自动更新方案 | 未直接合并的已关闭 PR: pgsty/silo#21 未关闭 issue: pgsty/silo#20 distroless 方案由 RELEASE.2026-08-06 交付的镜像替代。 |
| @metaneutrons | 报告并提交显式版本删除鉴权方案 | 未直接合并的已关闭 PR: pgsty/silo#59 已关闭 issue: pgsty/silo#58 原 PR 被后续工作替代;其鉴权动作拆分方案为 #104 提供了依据。 |
| @mikemikimike | 提交 SSE-C 复制分片明文尺寸修复 | 未直接合并的已关闭 PR: pgsty/silo#125 原 PR 被后续工作替代;明文尺寸修复经 #124 纳入,属性处理见 #128。 |
| @chodorenko | 报告并贡献 aws-chunked 错写入副本元数据的修复 | 未直接合并的已关闭 PR: pgsty/silo#187 已关闭 issue: pgsty/silo#185 实现已纳入 #194,并保留共同作者署名;原 PR 因被替代而关闭。 |
| @dihmandrake | 报告修复试运行的安全问题,并提交并行深度校验及 Helm 配置选项方案 | 待合并 PR: pgsty/silo#280, pgsty/silo#283 与 #280 相关的试运行保护已独立纳入 c8dd5678b 与 dd0a2da55。PR 仍保持开放,包括并行校验方案。 |
| @sulin37392 | 提交依赖更新 | 未直接合并的已关闭 PR: pgsty/silo#8 |
| @lem21h | 提交健壮性与 goroutine 改进 | 未直接合并的已关闭 PR: pgsty/silo#36 |
| @liubin07 | 提交可选的对象命名模式,支持同名对象与前缀共存 | 未直接合并的已关闭 PR: pgsty/silo#260 |
| @HaveFun83 | 提交 Helm Chart 中可配置的 Kubernetes 健康探针方案 | 待合并 PR: pgsty/silo#288 |
问题报告与安全披露
| 贡献者 | 贡献 | 记录 |
|---|---|---|
| @kh0mka | 报告节点间 I/O 超时、OIDC 配置拉取失败,以及 Console 建桶配额丢失问题 | 已关闭 issue: pgsty/silo#51, pgsty/silo#154 已关闭 issue: pgsty/silo-console#72 |
| @MikeVL | 报告 resync 吞吐量溢出与 JSON 状态无输出,两项均在 mcli 20261026 修复 | 已关闭 issue: pgsty/mc#48, pgsty/mc#49 |
| @vampywiz17 | 报告 LDAP TLS 与 Console 登录回归 | 已关闭 issue: pgsty/silo#15, pgsty/silo#108 |
| @jiri-pejchal | 报告 RabbitMQ 客户端漏洞,以及 Console 分享代理暴露内部指标的问题 | 已关闭 issue: pgsty/silo#176 已关闭 issue: pgsty/silo-console#52 |
| @AEGEGE | 报告慢速 HTTP 拒绝服务漏洞 | 已关闭 issue: pgsty/silo#183 已复现的慢速请求头缺陷通过 #196 在 main 修复。 |
| @naiveHobo | 报告 IAM 管理 API 访问控制问题及私密报告通道不可用 | 已关闭 issue: pgsty/silo#222 |
| @orenyomtov | 报告未签名头导致的 CopyObject 跨对象读取(SN-2026-011) | 安全披露署名见 SN-2026-011,修复见 #173。 |
| @nik0xFF | 通过邮件私下报告安全问题 | 经 Dominik Klug 本人同意,以真实姓名署名。 |
| @szopi00 | 报告 Object Lock GOVERNANCE 保留期鉴权绕过问题 | 该报告推动了 #234 与 #235 的 Object Lock 修复。 |
| @GhaziTriki | 调查策略查询与 Console 性能变慢,并定位客户端 mirror 任务重叠问题 | 已关闭 issue: pgsty/silo#251 在报告者补充调查将直接原因定位为客户端 mirror 任务重叠后关闭;本次事件未证实 SILO 版本回归。 |
| @haf | 报告配置重载后其他节点停止投递审计 Webhook 的问题 | 已关闭 issue: pgsty/silo#259 该报告推动了 0fa4a8c50 与 f3e84d54a 中的 Webhook 目标生命周期与队列恢复修复。 |
| @sun1024 | 通过私密渠道报告 SILO 安全问题 | 经报告者同意公开署名;此处不包含私密报告的技术细节。 |
| @mosesdd | 提出维护 Helm Chart 的需求 | 已关闭 issue: pgsty/silo#1 |
| @Xavier-777 | 报告 Console 生命周期管理与文件预览缺失 | 已关闭 issue: pgsty/silo#2, pgsty/silo#17 |
| @jiadzh | 提出 Windows 构建指导需求 | 已关闭 issue: pgsty/silo#3 |
| @AntonOfTheWoods | 提出明确 Helm Chart 与 Operator 选项的需求 | 已关闭 issue: pgsty/silo#5 |
| @TLINDEN | 报告发布压缩包缺少客户端 | 已关闭 issue: pgsty/silo#4 |
| @zylpsrs | 报告 Console 缺少分层与站点复制 | 已关闭 issue: pgsty/silo#6 |
| @nsanitate | 提出加入 CNCF Sandbox 的治理建议 | 已关闭 issue: pgsty/silo#7 |
| @makinikm | 报告容器镜像缺少客户端 | 已关闭 issue: pgsty/silo#9 |
| @spaceg00se-r | 提出 cpuv1 支持需求并报告工作流令牌错误 | 已关闭 issue: pgsty/silo#11, pgsty/silo#14 |
| @heroes1412 | 报告性能分析选项不可用 | 已关闭 issue: pgsty/silo#13, pgsty/silo#231 |
| @chalukyaj | 提出改善 SILO Operator 可发现性的建议 | 未关闭 issue: pgsty/silo#30 |
| @jvasile | 报告 Debian 包缺少用户、用户组与默认配置 | 已关闭 issue: pgsty/silo#33 |
| @Kesavaambati | 提出社区支持与容器镜像维护问题 | 已关闭 issue: pgsty/silo#35 |
| @redfoxfox | 报告中文文档站点不可用 | 已关闭 issue: pgsty/silo#38 |
| @kuldeep-link11 | 报告 NATS JWT 凭据与通知目标重载问题 | 已关闭 issue: pgsty/silo#39 未关闭 issue: pgsty/silo#40 |
| @meesudzu | 提出从上游 MinIO 迁移的指南需求 | 已关闭 issue: pgsty/silo#42 |
| @pmezhuev | 报告 RPM 包缺少 GPG 签名 | 已关闭 issue: pgsty/silo#43 |
| @bagutzu | 提出兼容 KES 的外部 KMS 与 OpenBao 支持需求 | 已关闭 issue: pgsty/silo#61 |
| @liuhaodongliu990-cmyk | 报告前缀下载进度显示异常 | 已关闭 issue: pgsty/silo#62 |
| @DestroyLee | 报告文档目录导航缺失 | 已关闭 issue: pgsty/silo.pgsty.com#4 |
| @sargarass | 报告 ListMultipartUploads 前缀与分页语义问题 | 未关闭 issue: pgsty/silo#79 |
| @mumu-lab | 报告桶配额指标读取已弃用字段的问题 | 已关闭 issue: pgsty/silo#106 |
| @haiming236 | 提出内置图像处理流水线的建议 | 未关闭 issue: pgsty/silo#160 |
| @tiredenzo | 报告双盘 EC:1 支持的文档不一致问题 | 已关闭 issue: pgsty/silo#197 |
| @aschyolkin | 报告 CPU 指标采集中的数据竞争 | 已关闭 issue: pgsty/silo#210 |
| @0mp | 提出并讨论 FreeBSD 支持 | 未关闭 issue: pgsty/silo#219 |
| @ztarbug | 提出公开发布 Helm Chart 的建议 | 未关闭 issue: pgsty/silo#223 |
| @zmstone | 提出增加 GitHub Container Registry 镜像的建议 | 已关闭 issue: pgsty/silo#224 |
| @Crowley723 | 提出为用户添加易读名称的建议 | 未关闭 issue: pgsty/silo#227 |
| @geraldcombs | 建议 Windows 使用 ZIP 归档,已在维护的发布工具中采纳 | 已关闭 issue: pgsty/mc#45 |
| @devTeam-AiReg | 反馈包含 IAM 安全修复的版本发布需求 | 已关闭 issue: pgsty/silo#247 |
| @azataiot | 报告并分析高延迟下 WebSocket 关闭导致 Console 健康报告截断的问题 | 已关闭 issue: pgsty/silo-console#63 |
| @siyahkut | 提出土耳其语支持需求 | 未关闭 issue: pgsty/silo#277 |
| @seumasdunlop | 报告 Helm Chart 默认服务端镜像标签过期的问题 | 未关闭 issue: pgsty/silo#296 |
统计范围
以下统计来自全部分页的 GitHub issue / PR 记录,包含所有状态和自动化账号。 各仓库的核对日期分别列出;未重新核对的记录保留原日期与状态。 去重后有 72 位公开 issue / PR 作者,另保留 4 位安全披露者。排除的自动化账号:Copilot, dependabot[bot]。
| 仓库 | Issue | PR | 核对日期 |
|---|---|---|---|
| pgsty/silo | 171 | 151 | 2026-11-09 |
| pgsty/silo-console | 42 | 44 | 2026-11-09 |
| pgsty/mc | 45 | 32 | 2026-11-09 |
| pgsty/silo-pkg | 1 | 13 | 2026-11-09 |
| pgsty/silo-go | 0 | 0 | 2026-11-09 |
| pgsty/kes | 0 | 1 | 2026-11-09 |
| pgsty/silo.pgsty.com | 1 | 50 | 2026-11-09 |
| pgsty/minio-docs | 0 | 0 | 2026-11-09 |
| 合计 | 260 | 291 |
维护者记录
已合并 PR: pgsty/silo#44, pgsty/silo#45, pgsty/silo#56, pgsty/silo#66, pgsty/silo#69, pgsty/silo#70, pgsty/silo#72, pgsty/silo#73, pgsty/silo#74, pgsty/silo#80, pgsty/silo#81, pgsty/silo#85, pgsty/silo#86, pgsty/silo#87, pgsty/silo#88, pgsty/silo#89, pgsty/silo#90, pgsty/silo#91, pgsty/silo#92, pgsty/silo#93, pgsty/silo#94, pgsty/silo#95, pgsty/silo#96, pgsty/silo#97, pgsty/silo#98, pgsty/silo#101, pgsty/silo#103, pgsty/silo#104, pgsty/silo#121, pgsty/silo#122, pgsty/silo#123, pgsty/silo#124, pgsty/silo#126, pgsty/silo#127, pgsty/silo#128, pgsty/silo#129, pgsty/silo#130, pgsty/silo#131, pgsty/silo#134, pgsty/silo#135, pgsty/silo#138, pgsty/silo#140, pgsty/silo#142, pgsty/silo#143, pgsty/silo#145, pgsty/silo#146, pgsty/silo#149, pgsty/silo#156, pgsty/silo#157, pgsty/silo#159, pgsty/silo#161, pgsty/silo#162, pgsty/silo#163, pgsty/silo#164, pgsty/silo#173, pgsty/silo#174, pgsty/silo#175, pgsty/silo#177, pgsty/silo#178, pgsty/silo#179, pgsty/silo#180, pgsty/silo#181, pgsty/silo#182, pgsty/silo#188, pgsty/silo#189, pgsty/silo#190, pgsty/silo#191, pgsty/silo#192, pgsty/silo#193, pgsty/silo#194, pgsty/silo#196, pgsty/silo#205, pgsty/silo#206, pgsty/silo#207, pgsty/silo#208, pgsty/silo#209, pgsty/silo#211, pgsty/silo#212, pgsty/silo#213, pgsty/silo#214, pgsty/silo#216, pgsty/silo#234, pgsty/silo#235, pgsty/silo#237, pgsty/silo#238, pgsty/silo#239, pgsty/silo#242, pgsty/silo#243, pgsty/silo#244, pgsty/silo#258, pgsty/silo#267, pgsty/silo#276, pgsty/silo#295
未直接合并的已关闭 PR: pgsty/silo#155, pgsty/silo#195
已关闭 issue: pgsty/silo#22, pgsty/silo#23, pgsty/silo#24, pgsty/silo#25, pgsty/silo#26, pgsty/silo#27, pgsty/silo#28, pgsty/silo#46, pgsty/silo#47, pgsty/silo#48, pgsty/silo#49, pgsty/silo#50, pgsty/silo#52, pgsty/silo#53, pgsty/silo#55, pgsty/silo#63, pgsty/silo#64, pgsty/silo#65, pgsty/silo#67, pgsty/silo#68, pgsty/silo#75, pgsty/silo#76, pgsty/silo#77, pgsty/silo#78, pgsty/silo#82, pgsty/silo#83, pgsty/silo#84, pgsty/silo#99, pgsty/silo#100, pgsty/silo#102, pgsty/silo#105, pgsty/silo#109, pgsty/silo#110, pgsty/silo#111, pgsty/silo#112, pgsty/silo#113, pgsty/silo#114, pgsty/silo#115, pgsty/silo#116, pgsty/silo#117, pgsty/silo#118, pgsty/silo#119, pgsty/silo#120, pgsty/silo#133, pgsty/silo#136, pgsty/silo#137, pgsty/silo#139, pgsty/silo#141, pgsty/silo#144, pgsty/silo#147, pgsty/silo#148, pgsty/silo#158, pgsty/silo#165, pgsty/silo#166, pgsty/silo#167, pgsty/silo#168, pgsty/silo#169, pgsty/silo#170, pgsty/silo#171, pgsty/silo#199, pgsty/silo#200, pgsty/silo#201, pgsty/silo#202, pgsty/silo#203, pgsty/silo#204, pgsty/silo#218, pgsty/silo#246, pgsty/silo#284, pgsty/silo#297, pgsty/silo#298, pgsty/silo#299, pgsty/silo#300, pgsty/silo#301, pgsty/silo#302, pgsty/silo#303, pgsty/silo#304, pgsty/silo#305, pgsty/silo#306, pgsty/silo#307, pgsty/silo#308, pgsty/silo#309, pgsty/silo#310, pgsty/silo#311, pgsty/silo#312, pgsty/silo#313, pgsty/silo#314, pgsty/silo#315, pgsty/silo#316, pgsty/silo#317, pgsty/silo#318, pgsty/silo#319, pgsty/silo#320, pgsty/silo#321, pgsty/silo#322, pgsty/silo#323, pgsty/silo#324, pgsty/silo#325, pgsty/silo#326, pgsty/silo#327
未关闭 issue: pgsty/silo#217
已合并 PR: pgsty/silo-console#9, pgsty/silo-console#10, pgsty/silo-console#11, pgsty/silo-console#38, pgsty/silo-console#39, pgsty/silo-console#40, pgsty/silo-console#41, pgsty/silo-console#42, pgsty/silo-console#43, pgsty/silo-console#44, pgsty/silo-console#45, pgsty/silo-console#46, pgsty/silo-console#47, pgsty/silo-console#48, pgsty/silo-console#49, pgsty/silo-console#50, pgsty/silo-console#51, pgsty/silo-console#53, pgsty/silo-console#54, pgsty/silo-console#55, pgsty/silo-console#56, pgsty/silo-console#57, pgsty/silo-console#58, pgsty/silo-console#59, pgsty/silo-console#60, pgsty/silo-console#61, pgsty/silo-console#62, pgsty/silo-console#64, pgsty/silo-console#65, pgsty/silo-console#66, pgsty/silo-console#67, pgsty/silo-console#68, pgsty/silo-console#69, pgsty/silo-console#71, pgsty/silo-console#74, pgsty/silo-console#79, pgsty/silo-console#80, pgsty/silo-console#81, pgsty/silo-console#82, pgsty/silo-console#84, pgsty/silo-console#85, pgsty/silo-console#86
已关闭 issue: pgsty/silo-console#1, pgsty/silo-console#2, pgsty/silo-console#3, pgsty/silo-console#4, pgsty/silo-console#5, pgsty/silo-console#6, pgsty/silo-console#7, pgsty/silo-console#8, pgsty/silo-console#12, pgsty/silo-console#13, pgsty/silo-console#14, pgsty/silo-console#15, pgsty/silo-console#16, pgsty/silo-console#17, pgsty/silo-console#18, pgsty/silo-console#19, pgsty/silo-console#20, pgsty/silo-console#21, pgsty/silo-console#22, pgsty/silo-console#23, pgsty/silo-console#24, pgsty/silo-console#25, pgsty/silo-console#26, pgsty/silo-console#27, pgsty/silo-console#28, pgsty/silo-console#29, pgsty/silo-console#30, pgsty/silo-console#31, pgsty/silo-console#32, pgsty/silo-console#33, pgsty/silo-console#34, pgsty/silo-console#35, pgsty/silo-console#36, pgsty/silo-console#37, pgsty/silo-console#73, pgsty/silo-console#75, pgsty/silo-console#76, pgsty/silo-console#77, pgsty/silo-console#78
已合并 PR: pgsty/mc#1, pgsty/mc#2, pgsty/mc#3, pgsty/mc#4, pgsty/mc#8, pgsty/mc#9, pgsty/mc#10, pgsty/mc#11, pgsty/mc#13, pgsty/mc#22, pgsty/mc#24, pgsty/mc#27, pgsty/mc#32, pgsty/mc#33, pgsty/mc#34, pgsty/mc#35, pgsty/mc#36, pgsty/mc#37, pgsty/mc#38, pgsty/mc#39, pgsty/mc#40, pgsty/mc#41, pgsty/mc#42, pgsty/mc#43, pgsty/mc#46, pgsty/mc#47, pgsty/mc#55, pgsty/mc#74, pgsty/mc#76, pgsty/mc#77
已关闭 issue: pgsty/mc#5, pgsty/mc#6, pgsty/mc#7, pgsty/mc#12, pgsty/mc#14, pgsty/mc#15, pgsty/mc#16, pgsty/mc#17, pgsty/mc#18, pgsty/mc#19, pgsty/mc#20, pgsty/mc#21, pgsty/mc#23, pgsty/mc#25, pgsty/mc#28, pgsty/mc#29, pgsty/mc#30, pgsty/mc#31, pgsty/mc#50, pgsty/mc#51, pgsty/mc#52, pgsty/mc#53, pgsty/mc#54, pgsty/mc#56, pgsty/mc#57, pgsty/mc#58, pgsty/mc#59, pgsty/mc#60, pgsty/mc#61, pgsty/mc#62, pgsty/mc#63, pgsty/mc#64, pgsty/mc#65, pgsty/mc#66, pgsty/mc#67, pgsty/mc#68, pgsty/mc#69, pgsty/mc#70, pgsty/mc#71, pgsty/mc#72, pgsty/mc#73, pgsty/mc#75
已合并 PR: pgsty/silo-pkg#1, pgsty/silo-pkg#2, pgsty/silo-pkg#3, pgsty/silo-pkg#4, pgsty/silo-pkg#5, pgsty/silo-pkg#6, pgsty/silo-pkg#7, pgsty/silo-pkg#8, pgsty/silo-pkg#9, pgsty/silo-pkg#10, pgsty/silo-pkg#12, pgsty/silo-pkg#14
已关闭 issue: pgsty/silo-pkg#13
已合并 PR: pgsty/kes#1
已合并 PR: pgsty/silo.pgsty.com#2, pgsty/silo.pgsty.com#3, pgsty/silo.pgsty.com#5, pgsty/silo.pgsty.com#6, pgsty/silo.pgsty.com#7, pgsty/silo.pgsty.com#8, pgsty/silo.pgsty.com#9, pgsty/silo.pgsty.com#10, pgsty/silo.pgsty.com#11, pgsty/silo.pgsty.com#13, pgsty/silo.pgsty.com#14, pgsty/silo.pgsty.com#15, pgsty/silo.pgsty.com#16, pgsty/silo.pgsty.com#17, pgsty/silo.pgsty.com#19, pgsty/silo.pgsty.com#20, pgsty/silo.pgsty.com#21, pgsty/silo.pgsty.com#22, pgsty/silo.pgsty.com#23, pgsty/silo.pgsty.com#24, pgsty/silo.pgsty.com#25, pgsty/silo.pgsty.com#26, pgsty/silo.pgsty.com#27, pgsty/silo.pgsty.com#28, pgsty/silo.pgsty.com#29, pgsty/silo.pgsty.com#30, pgsty/silo.pgsty.com#31, pgsty/silo.pgsty.com#32, pgsty/silo.pgsty.com#33, pgsty/silo.pgsty.com#34, pgsty/silo.pgsty.com#35, pgsty/silo.pgsty.com#37, pgsty/silo.pgsty.com#38, pgsty/silo.pgsty.com#39, pgsty/silo.pgsty.com#40, pgsty/silo.pgsty.com#41, pgsty/silo.pgsty.com#42, pgsty/silo.pgsty.com#43, pgsty/silo.pgsty.com#44, pgsty/silo.pgsty.com#45, pgsty/silo.pgsty.com#46, pgsty/silo.pgsty.com#47, pgsty/silo.pgsty.com#48, pgsty/silo.pgsty.com#49, pgsty/silo.pgsty.com#50, pgsty/silo.pgsty.com#51, pgsty/silo.pgsty.com#52, pgsty/silo.pgsty.com#53
未直接合并的已关闭 PR: pgsty/silo.pgsty.com#36
已合并 PR: pgsty/silo#253, pgsty/silo#255, pgsty/silo#257, pgsty/silo#264, pgsty/silo#266, pgsty/silo#269, pgsty/silo#273, pgsty/silo#274, pgsty/silo#275, pgsty/silo#279, pgsty/silo#282, pgsty/silo#286, pgsty/silo#292
待合并 PR: pgsty/silo#294
未直接合并的已关闭 PR: pgsty/silo#245, pgsty/silo#248, pgsty/silo#262, pgsty/silo#290
已关闭 issue: pgsty/silo#252, pgsty/silo#254, pgsty/silo#256, pgsty/silo#261, pgsty/silo#263, pgsty/silo#265, pgsty/silo#268, pgsty/silo#270, pgsty/silo#271, pgsty/silo#272, pgsty/silo#278, pgsty/silo#281, pgsty/silo#285, pgsty/silo#289, pgsty/silo#291
未关闭 issue: pgsty/silo#293
已合并 PR: pgsty/silo-pkg#11
#248 的迁移修复已纳入 60c7179dd,保留原作者与 DCO。 #262 的混合 EC 列举方案由 #267 替代。作者验证原生恢复重构已覆盖报告的问题后,关闭了 #290。
名单来源:SILO CONTRIBUTORS.md · GitHub data. 如有遗漏或描述不准确,欢迎提交 issue 或 PR。
6 - 安全政策
在上游 minio/minio 归档停更后,PGSTY SILO 持续维护对象存储栈的漏洞跟踪与安全补丁。生产环境建议运行 Server 20261026(内嵌 Console v2.5.1,保留 Server 20261018 首次交付的对象锁修复 SN-2026-015 / SN-2026-016 与 IAM 管理边界 SN-2026-017,并包含 Server 20260916 已合入的 SN-2026-011 至 SN-2026-014)、独立版 Console v2.6.0、mcli 20261109 与 silo-pkg v3.16.0;完整升级要求见十月安全公告、安全公告台账与组件版本矩阵。
注意:单独部署独立版 Console 不会替换旧版 Server 内嵌的控制台,且内置策略 Reset、实时存储桶列表刷新及存储桶配额校验修复需配合相应的 Server 或独立版 Console 版本(详见 Console 2.5.1 与 Console 2.6.0 发布说明)。
报告安全漏洞
请通过私密渠道报告尚未公开披露的安全漏洞,不要直接提交公开 Issue:
- SILO Server、Console、
mcli与silo-pkg:通过pgsty/siloGitHub Security Advisories 提交私密报告。 - 文档站点(
silo.pgsty.com):在pgsty/silo.pgsty.com提交 Issue;若内容涉及可利用的安全弱点,请改用上述私密渠道。
报告请附上受影响的组件版本、复现步骤与影响范围。SILO 是开源社区项目,按尽最大努力原则响应与修复,不提供商业 SLA 承诺。
上游 MinIO 相关漏洞
SILO 派生自 minio/minio,继承代码中的缺陷通常同时影响两者。由于上游仓库已归档且不再接收报告,请直接向 SILO 提交;涉及其他活跃分支的共性漏洞,我们会按需协调披露。
安全修复发布渠道
- 安全公告台账:全部
CVE-*与SN-2026-*编号、修复提交、影响范围及依赖安全更新的统一索引。 - 安全公告专栏:各漏洞的触发条件、根因分析、修复方案与升级验证指南。
- 发布说明:Server、Console、
mcli与silo-pkg各正式版本的发行记录。
部署安全加固
参见
7 - 安全公告台账
本台账汇总 pgsty/silo 软件栈的全部安全修复与影响升级边界的安全变更。每条经过深度排查的公告均链接至安全编年史或设计笔记中的完整技术文章;本页作为编号、修复提交、暴露条件与升级边界的统一权威索引。
已有公开 CVE 编号的漏洞直接使用 CVE 标识。由于上游 minio/minio 已归档,不再为继承代码中的新发现分配 CVE,无 CVE 的安全问题统一分配稳定的 SN-<年份>-<序号> 编号(SN-2026-002 至 SN-2026-019),便于发布说明、提交记录与 Issue 稳定引用。SN-2026-001 为 trackingResponseWriter 流式刷新可靠性回归(非安全问题,见 Server 20260804 发布说明)。
当前发布边界
当前生产推荐基线为 Server 20261026(内嵌 Console v2.5.1 与 silo-pkg v3.15.2)、独立版 Console v2.6.0、mcli 20261109 与 silo-pkg v3.16.0,均使用 Go 1.27.3;可选的外部密钥服务为 KES 20261026。当前版本保留以下历史安全修复,并纳入依赖安全更新。各问题首次修复的版本如下:
- Server 20261018 修复了 SN-2026-015(
PutObjectRetention治理保留期授权绕过)、SN-2026-016(指定版本与原地写入覆写对象锁)以及 SN-2026-017(委派 IAM Admin 凭据授权边界),并新增按主体/按令牌范围吊销 STS 会话的能力(0cd388c66)。Server 20260916 及更早版本仍受SN-2026-015至SN-2026-017影响;请将修复部署至每一个接受写入的 Server 节点与复制站点。详见十月安全公告与组件版本矩阵。 - Server 20260916 与 Console v2.4.1 包含 SN-2026-011 至 SN-2026-014 的修复(Server 20260903 不包含)。
- Server 20260903 包含 SN-2026-006 至 SN-2026-010 的修复。
- Server 20260804 与 silo-pkg v3.11.0 / v3.12.0 包含 SN-2026-002 至 SN-2026-005、SN-2026-018 及 SN-2026-019 的修复。
继承自上游的公告基线
SILO 首个社区版本(RELEASE.2025-12-03T12-00-00Z)切自已包含 CVE-2025-62506 修复的上游源码历史。
| 编号 | 上游修复 | SILO 继承提交 | 摘要与发布说明 |
|---|---|---|---|
CVE-2025-62506 |
minio/minio#21642,合入提交 c1a49490 |
pgsty/silo@c1a49490 |
在评估受限会话策略(sub-policy)前重置 DenyOnly 标志,防止受限服务账号或 STS 会话派生出继承父级全量权限的不受限子服务账号。上游最早于 RELEASE.2025-10-15T17-29-55Z 修复;SILO 自 RELEASE.2025-12-03T12-00-00Z 起的所有版本均已包含。从更早期上游版本迁移的管理员在升级后应审计由受限服务账号或 STS 身份创建的子服务账号。见编年史文章。 |
CVE-2026-32285 |
同一上游提交 c1a49490(pgsty/silo#26) |
已包含(buger/jsonparser v1.1.2) |
外部漏洞源将 CVE-2025-62506 的会话策略修复提交(c1a49490)误标为 buger/jsonparser 漏洞;SILO go.mod 已选用包含修复的 v1.1.2,且 govulncheck 确认不存在可达漏洞符号,无需修改代码。见研判记录。 |
自 RELEASE.2026-03-21T00-00-00Z 以来的安全公告
| 编号 | 修复提交 | 受影响模块 | 编年史 / 发布说明 |
|---|---|---|---|
CVE-2026-33322 |
d24f449e0 |
OIDC STS(AssumeRoleWithWebIdentity、AssumeRoleWithClientGrants) |
编年史 |
CVE-2026-33419 |
3b950f8fa 及后续提交 |
LDAP STS 认证与并发限流 | 编年史 |
CVE-2026-34204 |
56fa63bfd |
复制元数据请求头清洗 | 编年史 |
CVE-2026-39414 |
3252d5b7f、5dc705936 |
S3 Select 超大 CSV 与 JSON Lines 记录处理 | 编年史 |
CVE-2026-41145 |
f444b6f37 |
STREAMING-UNSIGNED-PAYLOAD-TRAILER 预签名查询参数认证 |
编年史 |
CVE-2026-40344 |
efb6e5b00 |
Snowball PutObjectExtract 无签名尾标流式认证 |
编年史 |
CVE-2026-42600 |
73ac52472(73ac5244d) |
节点间 ReadMultiple(/rmpl)路径穿越 |
编年史 |
SN-2026-002 |
ca7baa670 .. a36fd8fff |
节点间 RPC、peerREST 与 xlStorage 路径及内存边界收口 |
编年史 |
SN-2026-003 |
silo-pkg v3.11.0、2f55347f7、7a8fa5bc2、eb74f7e40 |
S3 策略条件值来源(s3:VersionId、对象标签、signatureAge) |
编年史 |
SN-2026-004 |
silo-pkg v3.11.0(d8b1fa7)、97b7d2804 |
禁止纯对象级授权(arn:aws:s3:::bucket/*)越界执行桶级写操作 |
编年史 |
SN-2026-005 |
silo-pkg v3.12.0(2b087a1)、eee05a17c |
策略写入路径拒绝空资源裸 ARN 前缀(arn:aws:s3:::) |
编年史 · pkg v3.12.0 |
SN-2026-006 |
b73581b05、c4fd97d0b、e2b0cf32f(#82) |
零字节 SSE-C 对象读取与复制密钥校验 | 编年史 |
SN-2026-007 |
474cd5801、74c97d005、21870fa2e、e2b0cf32f(#84) |
SSE-C 对象 GetObjectAttributes 密钥校验 |
编年史 |
SN-2026-008 |
938603458 .. 04b097fd9 |
内部复制请求头(X-Minio-Source-*)鉴权后信任边界 |
编年史 · 设计 |
SN-2026-009 |
58735ee38、229fe2b3c、0c8b02344、4dbeb15d8 |
用户与组启用/禁用按目标状态分别鉴权 | 编年史 · 设计 |
SN-2026-010 |
75a6734e4 .. d2d47a41f、04b097fd9(#58) |
显式对象版本删除强制要求 s3:DeleteObjectVersion |
编年史 · 发布说明 |
SN-2026-011 |
123325430、#173、#177 |
SigV4 SignedHeaders 全量 X-Amz- 请求头覆盖校验 |
编年史 · 设计 |
SN-2026-012 |
c4b5e1cb4、#177 |
仅通过请求头携带哈希时的预签名载荷 SHA-256 校验 | 编年史 |
SN-2026-013 |
f99ed829b、0cd388c66 |
持久化 IAM 吊销注册表与按范围 STS 吊销 | 编年史 · 设计 |
SN-2026-014 |
silo-console#56、#209 |
Console 匿名分享下载代理路径收紧 | 编年史 · Console v2.4.1 |
SN-2026-015 |
14042b5aa、#234、#235 |
PutObjectRetention 鉴权与治理保留期绕过修复 |
编年史 · 设计 |
SN-2026-016 |
14042b5aa、0d3ba5d4c |
指定版本与原地写入的对象锁覆写拦截 | 编年史 · 设计 |
SN-2026-017 |
2616d43fb、995439260、#242 |
委派 IAM Admin 凭据与策略包含性授权边界 | 编年史 · 设计 |
SN-2026-018 |
fe6dc4780 |
转发客户端源地址信任边界(MINIO_API_TRUSTED_PROXIES) |
编年史 |
SN-2026-019 |
672c07a0f、f1ba68358 |
通知配置键注册与 config.HasSensitiveKeys 敏感凭据脱敏 |
编年史 · 设计 |
暴露条件与升级指引
CVE-2025-62506 — 会话策略权限提升
支持远程利用(需持有附加了内联会话策略的服务账号或 STS 临时凭据)。上游在 c1a49490(RELEASE.2025-10-15T17-29-55Z)中修复了评估子策略时的 DenyOnly 重置遗漏;SILO 自首个版本 RELEASE.2025-12-03T12-00-00Z 起已继承该修复。从更旧上游版本迁移的集群应升级并审计曾由受限父会话创建的子服务账号。详见 CVE-2025-62506 公告。
CVE-2026-32285 — 误标为 jsonparser 的重复公告
公开漏洞源将 CVE-2026-32285 描述为 buger/jsonparser 漏洞,但其引用的上游修复提交(c1a49490)实为修复会话策略提权的 CVE-2025-62506。SILO 已选用 github.com/buger/jsonparser v1.1.2,且 govulncheck 确认无可达漏洞符号。详见 CVE-2026-32285 研判记录。
CVE-2026-33322 — OIDC JWT 算法混淆
支持远程利用(前提为启用了 OIDC AssumeRoleWithWebIdentity 或 AssumeRoleWithClientGrants,且攻击者获知或猜中 client_secret 以伪造 HS256/HS384/HS512 令牌)。提交 d24f449e0 将 JWT 验签严格绑定至身份提供方的非对称 JWKS 公钥集,并从 token.Parse 中移除了 client_secret 对称 HMAC 回退。依赖对称 HMAC 签名 id_token 的非标准部署需在升级前将 IdP 切换为非对称签名算法(如 RS256、ES256)。
CVE-2026-33419 — LDAP STS 枚举与拒绝服务
支持远程利用(启用 AssumeRoleWithLDAPIdentity 时)。修复后认证失败统一返回 400 InvalidParameterValue,不再泄露底层目录错误;通过预留/提交/取消/退还(reserve/commit/cancel/refund)生命周期限制并发 LDAP bind 数量;并在 RELEASE.2026-06-18 中移除了按用户名共享的限流桶(此前攻击者只要知道受害者的 LDAPUsername,即可从轮换 IP 发送错误密码长期锁死该用户)。详见 LDAP STS 编年史。
CVE-2026-34204 — 复制元数据注入
支持远程利用。阻止普通客户端在 PutObject 或 CopyObject 请求中夹带未授权的 X-Minio-Replication-* 请求头写入内部复制元数据(此前会导致对象无法读取)。任何接受非授信写入的生产服务端均应升级。后续对复制请求头边界的完整收口见 SN-2026-008 与副本元数据规范化设计。
CVE-2026-39414 — S3 Select 超大记录内存耗尽
支持远程利用(需 s3:SelectObjectContent 权限)。对超过 1 MiB(maxCharsPerRecord)的 CSV 与 JSON Lines 单条记录返回 OverMaxRecordSize,防止无界读入耗尽节点内存。四月补丁(3252d5b7f)收口了 CSV 与标准 JSON 读取器;六月后续补丁(5dc705936)在支持 AVX2/AVX-512 的 CPU 上同样将 JSON Lines 路由至有界 json.PReader(停用无行长上限的 simdj.NewReader),堵住了硬件相关的 SIMD 绕过路径。详见 S3 Select 编年史。
CVE-2026-41145 — 无签名尾标流式请求查询参数认证绕过
支持远程利用。修复了在 PutObject 或 PutObjectPart 请求中同时使用 X-Amz-Content-Sha256: STREAMING-UNSIGNED-PAYLOAD-TRAILER 与 URL 查询参数 SigV4 凭据时的认证绕过漏洞。
CVE-2026-40344 — Snowball 自动解包无签名尾标认证绕过
支持远程利用。在 newUnsignedV4ChunkedReader() 构造阶段即完成 SigV4 认证校验,确保 PutObjectExtract(Snowball 批量归档上传)在未通过认证前绝不向 untar() 解包器提供任何字节。
CVE-2026-42600 — 节点间 ReadMultiple 路径穿越
支持远程利用(需持有集群内部 JWT)。直接删除了未使用的 /rmpl(xlStorage.ReadMultiple)内部 RPC 端点,消除通过 msgpack 请求体逃逸磁盘根目录读取任意文件的路径。单节点部署不注册该路由;分布式纠删码集群应升级。
SN-2026-002 — 节点间载荷路径与内存边界收口
支持远程利用(需持有集群内部 JWT)。作为 CVE-2026-42600 的全面后续排查,覆盖其余全部节点间协议面(storageREST、peerREST、grid WebSocket 帧与 xlStorage):在存储层两处必经收口点(getVolDir/NSScanner 与 getStorage() 的 guardPaths、hasBadPathComponent、isVolumeRootAlias)拦截卷名与路径穿越,为调用方声明的切片分配加上硬上限(maxDeleteVersions = 1000 及 BitrotVerifier 上限),在除法前校验纠删码 DataBlocks/ParityBlocks 防止单帧除零崩溃,并在返回前核对分片实际长度。单节点部署不注册相关路由,S3 API 外部行为不变。详见节点间路径收口编年史。
SN-2026-003 — S3 策略条件值来源隔离
支持远程利用(取决于策略配置)。禁止客户端通过同名查询参数或请求头覆盖或伪造服务端内部条件键;将 s3:signatureAge 严格限制在经验证的 SigV4 预签名请求中;分离仅限查询参数的列表条件键与基于请求头的 x-amz-* 条件键;禁止请求标签冒充已存储对象的 ExistingObjectTag;并确保仅当请求显式携带 ?versionId 时才按去除首尾空白后的实际版本评估 s3:VersionId。详见 SN-2026-003 编年史与策略条件值来源文档。
SN-2026-004 — 桶级写操作与纯对象级授权隔离
支持远程利用(取决于策略配置)。禁止纯对象级资源通配模式(arn:aws:s3:::bucket/*)越界匹配 12 项敏感桶级写操作:PutBucketPolicy、DeleteBucketPolicy、PutBucketObjectLockConfiguration、PutBucketVersioning、PutReplicationConfiguration、PutBucketLifecycle、DeleteBucket、ForceDeleteBucket、PutBucketCors、DeleteBucketCors、PutBucketQOS 与 PutInventoryConfiguration,并要求同一条 Allow 语句同时匹配操作与资源(单调交集语义)。若您编写了自定义桶级 IAM 策略,升级前请阅读 SN-2026-004 编年史: 确需授予上述 12 项桶级写操作的语句,需在 arn:aws:s3:::bucket/* 旁显式加上桶 ARN(arn:aws:s3:::bucket)。内置预设策略、Deny 语句与 NotResource 均不受影响。在进程启动环境变量中设置 MINIO_API_LEGACY_BUCKET_RESOURCE_MATCH=on 可恢复旧版匹配行为(该开关在包初始化阶段读取,仅写入 MINIO_CONFIG_ENV_FILE 不会生效)。
SN-2026-005 — 策略写入拒绝空资源裸 ARN 前缀
策略收紧变更(silo-pkg v3.12.0 / Server eee05a17c)。在创建命名策略以及创建/更新服务账号会话策略时,拒绝 Resource 与 NotResource 中不包含任何资源名的 S3、S3 Tables 与 KMS 裸 ARN 命名空间前缀(如 arn:aws:s3::: 及其历史序列化形式 *arn:aws:s3:::)。已持久化的存量策略继续正常加载、匹配、导入与复制;但重新提交包含裸前缀的策略时,必须替换为具体桶/对象 ARN 或显式全通配符(arn:aws:s3:::*)。注意区分无资源的“裸 ARN 前缀”(arn:aws:s3:::)与 SN-2026-004 中合法的“裸桶 ARN”(arn:aws:s3:::bucket)。详见 SN-2026-003 / SN-2026-005 编年史与 silo-pkg v3.12.0 发布说明。
SN-2026-006 — 零字节 SSE-C 对象密钥认证
支持远程利用(需具备目标对象读取权限)。零字节 SSE-C 对象此前未执行客户端密钥解封校验,导致提供错误 SSE-C 密钥的请求也能收到 200 OK,或以攻击者自选的新密钥复制/覆盖该对象。修复后,零字节 SSE-C 读取与复制均强制解封验证客户密钥,密钥错误时与 AWS S3 一致返回 403 AccessDenied。已随 Server 20260903 发布。
SN-2026-007 — SSE-C 对象 GetObjectAttributes 密钥校验
支持远程利用(需具备目标对象读取权限)。GetObjectAttributes 此前未校验 SSE-C 客户密钥即可返回对象属性,且客户端只要附带 X-Minio-Source-Replication-Request 请求头即可直接跳过检查。修复后,错误密钥返回 403 AccessDenied,未授权复制标记返回 400 InvalidArgument;持有 s3:ReplicateObject 权限的复制对端不受影响。已随 Server 20260903 发布。
SN-2026-008 — 内部复制请求头鉴权后信任边界
支持远程利用(任意具备对象读写权限的已认证主体)。完成 CVE-2026-34204 的后续收口:此前多个处理器仅凭请求头存在即信任 X-Minio-Source-Etag、X-Minio-Source-Mtime、X-Minio-Source-Replication-Request、X-Minio-Source-DeleteMarker、复制 SSE 密钥头及 X-Amz-Bucket-Replication-Status。Server 20260903 在验签通过后构造的请求克隆上统一剥离这些内部请求头,仅当请求携带精确标记值且调用方通过 s3:ReplicateObject 或 s3:ReplicateDelete 鉴权时才予保留。站点复制服务账号与持有复制权限的桶复制目标不受影响。详见九月安全公告与 CORS 及复制信任设计。
SN-2026-009 — 用户与组状态变更按目标状态鉴权
支持远程利用(已认证 Admin API)。SetUserStatus 与 UpdateGroupStatus 此前无论目标状态是启用还是禁用,一律只检查 admin:EnableUser 与 admin:EnableGroup,导致仅获授启用权限的操作员也能禁用账户(反之亦然)。修复后按请求的目标状态分别检查 admin:EnableUser / admin:DisableUser 与 admin:EnableGroup / admin:DisableGroup。持有 admin:* 或内置 consoleAdmin 策略的管理员不受影响;仅授予单向权限的最小权限策略将严格限制在对应方向。详见九月安全公告与用户状态权限设计。
SN-2026-010 — 显式对象版本删除强制要求 s3:DeleteObjectVersion
支持远程利用(已认证 S3 API)。携带 versionId 的 DeleteObject 与 DeleteObjects 请求此前按 s3:DeleteObject 鉴权(仅检查是否显式 Deny s3:DeleteObjectVersion),与 AWS S3 规范不符。修复后显式删除指定版本必须持有 s3:DeleteObjectVersion。两项策略影响: 仅持有 s3:DeleteObject 的主体仍可发起不带版本的删除(创建删除标记),但不能再永久删除指定版本;原先依赖 Allow s3:* 配合 Deny s3:DeleteObject 来阻止永久删除版本的策略,必须同步加上 Deny s3:DeleteObjectVersion。复制目标保持 s3:ReplicateDelete 契约不变。详见显式版本删除鉴权说明。
SN-2026-011 — 未签名 X-Amz-* 操作请求头拦截
支持远程利用(持有预签名 PUT URL 或截获普通签名 PUT 请求的攻击者)。由于 cmd/api-router.go 在检测到 x-amz-copy-source 请求头时会将 PUT 请求优先路由至 CopyObjectHandler,持有预签名 PUT URL 的攻击者无需知道签名密钥,即可追加未签名的 x-amz-copy-source: /src/secret,诱使服务端以签名者的读取权限将源对象复制到目标路径。若目标路径可读,私有对象内容即遭泄露。由 Oren Yomtov 报告。
已随 Server 20260916(状态公告、123325430、PR #173、#177)修复。普通 SigV4 与预签名验证路径现在统一调用 checkUnsignedHeaders,拒绝任何携带未签名 X-Amz-* 请求头的请求(返回 400 AccessDenied / ErrUnsignedHeaders)。X-Amz-Content-Sha256 是唯一豁免列入 SignedHeaders 的请求头,其有效值已由规范请求单独绑定并由 SN-2026-012 校验;PR #177 同时移除了内部合成的 X-Amz-Signature-Age 请求头,直接从已签名的 X-Amz-Date 无状态推导签名年龄。标准 AWS SDK、mcli 与 minio-go 无需改动;自定义客户端若在发送预签名请求时附带 X-Amz-* 请求头,必须在生成预签名 URL 时将其纳入 X-Amz-SignedHeaders。详见签名头覆盖设计。
SN-2026-012 — 仅通过请求头携带哈希的预签名载荷校验
支持远程利用(持有通过 X-Amz-Content-Sha256 请求头绑定载荷哈希的预签名 URL)。PutBucketPolicy 等通用认证处理器此前在预签名验签时使用了请求头中的 SHA-256 值,但在消费请求体时未核对该哈希,使预签名 URL 持有者可在保持签名有效的前提下篡改请求体。提交 c4b5e1cb4(随 Server 20260916 发布)使通用请求体校验与验签阶段使用完全一致的有效载荷哈希(优先取查询参数,其次回退至请求头),篡改绑定了校验和的请求体将返回 XAmzContentSHA256Mismatch。
SN-2026-013 — 持久化 IAM 吊销与按范围 STS 吊销
需持有曾有效签发的凭据并结合节点重启、跨站同步延迟或同名父账户重建场景。在 Server 20260916(#191、#192、f99ed829b)之前,禁用/删除用户、轮换密钥或重建同名父用户后,此前签发的 STS 令牌或子服务账号可能在 JWT 过期前继续有效,或被延迟到达的旧站点复制状态重新激活。Server 20260916 在 .minio.sys/iam/revocations/ 下持久化删除墓碑、父身份吊销边界与组授权版本;Server 20261018(0cd388c66)进一步提供 POST /minio/admin/v3/sts-revoke,支持按主体或单令牌(jti)精确吊销 STS 会话而不影响其他会话。共享同一 IAM 后端的所有节点与站点需协调升级;详见 IAM 吊销设计与 IAM 升级手册。
SN-2026-014 — Console 匿名分享下载代理路径收紧
支持远程利用(匿名访问 Console /api/v1/download-shared-object 接口)。Console 公开分享下载代理此前可转发配置源站上的任意非对象路径,使未登录调用者能够跨越 Console 网络边界访问原本隔离在后端的公开指标等端点(如 /minio/v2/metrics/cluster)。由 Jiri Pejchal(@jiri-pejchal)报告。已在 Console v2.4.1(silo-console#56)及内嵌该版本的 Server 20260916(#209)中修复:代理仅允许向源站发起单对象内容 GET 请求,在发起连接前拒绝 /minio/* 系统路径与非下载类子资源查询参数,并拒绝一切 HTTP 重定向。
SN-2026-015 — PutObjectRetention 鉴权与治理保留期绕过
支持远程利用(已认证 S3 调用方)。PutObjectRetentionHandler(cmd/object-handlers.go)中的三处缺陷使已认证调用方能够:(1) 在未持有 s3:PutObjectRetention 权限时,仅凭 s3:BypassGovernanceRetention 并附带 X-Amz-Bypass-Governance-Retention: true 请求头短路基础动作鉴权并修改对象保留期;(2) 仅凭 s3:PutObjectRetention(无 s3:BypassGovernanceRetention)通过提交空模式(Mode: "")清空或缩短处于有效期的 GOVERNANCE 锁;(3) 在清空保留期时绕过针对 s3:object-lock-remaining-retention-days 的 IAM Deny 策略。已在 Server 20261018(PR #234、#235、14042b5aa)中修复:在读取对象前无条件强制校验 s3:PutObjectRetention;缩短、清空或降级有效 GOVERNANCE 锁必须同时携带 X-Amz-Bypass-Governance-Retention: true 并通过 s3:BypassGovernanceRetention 鉴权;清空保留期时将剩余天数按 0 注入策略上下文。详见 SN-2026-015 / SN-2026-016 安全公告与修复架构设计。
SN-2026-016 — 指定版本与原地写入的对象锁覆写
支持远程利用(已认证 S3 写入方)。调用方在 PutObject、CopyObject、CompleteMultipartUpload 或 PutObjectExtract 请求中显式传入 ?versionId=<已有版本 UUID>,或在未启用版本控制/挂起版本控制的桶上原地覆写 null 版本对象(含目录对象与分段上传完成路径)时,可绕过对象锁检查直接覆写受 COMPLIANCE、GOVERNANCE 保留期或 LegalHold 保护的对象版本。已在 Server 20261018(14042b5aa、0d3ba5d4c)中修复:S3 入口拒绝任何非授权复制请求(!isReplicationRequest)显式指定目标 versionId;预检读取元数据失败时采取 Fail-Closed 拒绝;存储层写入路径(PutObject、CopyObject、CompleteMultipartUpload、PutObjectDir)在持有命名空间写锁后再次复检目标版本的对象锁状态(checkObjectLockForOverwrite)。请升级所有接受写入的 Server 节点与复制站点。详见修复架构设计。
SN-2026-017 — 委派 IAM Admin 凭据授权边界
支持远程利用(已认证的委派 IAM 管理员或受限派生凭据)。在 Server 20260916 及更早版本中,持有 admin:CreateUser、admin:AttachUserOrGroupPolicy 或 admin:UpdateServiceAccount 等权限的非 root 管理员可以分配超出自身有效权限范围的策略、修改更高权限的用户/组/服务账号,或通过自助管理路由逃逸会话策略与显式 Deny 限制。已在 Server 20261018(2616d43fb、995439260、PR #242)中修复:委派 IAM 写操作全面执行目标策略包含性校验(authorizePolicyChange、authorizeGroupTargets、authorizeTargetUser),并拦截非 root 主体对自身权限的变更(ErrAdminChangeUserSelfPermission)。详见委派 IAM 管理授权设计。
SN-2026-018 — 客户端源地址信任边界(MINIO_API_TRUSTED_PROXIES)
转发头信任策略
可选启用的安全加固(fe6dc4780,随 Server 20260804 发布)。继承自上游的默认实现无条件信任任意直连对端发来的 X-Forwarded-For 与 X-Real-IP 请求头,导致可直连 Server(或经由追加式反向代理访问)的客户端能够伪造 aws:SourceIp IAM 条件值并绕过按 IP 计数的 LDAP 限流。MINIO_API_TRUSTED_PROXIES 提供了可强制执行的代理信任边界:设为 none 时完全忽略转发头,仅使用 TCP 对端地址;设为逗号分隔的代理 IP 或 CIDR 列表时,仅信任来自白名单对端(及本机 loopback sidecar)的转发头,并从右向左跳过可信跳数提取首个非可信客户端 IP。启用该变量的多节点集群必须将集群自身节点 IP/CIDR 一并列入白名单,以便节点间转发请求保留原始客户端 IP。详见来源地址信任编年史与核心配置参考。
SN-2026-019 — 通知配置键注册与敏感凭据脱敏
配置子系统加固(672c07a0f 随 Server 20260804 发布,后续 f1ba68358 随 Server 20260903 发布)。对 notify_postgres 与 notify_mysql 的审计发现,config.HasSensitiveKeys 未将 password、dsn_string 与 connection_string 标记为敏感字段(导致配置校验报错或 GetConfigKV 可能回显明文凭据),且 5 个离散连接参数未注册进 Keyspace。提交 672c07a0f 补齐了 config.HasSensitiveKeys 凭据脱敏与跨子系统键注册结构化测试;Server 20260903 随后退役了 5 个离散字段并统一收敛至 connection_string 与 dsn_string,消除了两套配置表示在启动迁移时的静默覆盖隐患。详见通知键空间编年史与数据库通知连接串设计。
依赖安全更新
Server 20261018 使用 Go 1.27.2 构建,并升级至 golang.org/x/net v0.61.0、golang.org/x/crypto v0.58.0、golang.org/x/text v0.43.0 与 github.com/go-jose/go-jose/v4 v4.1.6(注意 go-jose RSA JWK 解析修复同时拒绝大于 4096 位的 RSA 密钥,升级前请核验 OIDC/JWKS 身份提供方密钥长度)。全栈 Go 1.27.3 与静态 curl 8.23.0 维护记录见 SILO 20261026。
| 公告 / 范围 | 修复提交 | 摘要 |
|---|---|---|
CVE-2026-39883 |
1869bd30b、e4fa06394 |
更新 OpenTelemetry 依赖(RELEASE.2026-03-21)。 |
| 2026-03-25 发布 | RELEASE.2026-03-25 |
更新 OTel SDK、Paho MQTT 与 x/crypto,涵盖 CVE-2026-24051、CVE-2025-10543 与 CVE-2025-58181。 |
CVE-2026-34986 |
68e0ba997 |
升级 go-jose 至 v4.1.4。 |
| Go 1.26.2 标准库 | db4c0fd5e |
修复 CVE-2026-32280、CVE-2026-32281(crypto/x509)与 CVE-2026-32283(crypto/tls)。 |
| Go 1.26.4 与依赖刷新 | df627ff89、3e61b1d3a |
修复 CVE-2026-32952(Azure NTLM)、CVE-2026-41602(Thrift)并更新 NATS/Prometheus 依赖(RELEASE.2026-06-18)。 |
| Go 1.26.5 标准库 | Go 1.26.5(Server 20260806) | 修复 crypto/tls 与 os 中的 GO-2026-4946、GO-2026-4947、GO-2026-4948。 |
| GO-2026-6061 / GHSA-hrxh-6v49-42gf | 4dfc27ce3 |
升级 gRPC 至 v1.82.1(修复 xDS RBAC 引擎与 HTTP/2 传输层问题)及 golang.org/x/text 至 v0.39.0(GO-2026-5970 / CVE-2026-56852)。 |
| GO-2026-5841 | c1aec0518 |
升级 github.com/klauspost/compress 至 v1.18.7。 |
| Go 1.27.1 与九月依赖刷新 | Go 1.27.1 经 43f4bb7ed、edc8be6ed、4d6e1ea8e |
迁移至 Go 1.27.1,更新 etcd 客户端(v3.7.1)、jwx(v3.0.13)与 klauspost/compress(v1.19.2),并回归上游 minio-go v7.3.1(Server 20260903)。 |
| GO-2026-6354 / GO-2026-6355 | edf36bcbf |
升级 golang.org/x/crypto 至 v0.56.0,修复通过 SFTP/SSH 通道死锁触发的拒绝服务(startSFTPServer → sftp.Server.Listen → ssh.NewServerConn)。 |
| CVE-2026-84304 | gRPC v1.83.1 |
修复 gRPC-Go 在高分片 HTTP/2 DATA 帧下的未认证堆内存耗尽问题。 |
| CVE-2026-79921 / GHSA-6c5v-hqjr-5xxp | d63c92e39(Server 20260916) |
升级 amqp091-go 至 v1.14.0,防止恶意 AMQP broker 发送超大帧耗尽客户端内存。 |
| Go 1.27.2 与十月依赖刷新 | 0cd388c66(Server 20261018) |
升级至 Go 1.27.2、x/net v0.61.0、x/crypto v0.58.0、x/text v0.43.0 与 go-jose/v4 v4.1.6(GHSA-mgcc-cww5-fp2q)。 |
运维相关的安全修复
| 变更 | 修复提交 | 摘要 |
|---|---|---|
| 复制 Object Lock 更新时间戳顺序 | f4c1286c9(Server 20260903) |
复制 CopyObject 此前在比较复制时间戳前就从请求重建元数据,且将法务保留(legal-hold)时间戳误写入保留期键下,导致乱序到达的旧副本事件可能关闭更新的法务保留或缩短保留期。修复后先读取磁盘已有状态,仅当副本时间戳更新时才应用变更,并将两类时间戳分别存储在各自键下。见对象锁复制顺序设计。 |
ldaps:// TLS 配置传递回归 |
ce1c537eb(RELEASE.2026-03-25) |
恢复 ldaps:// DialURL() 连接的 TLS 配置传递,使 MINIO_IDENTITY_LDAP_TLS_SKIP_VERIFY 与自定义根 CA 重新生效。 |
| 签名字段与策略输入对齐 | #177、87d8b5967(Server 20260916) |
拒绝有歧义的重复 x-amz-copy-source 值,从已签名 X-Amz-Date 无状态推导 s3:signatureAge,并将 s3:x-amz-content-sha256 策略条件绑定至经验证的载荷哈希。 |
跨存储池条件 PUT 与 DELETE |
#207、5e7d60308(Server 20260916) |
在共享跨池锁下针对当前权威逻辑对象评估写入与删除前置条件(If-Match、If-None-Match),防止旧存储池中的陈旧副本越权放行覆盖写入。见多存储池对象一致性设计。 |
台账归属
本页由原 pgsty/silo 安全台账(docs/security/advisories.md,更新至 f99ed829b5eba / 40220bd836cb)维护演进而来,发布状态与组件版本矩阵保持同步。各漏洞的排查链路、被否决方案对比与验证命令见对应的安全编年史与设计笔记文章。