跳转到主要内容

PGSTY SILO 博客

  • CopyObject Checksum 必须覆盖逻辑对象字节

    发布于 设计

    设计S3兼容性Checksum

    本文是 SILO #63 的设计与验证归档。 状态: checksum 数据域修复已通过 PR #66 合并;公开发布待完成。 相关修复: metadata-only transform state #67 已通过 PR #69 合并,CopyObjectResult checksum 字段 #68 已通过 PR #70 合并;公开发布仍待完成。 上游客户端: minio-go #2295。 发布边界: 合并不代表公开 release、软件包或容器镜像已经包含修复。 缺陷本质 …

    本文是 SILO #63 的设计与验证归档。 状态: checksum 数据域修复已通过 PR #66 合并;公开发布待完成。 相关修复: metadata-only transform state #67 已通过 PR #69 合并,CopyObjectResult checksum 字段 #68 已通过 PR #70 合并;公开发布仍待完成。 上游客户端: minio-go #2295。 发布边界: 合并不代表公开 release、软件包或容器镜像已经包含修复。 缺陷本质 …

  • 总量未知时,进度条应该说什么

    发布于 设计

    设计console下载

    状态:已在本地实现并验证;提交、Console 发布与 Silo 依赖更新待办 · 优先级:P1 · 归属:pgsty/silo-console · 关联问题:pgsty/silo#62 · PRD 复核:Claude Fable 5(xhigh)— APPROVE · 实现复核:Claude Fable 5(xhigh),2026-08-23 — APPROVE,无 P0/P1/P2 发现 SILO Console 下载文件夹时,Downloads / Uploads 面板会显示 …

    状态:已在本地实现并验证;提交、Console 发布与 Silo 依赖更新待办 · 优先级:P1 · 归属:pgsty/silo-console · 关联问题:pgsty/silo#62 · PRD 复核:Claude Fable 5(xhigh)— APPROVE · 实现复核:Claude Fable 5(xhigh),2026-08-23 — APPROVE,无 P0/P1/P2 发现 SILO Console 下载文件夹时,Downloads / Uploads 面板会显示 …

  • 数据库通知统一连接串:#53 的兼容性边界

    发布于 设计

    设计通知兼容性

    本文是 SILO #53 的产品需求文档与设计决策归档,用来在实现开始前固定 PostgreSQL/MySQL 桶通知目标的最终兼容性边界。 最终决策 SILO 保留 PostgreSQL 与 MySQL notification target,但每种数据库只支持一种当前配置方式: PostgreSQL 必须提供完整的 connection_string; MySQL 必须提供完整的 dsn_string。 旧的五字段形式 …

    本文是 SILO #53 的产品需求文档与设计决策归档,用来在实现开始前固定 PostgreSQL/MySQL 桶通知目标的最终兼容性边界。 最终决策 SILO 保留 PostgreSQL 与 MySQL notification target,但每种数据库只支持一种当前配置方式: PostgreSQL 必须提供完整的 connection_string; MySQL 必须提供完整的 dsn_string。 旧的五字段形式 …

  • 只预览文本,绝不执行:SILO Console 文本预览 PRD

    发布于 设计

    设计console预览安全

    状态: 设计已接受,实现待完成 · 归属: pgsty/silo-console · 跟踪: pgsty/silo#17 · 审阅: 产品、安全与前端架构三方共识 SILO Console 可以预览图片、PDF、音频和视频,却不能直接查看运维中最常见的小型日志、纯文本、JSON 与 XML。即使对象保存了完全正确的 Content-Type,前端也会在选择渲染器之前把它判为不支持。 恢复旧版浏览器原生预览很容易,却不是正确修复。对象内容由上传者控制;如果把它作为同源 HTML/XML 文档加载 …

    状态: 设计已接受,实现待完成 · 归属: pgsty/silo-console · 跟踪: pgsty/silo#17 · 审阅: 产品、安全与前端架构三方共识 SILO Console 可以预览图片、PDF、音频和视频,却不能直接查看运维中最常见的小型日志、纯文本、JSON 与 XML。即使对象保存了完全正确的 Content-Type,前端也会在选择渲染器之前把它判为不支持。 恢复旧版浏览器原生预览很容易,却不是正确修复。对象内容由上传者控制;如果把它作为同源 HTML/XML 文档加载 …

  • Silo 20260806 发布

    发布于 发布注记

    发布silo

    Featured Image for Silo 20260806 发布

    版本: RELEASE.2026-08-06T00-00-00Z · 提交: 3be10fcc1a44f6620ded0bd303461f9d688cca23 SILO 20260806 是 首个以 Silo 之名发布的版本。上一个版本 20260804 是以 pgsty/minio 名义交付的最后一版;本版本完成了向 github.com/pgsty/silo 的切换,重命名了每一个交付表面——二进制、软件包、容器镜像、systemd 服务、Helm chart——同时刻意原样保留了 …

    版本: RELEASE.2026-08-06T00-00-00Z · 提交: 3be10fcc1a44f6620ded0bd303461f9d688cca23 SILO 20260806 是 首个以 Silo 之名发布的版本。上一个版本 20260804 是以 pgsty/minio 名义交付的最后一版;本版本完成了向 github.com/pgsty/silo 的切换,重命名了每一个交付表面——二进制、软件包、容器镜像、systemd 服务、Helm chart——同时刻意原样保留了 …

  • mcli 20260806 发布

    发布于 发布注记

    发布mcli

    Featured Image for mcli 20260806 发布

    发布日期: 2026-08-06 · 版本: RELEASE.2026-08-06T00-00-00Z 距离 mcli 20260804 仅两天,本次发布完成了客户端向 Silo 身份的整体切换。这是一次刻意保持「纯品牌与封闭」性质的发布:--version 与 --help 现在以 Silo 客户端的身份呈现,所有残余的 MinIO SUBNET 外联路径在构建期被关闭,诊断工具链中内置的厂商加密公钥被移除,贡献政策改为无 CLA + 强制 DCO 签署。本周期 零依赖变更、零协议变更 —— …

    发布日期: 2026-08-06 · 版本: RELEASE.2026-08-06T00-00-00Z 距离 mcli 20260804 仅两天,本次发布完成了客户端向 Silo 身份的整体切换。这是一次刻意保持「纯品牌与封闭」性质的发布:--version 与 --help 现在以 Silo 客户端的身份呈现,所有残余的 MinIO SUBNET 外联路径在构建期被关闭,诊断工具链中内置的厂商加密公钥被移除,贡献政策改为无 CLA + 强制 DCO 签署。本周期 零依赖变更、零协议变更 —— …

  • Silo Console 2.1.0 发布

    发布于 发布注记

    发布console

    Featured Image for Silo Console 2.1.0 发布

    发布日期: 2026-08-06 · 版本: v2.1.0 · 仓库: pgsty/silo-console SILO Console 2.1.0 是独立发布 2.0.0 之后的第一个功能版本,做了三件事: 会说两种语言——全部控制台页面、帮助条目与文档链接都能以中文或英文呈现,切换按钮出现在每一页,且不引入任何新的运行时依赖; 读对了指标——仪表盘从 MinIO Metrics V2 名称迁移到 V3,并针对 V3 在底层改变的语义逐条做了显式处理; 在边界情况下不再说谎——全选框与批量操作作 …

    发布日期: 2026-08-06 · 版本: v2.1.0 · 仓库: pgsty/silo-console SILO Console 2.1.0 是独立发布 2.0.0 之后的第一个功能版本,做了三件事: 会说两种语言——全部控制台页面、帮助条目与文档链接都能以中文或英文呈现,切换按钮出现在每一页,且不引入任何新的运行时依赖; 读对了指标——仪表盘从 MinIO Metrics V2 名称迁移到 V3,并针对 V3 在底层改变的语义逐条做了显式处理; 在边界情况下不再说谎——全选框与批量操作作 …

  • Silo 20260804 发布

    发布于 发布注记

    发布silo

    Featured Image for Silo 20260804 发布

    版本: RELEASE.2026-08-04T00-00-00Z · 提交: d88f46ccee345a9c2fabe2d221d9a9e56bc11aec SILO 20260804 是 pgsty/minio 社区分支的一次安全、正确性与发布工程更新。该版本完成 CVE-2026-42600 所开启的节点间存储边界治理,阻止客户端输入冒充服务端计算出的 S3/IAM 策略条件值,恢复流式响应 flush 语义,修复多项 multipart 与版本控制边界问题,加固通知配置迁移,将构建基线升 …

    版本: RELEASE.2026-08-04T00-00-00Z · 提交: d88f46ccee345a9c2fabe2d221d9a9e56bc11aec SILO 20260804 是 pgsty/minio 社区分支的一次安全、正确性与发布工程更新。该版本完成 CVE-2026-42600 所开启的节点间存储边界治理,阻止客户端输入冒充服务端计算出的 S3/IAM 策略条件值,恢复流式响应 flush 语义,修复多项 multipart 与版本控制边界问题,加固通知配置迁移,将构建基线升 …

  • 解析器认识,Schema 不认:足以带走全部通知的配置键

    发布于 安全编年史

    安全Bucket Notifications

    Featured Image for 解析器认识,Schema 不认:足以带走全部通知的配置键

    状态: 已在本地 pgsty/minio 分支修复,提交 162ded343,尚未发布 定级: 配置 Schema 一致性与可用性问题,不是漏洞;附带一项防御性加固(验证报错不再回显凭据值) 影响范围: notify_nats 的 JWT/NKey/TLS-handshake-first 选项、notify_amqp 的 immediate,以及任何带着启用状态 NATS 目标从 2020 年前配置迁移上来的部署——它的失败会连带压掉 所有 通知后端 跟踪: pgsty/minio issue …

    状态: 已在本地 pgsty/minio 分支修复,提交 162ded343,尚未发布 定级: 配置 Schema 一致性与可用性问题,不是漏洞;附带一项防御性加固(验证报错不再回显凭据值) 影响范围: notify_nats 的 JWT/NKey/TLS-handshake-first 选项、notify_amqp 的 immediate,以及任何带着启用状态 NATS 目标从 2020 年前配置迁移上来的部署——它的失败会连带压掉 所有 通知后端 跟踪: pgsty/minio issue …

  • 让客户端源地址真正可信

    发布于 安全编年史

    安全Source Address

    Featured Image for 让客户端源地址真正可信

    状态: 已合入 pgsty/minio master,提交 fe6dc4780,尚未发布 定级: 可选加固 + 文档缺陷,不是漏洞,也不是回归;未申请 CVE。底层弱点继承自上游,本次未改变其默认行为 影响范围: aws:SourceIp 策略条件、审计日志 remotehost 字段、S3 事件通知的 Host、mc admin trace 显示的客户端——凡是 S3 API 端口无需经过清洗请求头的代理即可抵达的部署 上游: 无处可报——minio/minio 已归档。上游既有记录:PR …

    状态: 已合入 pgsty/minio master,提交 fe6dc4780,尚未发布 定级: 可选加固 + 文档缺陷,不是漏洞,也不是回归;未申请 CVE。底层弱点继承自上游,本次未改变其默认行为 影响范围: aws:SourceIp 策略条件、审计日志 remotehost 字段、S3 事件通知的 Host、mc admin trace 显示的客户端——凡是 S3 API 端口无需经过清洗请求头的代理即可抵达的部署 上游: 无处可报——minio/minio 已归档。上游既有记录:PR …

  • 对象授权,越界到桶:当 bucket/* 能改写桶本身

    发布于 安全编年史

    安全Object Grant

    Featured Image for 对象授权,越界到桶:当 bucket/* 能改写桶本身

    状态: 已在 pgsty/silo-pkg main 修复(3c24ad1,由 1f97549 扩展,并在 v3.11.0 收敛为最终的十二个动作),已发布为 silo-pkg v3.11.0;pgsty/minio 已消费该版本 定级: 访问控制加固——一条被收窄恢复的权限边界 影响范围: 仅被授予对象级(arn:aws:s3:::bucket/*)访问的 IAM 用户/角色/服务账号,且集群被多个租户共用的部署 跟踪: 上游 minio/minio issue #20449(2024 年起公 …

    状态: 已在 pgsty/silo-pkg main 修复(3c24ad1,由 1f97549 扩展,并在 v3.11.0 收敛为最终的十二个动作),已发布为 silo-pkg v3.11.0;pgsty/minio 已消费该版本 定级: 访问控制加固——一条被收窄恢复的权限边界 影响范围: 仅被授予对象级(arn:aws:s3:::bucket/*)访问的 IAM 用户/角色/服务账号,且集群被多个租户共用的部署 跟踪: 上游 minio/minio issue #20449(2024 年起公 …

  • 缺失不是空:一个空 versionid,和它诱发的 fail-open

    发布于 安全编年史

    安全Version ID

    Featured Image for 缺失不是空:一个空 versionid,和它诱发的 fail-open

    状态: 已在本地 pgsty/minio 分支修复,提交 744a9dcd7,尚未发布 定级: 策略执行正确性——一个 fail-closed 的报告、一个被避免的 fail-open 陷阱、以及顺手关掉的一处窄绕过。不是重点 CVE——见我们如何定级 影响范围: 任何在 s3:versionid 上使用 Null 或 StringEquals 的桶/IAM 策略;报告中的失效发生在 DeleteObject/DeleteObjects 跟踪: 上游 minio/minio issue …

    状态: 已在本地 pgsty/minio 分支修复,提交 744a9dcd7,尚未发布 定级: 策略执行正确性——一个 fail-closed 的报告、一个被避免的 fail-open 陷阱、以及顺手关掉的一处窄绕过。不是重点 CVE——见我们如何定级 影响范围: 任何在 s3:versionid 上使用 Null 或 StringEquals 的桶/IAM 策略;报告中的失效发生在 DeleteObject/DeleteObjects 跟踪: 上游 minio/minio issue …

  • mcli 20260804 发布

    发布于 发布注记

    发布mcli

    Featured Image for mcli 20260804 发布

    发布日期: 2026-08-04 · 版本: RELEASE.2026-08-04T00-00-00Z 这是 pgsty/mc 社区分支自 20260417 以来的首次发布。本次更新修复了一处调试日志泄密问题,彻底切断了客户端与上游发布渠道之间的所有连接,将容器与软件包完全改由本分支自建,并把打包体系从 MinIO 的 pkger 迁移到标准 nFPM,同时首次为 RPM 包提供 GPG 签名。 上游 minio/mc 仓库已于 2026 年 7 月归档。其最后一个提交 77f82e18 正是本 …

    发布日期: 2026-08-04 · 版本: RELEASE.2026-08-04T00-00-00Z 这是 pgsty/mc 社区分支自 20260417 以来的首次发布。本次更新修复了一处调试日志泄密问题,彻底切断了客户端与上游发布渠道之间的所有连接,将容器与软件包完全改由本分支自建,并把打包体系从 MinIO 的 pkger 迁移到标准 nFPM,同时首次为 RPM 包提供 GPG 签名。 上游 minio/mc 仓库已于 2026 年 7 月归档。其最后一个提交 77f82e18 正是本 …

  • Silo Pkg 3.11.0 发布

    发布于 发布注记

    发布pkg

    Featured Image for Silo Pkg 3.11.0 发布

    发布日期: 2026-08-04 · 版本: v3.11.0 · 提交: d8b1fa7 · 仓库: pgsty/silo-pkg 这是本分支的 第一个定版。它恢复了上游 minio/minio#20449 所报告的 IAM 桶/对象资源边界:策略条件键绕过修复、三个 LDAP 连接缺陷、证书监听器泄漏、有种子 RNG 的缺陷,以及模块真实的最低 Go 版本。 警告 升级前需要确认两件事 本版本收紧了鉴权。 十二个桶级写操作不再能通过 arn:aws:s3:::bucket/* 这样的对象级资源 …

    发布日期: 2026-08-04 · 版本: v3.11.0 · 提交: d8b1fa7 · 仓库: pgsty/silo-pkg 这是本分支的 第一个定版。它恢复了上游 minio/minio#20449 所报告的 IAM 桶/对象资源边界:策略条件键绕过修复、三个 LDAP 连接缺陷、证书监听器泄漏、有种子 RNG 的缺陷,以及模块真实的最低 Go 版本。 警告 升级前需要确认两件事 本版本收紧了鉴权。 十二个桶级写操作不再能通过 arn:aws:s3:::bucket/* 这样的对象级资源 …

  • Silo Console 2.0.0 发布

    发布于 发布注记

    发布console

    Featured Image for Silo Console 2.0.0 发布

    发布日期: 2026-08-04 · 版本: v2.0.0 · 仓库: pgsty/silo-console SILO Console 2.0.0 是这套对象存储管理控制台以独立项目身份发布的第一个主版本。它从 georgmangold/console 的 v1.9.1 维护线继续演进,完成了三件事: 建立独立身份——产品名称、视觉系统、文档入口、源码归属与发布链路全部迁移到 SILO 项目体系,同时刻意保留 Go 模块路径、环境变量等兼容契约; 重塑用户界面——登录页、主题系统、仪表盘与全站细 …

    发布日期: 2026-08-04 · 版本: v2.0.0 · 仓库: pgsty/silo-console SILO Console 2.0.0 是这套对象存储管理控制台以独立项目身份发布的第一个主版本。它从 georgmangold/console 的 v1.9.1 维护线继续演进,完成了三件事: 建立独立身份——产品名称、视觉系统、文档入口、源码归属与发布链路全部迁移到 SILO 项目体系,同时刻意保留 Go 模块路径、环境变量等兼容契约; 重塑用户界面——登录页、主题系统、仪表盘与全站细 …

  • 有序不等于递增:一个重复 Part 如何把对象变成两倍

    发布于 安全编年史

    安全Multipart Upload

    Featured Image for 有序不等于递增:一个重复 Part 如何把对象变成两倍

    状态: 已在本地 pgsty/minio 分支修复,提交 22c1e41fd,尚未发布 定级: 数据正确性问题,不是漏洞——见为什么这不是 CVE 影响范围: 所有后端;任何已认证的 S3 客户端,作用于它自己的上传 跟踪: pgsty/minio issue #49 本文有一节描述了相邻代码路径中一个尚未修复的进程级 panic。请在该问题修复并发布之后再上线。 结论先行 sort.SliceIsSorted 配 < 比较符 并不检查严格递增,它检查的是 有没有逆序对。相邻相等不构成逆序,于是 …

    状态: 已在本地 pgsty/minio 分支修复,提交 22c1e41fd,尚未发布 定级: 数据正确性问题,不是漏洞——见为什么这不是 CVE 影响范围: 所有后端;任何已认证的 S3 客户端,作用于它自己的上传 跟踪: pgsty/minio issue #49 本文有一节描述了相邻代码路径中一个尚未修复的进程级 panic。请在该问题修复并发布之后再上线。 结论先行 sort.SliceIsSorted 配 < 比较符 并不检查严格递增,它检查的是 有没有逆序对。相邻相等不构成逆序,于是 …

  • 内部节点路径 containment 审计:补完 CVE-2026-42600 欠下的那笔账

    发布于 安全编年史

    安全Path Containment

    Featured Image for 内部节点路径 containment 审计:补完 CVE-2026-42600 欠下的那笔账

    状态: 已在本地 pgsty/minio 分支修复,尚未发布、尚未披露(未申请 CVE/GHSA,上游仓库已归档) 影响范围: 仅 distributed erasure;需要 cluster-root / internode JWT 前置阅读: CVE-2026-42600 · ReadMultiple 本文包含完整利用向量与实测数据。发布即构成披露,请在修复版本发出后再上线。 上一篇的结尾写着一句话: 删除 endpoint 只证明 ReadMultiple 不再存在,不能外推成所有内部节点 …

    状态: 已在本地 pgsty/minio 分支修复,尚未发布、尚未披露(未申请 CVE/GHSA,上游仓库已归档) 影响范围: 仅 distributed erasure;需要 cluster-root / internode JWT 前置阅读: CVE-2026-42600 · ReadMultiple 本文包含完整利用向量与实测数据。发布即构成披露,请在修复版本发出后再上线。 上一篇的结尾写着一句话: 删除 endpoint 只证明 ReadMultiple 不再存在,不能外推成所有内部节点 …

  • Silo 20260618 发布

    发布于 发布注记

    发布silo

    Featured Image for 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

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

    状态: 已发布 首个包含版本: 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 …

  • Silo 20260417 发布

    发布于 发布注记

    发布silo

    Featured Image for 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 …