Skip to content

This is the multi-page printable view of this section. .

Return to the regular view of this page.

About PGSTY Silo

The PGSTY SILO manifesto, license, trademark, attribution, and security policy for the project and its documentation.

Silo is a community fork of MinIO, published and maintained by Pigsty. This section collects the terms the project publishes about itself: the Manifesto with the project’s public commitments, what license the code and the documentation are under, how the MinIO name is used, whom this documentation is attributed to, and how to report a security issue.

Silo is not affiliated with, endorsed by, or sponsored by MinIO, Inc. MinIO® is a registered trademark of MinIO, Inc.; see the Trademark Notice.

Meet the community contributors behind SILO, Console, mcli, shared packages, and this documentation. Issue reports and unmerged pull requests are recognized alongside merged work and security disclosures.

The security advisory ledger indexes security findings, fix commits, and upgrade boundaries. The component matrix lists published component versions and dependencies across the SILO stack.

1 - The PGSTY SILO Manifesto

PGSTY SILO’s commitments in eleven articles: what the project maintains, what it refuses to promise, and where to check both.

PGSTY SILO keeps an open-source, feature-complete, S3-compatible object store maintained and installable, with a build and release chain anyone can inspect. That is the whole scope.

This page is the project’s public commitment, and it follows one rule: every article below is either something we already do, with public evidence, or something we explicitly refuse to promise. A promise we could not keep would be worse than no promise.

Article 1 · Reason to exist, and an exit clause

This project started when upstream wound down its community edition: the web console was cut back to a stub, prebuilt community binaries stopped, and the community repository was archived. Silo keeps existing MinIO-compatible deployments running. Pigsty runs it in production as its PostgreSQL backup storage, so our own operations depend on the artifacts we publish.

The fork is a means, not an identity. If upstream restores its community edition, we will narrow our scope and offer our fixes back.

Background:

Article 2 · The compatibility contract

The product and its trademark are renamed; the protocol and your data are not.

  • The S3 API, MINIO_* environment variables, minio_* metrics, x-minio-* headers, /minio/* routes, and the on-disk format (including .minio.sys) are preserved, and held in place by a CI compatibility check.
  • Every release documents its tested rollback target and path in the release notes.
  • New capabilities do not touch the on-disk format. Any exception must be explicitly marked as non-reversible before you can enable it.
  • The migration guide, which includes how to leave Silo, and the per-component compatibility audits are public and maintained.

Article 3 · The license cannot change

Silo is AGPLv3. There is no CLA and no copyright aggregation: contributions are accepted only with DCO sign-off, so copyright stays with each contributor. That is not a verbal promise not to relicense. It means nobody here, ourselves included, holds enough copyright to relicense the project on everyone else’s behalf.

Our reading of the AGPL boundary is a position, not legal advice: using Silo through its S3 API does not make your application a derivative work. We will not use the license as a threat or a sales instrument.

Article 4 · Change discipline

Changes relative to the upstream baseline fall into four classes only: security fixes, defect fixes, restored community features, and optional additions. Existing API semantics change only when a security fix demands it, and every such compatibility cost is recorded in the advisory that caused it. Every divergence from upstream is listed in the code-verified compatibility audit.

Article 5 · The never list

Silo will never:

  • move an existing feature behind a paywall;
  • put a registration or login wall in front of downloads;
  • ship telemetry — the upstream phone-home paths (update checks, SUBNET, call-home) are removed outright, not merely disabled;
  • require a CLA;
  • change the license;
  • use trademarks against normal use or descriptive mention.

This list is append-only: entries may be added, never removed.

Article 6 · Security discipline

  • Vulnerabilities are reported through a private channel and triaged reproducibly. Writeups are held until the fixed release ships.
  • Every security fix ships with a public advisory, including its evidence and its compatibility cost.
  • Dependencies are tracked for CVEs, with reachability analysis before any change.
  • Every release ships SHA-256 checksums, SPDX SBOMs, Sigstore-signed manifests, and GitHub build provenance.

Severe, remotely exploitable issues are expedited on a best-effort basis, but we do not commit to a specific fix-time SLA.

Article 7 · Release cadence

Releases ship typically every one to two months, and at most a quarter apart. Security and defect fixes are batched into these releases. The history is public; judge the promise against it.

Version tags keep the RELEASE.YYYY-MM-DDTHH-MM-SSZ format, and each release documents its upstream baseline. Deprecations get at least six months’ notice and a migration path. The exception is a removal that security requires immediately; the removal and its justification are then published in the security advisories.

Article 8 · Upstream relations

We renamed the project out of respect for upstream’s trademarks. Upstream copyright, license, and third-party notices are preserved in full: attribution and trademark. If upstream resumes accepting contributions, applicable fixes will be offered back as appropriate.

Article 9 · Continuity

  • The repositories live under the pgsty organization, not a personal account.
  • The build is documented and provenance-attested: anyone can rebuild equivalent artifacts from source without us.
  • If active maintenance stops for six months, we will say so publicly and archive the project rather than let it go quiet. Released artifacts and documentation stay up as long as we can keep them up.
  • If an established open-source organization (a CNCF-style foundation, say) wanted to bring Silo under more formal governance, we would cooperate.

Article 10 · The commercial boundary

Everything in the Silo repositories is complete and free of charge: the server, the client, the console, and the released artifacts. That does not change.

Article 11 · Amendment discipline

Additions and strengthenings of this manifesto take effect immediately. Weakening or removing any article requires ninety days’ public notice. Article 5 is append-only, always.

Where to check:

2 - License

The Silo software is licensed under AGPLv3; this documentation is licensed under CC BY 4.0.

Silo carries two separate licenses. The software and the documentation are distributed under different terms, and each inherits the license its upstream work already used.

What License Where
silo server AGPL-3.0-or-later pgsty/silo
SILO Console AGPL-3.0-or-later pgsty/silo-console
mcli client AGPL-3.0-or-later pgsty/mc
SILO Shared Packages AGPL-3.0-or-later pgsty/silo-pkg
kes key management server (optional) AGPL-3.0-or-later pgsty/kes
This documentation CC BY 4.0 pgsty/silo.pgsty.com

Software: AGPLv3

PGSTY SILO is a fork of MinIO, which has been distributed under the GNU Affero General Public License v3.0 since 2021. That license is irrevocable for code already released under it — the legal basis on which this fork exists. PGSTY SILO keeps the same license: no relicensing, no added restrictions, no open-core carve-outs.

In practice, AGPLv3 lets you run, study, modify, and redistribute PGSTY SILO; if you offer a modified PGSTY SILO to users over a network, you must offer those users the corresponding source of your modified version.

Read the full license text before acting on any summary, including this one.

Contributions to PGSTY SILO

Code contributions to all five maintained software repositories use AGPL-3.0-or-later, the same license as each repository. Contributors retain copyright in their original work. SILO requires no CLA, copyright assignment, or separate Apache-2.0 license grant to its maintainers or to upstream MinIO.

Submit changes to the PGSTY repository that owns them and sign commits with git commit -s to certify the Developer Certificate of Origin 1.1. See the contribution guides for the server, Console, mcli, and shared packages.

Contributions to this documentation follow CC BY 4.0. Existing copyright, license, and attribution notices remain in place, including the original terms of separately licensed third-party material.

Documentation: CC BY 4.0

Everything published on this site is licensed under the Creative Commons Attribution 4.0 International License (CC BY 4.0) — the same license the upstream MinIO documentation used. The full legal text is reproduced verbatim in the documentation repository.

You are free to share and adapt this documentation, including commercially, provided you give appropriate credit, link to the license, and indicate whether changes were made. You may not impose legal or technological measures that restrict others from doing anything the license permits.

Attribution is the only substantive obligation; Attribution gives you a ready-to-copy credit line along with the full copyright stack.

What the license does not cover

A license grants rights in copyright. It says nothing about names. Permission to use the MinIO codebase and documentation is not permission to use the MinIO trademark — see the Trademark Notice.

Disclaimer

Both licenses provide the work as-is, without warranties or conditions of any kind. See Section 5 of CC BY 4.0 and Sections 15–17 of AGPLv3 for the complete disclaimers of warranty and limitations of liability.

See also

3 - Trademark Notice

MinIO is a trademark of MinIO, Inc. Silo is an independently maintained community fork, with no affiliation.
Warning

Every appearance of the MinIO name in this documentation is descriptive use, and implies no commercial relationship.

PGSTY SILO is a fork maintained independently by the PIGSTY community. It is not affiliated with, endorsed by, or sponsored by MinIO, Inc.

What the project does to avoid confusion

  • The fork is published under its own name, PGSTY SILO, not under MinIO’s.
  • Every page of this site carries a trademark disclaimer in the footer.
  • It is labeled a community fork across every distribution channel — repositories, container images, release artifacts, and this documentation.
  • No claim of affiliation, endorsement, certification, or commercial relationship with MinIO, Inc. is ever made.

Why the name still appears in this documentation

A license grants rights in copyright; it says nothing about names. AGPLv3 gives anyone the right to fork and redistribute the MinIO codebase, but trademark law is a separate matter that a license does not settle.

The MinIO name appears in this documentation to identify the upstream project this work derives from, and to name the things that still carry the upstream name in practice:

  • the upstream project and its history, in attribution and in prose
  • the wire protocol, API surface, and S3 compatibility statements
  • command names, configuration keys, environment variables, binary names, and error strings — part of the software’s compatibility contract
  • content carried over from the MinIO documentation, where renaming would break the correspondence between the text and the software it describes

Other marks

“Pigsty” and “PGSTY” refer to the Pigsty project and its maintainers, who publish PGSTY SILO. Amazon S3 is a trademark of Amazon.com, Inc. or its affiliates; references to S3 describe protocol compatibility only. All other trademarks are the property of their respective owners.

See also

  • License — AGPLv3 for the software, CC BY 4.0 for this documentation
  • Attribution — copyright stack and derivation of this documentation

4 - Attribution

Copyright, derivation, and translation notices for the Silo documentation, and how to credit it when you reuse it.

Copyright © 2020–Present MinIO, Inc. Original MinIO Object Storage Documentation.

Copyright © 2026–Present PIGSTY & SILO Contributors Fork maintenance, format conversion, modifications, restored and newly written content, and Simplified Chinese translation.

Both layers apply at once. A translated or modified page carries MinIO’s copyright in the underlying expression and the PGSTY SILO project’s copyright in the translation and the changes; neither replaces the other.

License

All documentation content on this site is licensed under the Creative Commons Attribution 4.0 International License (CC BY 4.0) — the same license as the upstream work. The full legal text is in LICENSE. The PGSTY SILO software itself is licensed separately; see License.

Derivation

Portions of this documentation are derived from the MinIO Object Storage Documentation. The work has been modified from the original: rebranding to PGSTY SILO, restoration of documentation for features removed upstream, conversion of the frozen RST/MyST source to bilingual Markdown, replacement of the Sphinx presentation layer with Hugo and OINK, link and build fixes, ongoing maintenance, and translation into Chinese. The commit history is the complete record of changes.

The blog, download and release pages, this section, and PGSTY SILO-specific content are original works of the PGSTY SILO project. Pages that carry upstream material include a notice at the bottom of the page, and pages that PGSTY SILO has modified beyond format conversion link to their change history.

Translation

Chinese translations are unofficial and are maintained by the PGSTY SILO project, not by MinIO, Inc. Where a translation and the original English text differ, the English text is authoritative.

How to attribute

If you reuse content from this site, the following credit line satisfies CC BY 4.0:

[PGSTY SILO Documentation](https://silo.pgsty.com) by PGSTY and MinIO, Inc., licensed under CC BY 4.0.

For Chinese-language contexts:

[PGSTY SILO 文档](https://silo.pgsty.com/zh),作者 PGSTY 与 MinIO, Inc.,依据 CC BY 4.0 授权。

Disclaimer

Unless otherwise separately undertaken by the Licensor, to the extent possible, the Licensor offers the Licensed Material as-is and as-available, and makes no representations or warranties of any kind concerning the Licensed Material, whether express, implied, statutory, or other. See Section 5 of the license for the complete disclaimer of warranties and limitation of liability.

See also

  • License — AGPLv3 for the software, CC BY 4.0 for this documentation
  • Trademark Notice — how the MinIO name is used here

5 - Contributors

SILO community contributors, contribution records, and recognition policy.

As of 2026-11-09, 76 community contributors are credited in SILO and related projects. The roll includes maintainers and every human issue / PR author, along with security reporters who have agreed to be acknowledged.

Opening an issue or PR counts, whether open, closed, draft, or unmerged. Each account appears once. Merged PR authors come first, followed by other PR authors and reporters. Within each group, significant fixes, adopted proposals, and reports that led to fixes take priority, followed by first participation. Gold rings highlight significant contributions.

When a proposal was incorporated through a later repair, its adoption is credited alongside the original PR status. Automated accounts are excluded. Upstream authorship remains in Git history and copyright notices.

@Vonng @ZouhairCharef @mfredenhagen @cbornet @pinginfo @ycjlin @waterkip @Dansyuqri @mrjavadseydi @h5vx @nikitapogromsky @julienlau @Aeirx @AleksaMCode @yupoet @clown15 @botdeniska @910patin @cyberbret @EduardoAndradeMachado @magicxor @davinkevin @metaneutrons @mikemikimike @chodorenko @dihmandrake @sulin37392 @lem21h @liubin07 @HaveFun83 @kh0mka @MikeVL @vampywiz17 @jiri-pejchal @AEGEGE @naiveHobo @orenyomtov @nik0xFF @szopi00 @GhaziTriki @haf @sun1024 @mosesdd @Xavier-777 @jiadzh @AntonOfTheWoods @TLINDEN @zylpsrs @nsanitate @makinikm @spaceg00se-r @heroes1412 @chalukyaj @jvasile @Kesavaambati @redfoxfox @kuldeep-link11 @meesudzu @pmezhuev @bagutzu @liuhaodongliu990-cmyk @DestroyLee @sargarass @mumu-lab @haiming236 @tiredenzo @aschyolkin @0mp @ztarbug @zmstone @Crowley723 @geraldcombs @devTeam-AiReg @azataiot @siyahkut @seumasdunlop

Merged pull requests

Contributor Contribution Record
@Vonng Maintains SILO, Console, mcli, shared packages, releases, and documentation pgsty/silo: Merged PRs (93)
PRs closed without merging: pgsty/silo#155, pgsty/silo#195
pgsty/silo: Closed issues (99)
Open issues: pgsty/silo#217
pgsty/silo-console: Merged PRs (42)
pgsty/silo-console: Closed issues (39)
pgsty/mc: Merged PRs (30)
pgsty/mc: Closed issues (42)
Merged PRs: 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
Closed issues: pgsty/silo-pkg#13
Merged PRs: pgsty/kes#1
pgsty/silo.pgsty.com: Merged PRs (48)
PRs closed without merging: pgsty/silo.pgsty.com#36
@ZouhairCharef Patched CVE-2026-34986 in go-jose Merged PRs: pgsty/silo#18
@mfredenhagen Patched CVE-2026-39883 in OpenTelemetry Merged PRs: pgsty/silo#19
@cbornet Reported checksum and missing-bucket defects and aligned S3 checksum error messages Merged PRs: pgsty/silo#225
Closed issues: pgsty/silo#31, pgsty/silo#32, pgsty/silo#107, pgsty/silo#226
@pinginfo Repaired bucket notification streaming Merged PRs: pgsty/silo#34
@ycjlin Fixed missing-bucket ListObjects semantics Merged PRs: pgsty/silo#37
@waterkip Repointed documentation links to the SILO portal Merged PRs: pgsty/silo#41
@Dansyuqri Added ChecksumType to multipart completion responses Merged PRs: pgsty/silo#57
@mrjavadseydi Fixed bucket quota metrics and mcli alias regions; contributed access-frequency ILM and S3-compatible multipart listing proposals Merged PRs: pgsty/silo#60, pgsty/silo#132, pgsty/silo#198, pgsty/silo#221
Open PRs: pgsty/silo#249
PRs closed without merging: pgsty/silo#215
Merged PRs: pgsty/mc#44
The access-frequency feature in #60 was merged and later removed. The multipart-listing contribution in #198 was merged after follow-up durability and cancellation repairs; it shipped in Server 20260916 with legacy as the default and strict as an opt-in.
@h5vx Implemented per-bucket CORS configuration and enforcement Merged PRs: pgsty/silo#71
@nikitapogromsky Fixed duplicate logger targets that broke Metrics V3 collection Merged PRs: pgsty/silo#151
Closed issues: pgsty/silo#150
@julienlau Fixed missing-commit-metadata error handling and stale metadata reuse; contributed replication reports and proposals Merged PRs: pgsty/silo#232, pgsty/silo#233
Open PRs: pgsty/silo#240, pgsty/silo#241
PRs closed without merging: pgsty/silo#184
Closed issues: pgsty/silo#152, pgsty/silo#153
The original PR was not merged directly. Its purge-state and recovery analysis, proposed fix, tests, and documentation helped shape #196; see the maintainer acknowledgement.
@Aeirx Preserved Object Lock legal-hold headers in federated CopyObject Merged PRs: pgsty/silo#172
@AleksaMCode Fixed the Lambda target-set emptiness check and added a regression test Merged PRs: pgsty/silo#220
@yupoet Improved checksum mismatch messages, verified erasure-coding documentation, and contributed a single-node migration case Merged PRs: pgsty/silo#228, pgsty/silo#229
PRs closed without merging: pgsty/silo#230
Also cross-checked the two-drive EC:1 documentation. The single-node migration report in #228 was merged on 2026-10-23; the registry-mirror proposal in #230 was closed without merging.
@clown15 Fixed native multipart-upload timestamp parsing during stale-upload cleanup Merged PRs: pgsty/silo#236
@botdeniska Contributed multi-pool migration, deletion and lifecycle safety, conditional multipart checks, native restore reports and verification, LDAP login and storage cleanup fixes, replication checksum repairs, and faster policy evaluation pgsty/silo: Merged PRs (13)
Open PRs: pgsty/silo#294
PRs closed without merging: pgsty/silo#245, pgsty/silo#248, pgsty/silo#262, pgsty/silo#290
pgsty/silo: Closed issues (15)
Open issues: pgsty/silo#293
Merged PRs: pgsty/silo-pkg#11
The migration repair from #248 was incorporated in 60c7179dd, retaining the original authorship and DCO. The mixed-EC listing proposal in #262 was superseded by #267. The author closed #290 after verifying the native-restore rework covered the reported defects.
@910patin Fixed long-DN LDAP login while preserving IAM revocation-record errors Merged PRs: pgsty/silo#250
@cyberbret Contributed on-demand folder and bucket usage scans and the optional persistent usage worker Merged PRs: pgsty/silo-console#70
PR #70 was integrated through #79, retaining the original commits and authorship. Usage scans and the optional worker shipped in Console v2.6.0.
@EduardoAndradeMachado Contributed Brazilian Portuguese translations to Console and privately reported a security issue Merged PRs: pgsty/silo-console#83
PR #83 was merged with its original authored commits; the later ten-language implementation uses shared static dictionaries. Private security reporting is acknowledged with the reporter’s agreement.

Other pull-request authors

Contributor Contribution Record
@magicxor Reported and proposed conditional DELETE support for If-Match PRs closed without merging: pgsty/silo#12
Closed issues: pgsty/silo#10
The original PR closed after conditional DELETE support landed in #145.
@davinkevin Proposed the distroless container image and dependency automation PRs closed without merging: pgsty/silo#21
Open issues: pgsty/silo#20
The distroless proposal was superseded by the image shipped in RELEASE.2026-08-06.
@metaneutrons Reported and proposed explicit-version delete authorization PRs closed without merging: pgsty/silo#59
Closed issues: pgsty/silo#58
The original PR was superseded; its authorization action split informed #104.
@mikemikimike Contributed the replicated SSE-C plaintext part-size fix PRs closed without merging: pgsty/silo#125
The original PR was superseded; its plaintext-size fix was incorporated through #124, with attribute handling in #128.
@chodorenko Reported and contributed the fix for aws-chunked leaking into replica metadata PRs closed without merging: pgsty/silo#187
Closed issues: pgsty/silo#185
The implementation was incorporated in #194, with co-author credit; the original PR was closed as superseded.
@dihmandrake Reported dry-run healing safety issues and proposed parallel deep verification and Helm configuration options Open PRs: pgsty/silo#280, pgsty/silo#283
Dry-run safeguards associated with #280 were incorporated independently in c8dd5678b and dd0a2da55. The PR remains open, including the parallel-verification proposal.
@sulin37392 Proposed dependency updates PRs closed without merging: pgsty/silo#8
@lem21h Proposed robustness and goroutine improvements PRs closed without merging: pgsty/silo#36
@liubin07 Proposed an opt-in object naming mode for coexisting object and prefix names PRs closed without merging: pgsty/silo#260
@HaveFun83 Proposed configurable Kubernetes health probes in the Helm chart Open PRs: pgsty/silo#288

Issue reports

Contributor Contribution Record
@kh0mka Reported inter-node I/O timeouts, OIDC configuration-fetch failures, and lost Console bucket quotas Closed issues: pgsty/silo#51, pgsty/silo#154
Closed issues: pgsty/silo-console#72
@MikeVL Reported resync throughput overflow and missing JSON status, both fixed in mcli 20261026 Closed issues: pgsty/mc#48, pgsty/mc#49
@vampywiz17 Reported LDAP TLS and Console login regressions Closed issues: pgsty/silo#15, pgsty/silo#108
@jiri-pejchal Reported the RabbitMQ client vulnerability and the Console share proxy’s exposure of internal metrics Closed issues: pgsty/silo#176
Closed issues: pgsty/silo-console#52
@AEGEGE Reported the slow-HTTP denial-of-service vulnerability Closed issues: pgsty/silo#183
The reproduced slow-header defect was fixed on main through #196.
@naiveHobo Reported an IAM admin API access-control issue and the unavailable private reporting channel Closed issues: pgsty/silo#222
@orenyomtov Reported the unsigned-header CopyObject cross-object read (SN-2026-011) Security disclosure credited in SN-2026-011, fixed in #173.
@nik0xFF Reported a security issue privately by email Dominik Klug is credited under his full name with his permission.
@szopi00 Reported the Object Lock GOVERNANCE retention authorization bypass The report led to the Object Lock repairs in #234 and #235.
@GhaziTriki Investigated policy-query and Console slowdown and identified overlapping client mirror jobs Closed issues: pgsty/silo#251
Closed after the reporter follow-up traced the immediate cause to overlapping client mirror jobs; this incident did not establish a SILO version regression.
@haf Reported audit webhook delivery stopping on peer nodes after configuration reload Closed issues: pgsty/silo#259
The report led to webhook target lifetime and queue recovery repairs in 0fa4a8c50 and f3e84d54a.
@sun1024 Privately reported a security issue in SILO Acknowledged with the reporter’s agreement; private report details are not included here.
@mosesdd Requested a maintained Helm chart Closed issues: pgsty/silo#1
@Xavier-777 Reported Console lifecycle management and file preview gaps Closed issues: pgsty/silo#2, pgsty/silo#17
@jiadzh Requested Windows build guidance Closed issues: pgsty/silo#3
@AntonOfTheWoods Asked for clarity on Helm chart and operator options Closed issues: pgsty/silo#5
@TLINDEN Reported the missing client in release tarballs Closed issues: pgsty/silo#4
@zylpsrs Reported missing Console tiering and site replication Closed issues: pgsty/silo#6
@nsanitate Proposed CNCF Sandbox governance Closed issues: pgsty/silo#7
@makinikm Reported the missing client in the container image Closed issues: pgsty/silo#9
@spaceg00se-r Requested cpuv1 support and reported a workflow token failure Closed issues: pgsty/silo#11, pgsty/silo#14
@heroes1412 Reported the unusable profiling option Closed issues: pgsty/silo#13, pgsty/silo#231
@chalukyaj Proposed making the SILO Operator easier to discover Open issues: pgsty/silo#30
@jvasile Reported missing user, group, and defaults in Debian packages Closed issues: pgsty/silo#33
@Kesavaambati Asked about community support and image maintenance Closed issues: pgsty/silo#35
@redfoxfox Reported Chinese documentation availability Closed issues: pgsty/silo#38
@kuldeep-link11 Reported NATS JWT credentials and target reload issues Closed issues: pgsty/silo#39
Open issues: pgsty/silo#40
@meesudzu Requested the migration guide from upstream MinIO Closed issues: pgsty/silo#42
@pmezhuev Reported missing RPM package signatures Closed issues: pgsty/silo#43
@bagutzu Requested KES-compatible external KMS and OpenBao support Closed issues: pgsty/silo#61
@liuhaodongliu990-cmyk Reported indeterminate progress for prefix downloads Closed issues: pgsty/silo#62
@DestroyLee Reported the missing documentation navigation Closed issues: pgsty/silo.pgsty.com#4
@sargarass Reported ListMultipartUploads prefix and pagination semantics Open issues: pgsty/silo#79
@mumu-lab Reported bucket quota metrics reading a deprecated field Closed issues: pgsty/silo#106
@haiming236 Proposed a built-in image processing pipeline Open issues: pgsty/silo#160
@tiredenzo Reported inconsistent documentation for two-drive EC:1 support Closed issues: pgsty/silo#197
@aschyolkin Reported a data race in CPU metrics collection Closed issues: pgsty/silo#210
@0mp Requested and discussed FreeBSD support Open issues: pgsty/silo#219
@ztarbug Requested publication of the Helm chart Open issues: pgsty/silo#223
@zmstone Requested a GitHub Container Registry mirror Closed issues: pgsty/silo#224
@Crowley723 Requested friendly names for users Open issues: pgsty/silo#227
@geraldcombs Suggested Windows ZIP packaging, adopted across the maintained release tools Closed issues: pgsty/mc#45
@devTeam-AiReg Asked about availability of the release containing IAM security fixes Closed issues: pgsty/silo#247
@azataiot Reported and analyzed high-latency Console health-report truncation during WebSocket close Closed issues: pgsty/silo-console#63
@siyahkut Requested Turkish language support Open issues: pgsty/silo#277
@seumasdunlop Reported the outdated default server image tag in the Helm chart Open issues: pgsty/silo#296

Audit scope

Counts below come from every page of the GitHub issue / PR records, across all states, including automated accounts. Review dates are listed per repository; records not rechecked retain their earlier dates and states. There are 72 distinct human public issue / PR authors, plus 4 credited security reporters. Excluded automated accounts: Copilot, dependabot[bot].

Repository Issues Pull requests Reviewed
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
Total 260 291

Maintainer record

@Vonng — complete issue / PR record

Merged PRs: 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

PRs closed without merging: pgsty/silo#155, pgsty/silo#195

Closed issues: 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

Open issues: pgsty/silo#217

Merged PRs: 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

Closed issues: 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

Merged PRs: 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

Closed issues: 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

Merged PRs: 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

Closed issues: pgsty/silo-pkg#13

Merged PRs: pgsty/kes#1

Merged PRs: 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

PRs closed without merging: pgsty/silo.pgsty.com#36

@botdeniska — complete issue / PR record

Merged PRs: 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

Open PRs: pgsty/silo#294

PRs closed without merging: pgsty/silo#245, pgsty/silo#248, pgsty/silo#262, pgsty/silo#290

Closed issues: 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

Open issues: pgsty/silo#293

Merged PRs: pgsty/silo-pkg#11

The migration repair from #248 was incorporated in 60c7179dd, retaining the original authorship and DCO. The mixed-EC listing proposal in #262 was superseded by #267. The author closed #290 after verifying the native-restore rework covered the reported defects.

Record source: SILO CONTRIBUTORS.md · GitHub data. Please open an issue or PR to correct missing or inaccurate credit.

6 - Security Policy

How to report vulnerabilities in PGSTY SILO and where security advisories and fixes are published.

PGSTY SILO maintains active security tracking and patching for the S3-compatible object storage stack after upstream minio/minio entered archive mode. Current production deployments should run Server 20261026 (which embeds Console v2.5.1 and retains the fixes first shipped in Server 20261018 for Object Lock advisories SN-2026-015 / SN-2026-016 and IAM Admin boundary SN-2026-017, building on SN-2026-011 through SN-2026-014 from Server 20260916), standalone Console v2.6.0, mcli 20261109, and silo-pkg v3.16.0; see the October Security Note, Advisory Ledger, and Component Matrix.

Note that deploying standalone Console does not replace an older Server’s embedded Console, and built-in policy Reset, immediate bucket-list refresh, and bucket quota validation fixes require the corresponding Server or standalone Console versions (see the Console 2.5.1 and Console 2.6.0 release notes).

Reporting a Vulnerability

Report undisclosed vulnerabilities through a private channel rather than a public issue:

Include the affected component version, reproduction steps, and impact scope. SILO is maintained as an open-source project on a best-effort basis without commercial response-time SLAs.

Upstream MinIO Vulnerabilities

Because SILO shares lineage with minio/minio, most vulnerabilities in inherited code affect both codebases. Report findings in inherited code directly to SILO; when a vulnerability affects other active distributions of the same lineage, we coordinate disclosure as appropriate.

Where Fixes Are Published

  • Advisory Ledger: The canonical index of all CVE-* and SN-2026-* identifiers, fix commits, affected versions, and dependency security updates.
  • Security Advisories: Technical advisories detailing root causes, exploit conditions, code fixes, and upgrade requirements.
  • Release Notes: Versioned release announcements for Server, Console, mcli, and silo-pkg.

Deployment Hardening

See Also

7 - Security Advisories

The PGSTY SILO security advisory ledger: CVE and SN-2026 identifiers, fix commits, affected subsystems, exposure boundaries, upgrade guidance, and dependency security updates.

This ledger summarizes security fixes and upgrade-impacting security notes across the pgsty/silo stack. Each advisory with its own deep-dive investigation links to its full article in the Security Chronicle or Design Notes; this page serves as the canonical index of identifiers, fix commits, exposure conditions, and upgrade boundaries.

Entries with a public CVE use that identifier. Because upstream minio/minio is archived and no longer coordinates CVE assignments for inherited code, findings without a CVE carry a stable SN-<year>-<sequence> identifier (SN-2026-002 through SN-2026-019) so release notes, commits, and issues can reference them unambiguously. SN-2026-001 tracks a non-security streaming-flush regression in trackingResponseWriter (Server 20260804).

Current Release Boundary

The current production baseline is Server 20261026 (with embedded Console v2.5.1 and silo-pkg v3.15.2), standalone Console v2.6.0, mcli 20261109, and silo-pkg v3.16.0, all built with Go 1.27.3. KES 20261026 is the optional external key service. These releases retain the earlier security fixes below and add the dependency security updates. The first fixed versions remain:

Inherited Upstream Advisory Baseline

SILO cut its first community release (RELEASE.2025-12-03T12-00-00Z) from upstream history that already contained CVE-2025-62506.

ID Upstream Remediation SILO Inheritance Summary & Release Note
CVE-2025-62506 minio/minio#21642, merged as c1a49490 pgsty/silo@c1a49490 Resets DenyOnly while evaluating a restricted session policy so a service account or STS session cannot mint an unrestricted child service account. Upstream first fixed this in RELEASE.2025-10-15T17-29-55Z; every SILO release starting with RELEASE.2025-12-03T12-00-00Z contains it. Operators migrating from an older upstream build should upgrade and audit service accounts created by restricted service or STS identities. See the chronicle.
CVE-2026-32285 Same upstream commit c1a49490 (pgsty/silo#26) Already present (v1.1.2 buger/jsonparser) External vulnerability feeds mislabeled the CVE-2025-62506 session-policy commit (c1a49490) as a buger/jsonparser vulnerability; go.mod already selects v1.1.2 and govulncheck confirms no reachable vulnerable symbols. No code change required. See the chronicle.

Advisories Since RELEASE.2026-03-21T00-00-00Z

ID Fixed By Affected Area Chronicle / Release Note
CVE-2026-33322 d24f449e0 OIDC STS (AssumeRoleWithWebIdentity, AssumeRoleWithClientGrants) Chronicle
CVE-2026-33419 3b950f8fa + follow-ups LDAP STS authentication & rate limiting Chronicle
CVE-2026-34204 56fa63bfd Replication metadata header sanitization Chronicle
CVE-2026-39414 3252d5b7f, 5dc705936 S3 Select oversized CSV and JSON Lines records Chronicle
CVE-2026-41145 f444b6f37 STREAMING-UNSIGNED-PAYLOAD-TRAILER presigned query auth Chronicle
CVE-2026-40344 efb6e5b00 Snowball PutObjectExtract unsigned-trailer auth Chronicle
CVE-2026-42600 73ac52472 (73ac5244d) Internode ReadMultiple (/rmpl) path traversal Chronicle
SN-2026-002 ca7baa670 .. a36fd8fff Internode RPC, peerREST, and xlStorage path/memory containment Chronicle
SN-2026-003 silo-pkg v3.11.0, 2f55347f7, 7a8fa5bc2, eb74f7e40 S3 policy condition value sources (s3:VersionId, tags, signatureAge) Chronicle
SN-2026-004 silo-pkg v3.11.0 (d8b1fa7), 97b7d2804 Bucket-level write isolation from object-only arn:aws:s3:::bucket/* grants Chronicle
SN-2026-005 silo-pkg v3.12.0 (2b087a1), eee05a17c Bare ARN prefix (arn:aws:s3:::) rejection on policy writes Chronicle · pkg v3.12.0
SN-2026-006 b73581b05, c4fd97d0b, e2b0cf32f (#82) Zero-byte SSE-C object key authentication Chronicle
SN-2026-007 474cd5801, 74c97d005, 21870fa2e, e2b0cf32f (#84) GetObjectAttributes SSE-C key verification Chronicle
SN-2026-008 938603458 .. 04b097fd9 Post-auth trust boundary for internal X-Minio-Source-* headers Chronicle · Design
SN-2026-009 58735ee38, 229fe2b3c, 0c8b02344, 4dbeb15d8 Target-state IAM action check for user/group enable vs. disable Chronicle · Design
SN-2026-010 75a6734e4 .. d2d47a41f, 04b097fd9 (#58) Explicit object version deletion requires s3:DeleteObjectVersion Chronicle · Release
SN-2026-011 123325430, #173, #177 SigV4 SignedHeaders coverage across all X-Amz- headers Chronicle · Design
SN-2026-012 c4b5e1cb4, #177 Presigned payload SHA-256 verification when supplied via header Chronicle
SN-2026-013 f99ed829b, 0cd388c66 Durable IAM revocation records and scoped STS revocation Chronicle · Design
SN-2026-014 silo-console#56, #209 Console anonymous share-download proxy path restriction Chronicle · Console v2.4.1
SN-2026-015 14042b5aa, #234, #235 PutObjectRetention authorization and governance-bypass enforcement Chronicle · Design
SN-2026-016 14042b5aa, 0d3ba5d4c Version-addressed and in-place Object Lock overwrite prevention Chronicle · Design
SN-2026-017 2616d43fb, 995439260, #242 Delegated IAM Admin credential and policy containment boundaries Chronicle · Design
SN-2026-018 fe6dc4780 Forwarded client IP trust boundary (MINIO_API_TRUSTED_PROXIES) Chronicle
SN-2026-019 672c07a0f, f1ba68358 Notification key registration & config.HasSensitiveKeys credential redaction Chronicle · Design

Exposure and Upgrade Guidance

CVE-2025-62506 — Session-Policy Privilege Escalation

Remote exploitation: yes (authenticated service account or STS session carrying an inline session policy). Upstream fixed the DenyOnly evaluation reset in c1a49490 (RELEASE.2025-10-15T17-29-55Z), and every SILO release since RELEASE.2025-12-03T12-00-00Z inherits it. Operators migrating from an unpatched upstream MinIO release should upgrade and audit child service accounts created by restricted parent sessions. See the CVE-2025-62506 chronicle.

CVE-2026-32285 — Mislabeled jsonparser Advisory

Public feeds describe CVE-2026-32285 as a buger/jsonparser vulnerability, but its referenced upstream fix (c1a49490) is the session-policy commit for CVE-2025-62506. SILO already selects github.com/buger/jsonparser v1.1.2 and govulncheck confirms no reachable vulnerable symbols. See the CVE-2026-32285 investigation.

CVE-2026-33322 — OIDC JWT Algorithm Confusion

Remote exploitation: yes, if OIDC is enabled (AssumeRoleWithWebIdentity or AssumeRoleWithClientGrants) and an attacker knows or can guess client_secret to forge an HS256/HS384/HS512 token. Commit d24f449e0 binds JWT verification strictly to the provider’s asymmetric JWKS keys and removes the client_secret HMAC fallback from token.Parse. Deployments that relied on symmetric HMAC id_tokens must switch their IdP to asymmetric signing (RS256, ES256, etc.).

CVE-2026-33419 — LDAP STS Enumeration and DoS

Remote exploitation: yes, if LDAP is configured (AssumeRoleWithLDAPIdentity). Returns a uniform 400 InvalidParameterValue on authentication failure without leaking internal directory errors, bounds concurrent LDAP bind operations with a reserve/commit/cancel/refund lifecycle, and removes the shared per-username rate-limit bucket (which previously allowed an attacker who knew a victim’s LDAPUsername to lock out that user from rotating source IPs). See the LDAP STS chronicle.

CVE-2026-34204 — Replication Metadata Injection

Remote exploitation: yes. Blocks untrusted X-Minio-Replication-* headers on client PutObject and CopyObject requests from being stored as internal replication metadata and leaving objects unreadable. Upgrade any server that accepts untrusted object writes. See SN-2026-008 and Replica Metadata Normalization for the subsequent replication-header hardening.

CVE-2026-39414 — S3 Select Oversized Record Memory Exhaustion

Remote exploitation: yes (s3:SelectObjectContent). Rejects CSV and JSON Lines records exceeding 1 MiB (maxCharsPerRecord) with OverMaxRecordSize instead of buffering unbounded lines in memory. The April patch (3252d5b7f) enforced the limit on CSV and standard JSON readers; the June follow-up (5dc705936) routes JSON Lines on AVX2/AVX-512 CPUs through the bounded json.PReader instead of simdj.NewReader, closing the hardware-specific SIMD bypass. See the S3 Select chronicle.

CVE-2026-41145 — Unsigned-Trailer Query Authentication Bypass

Remote exploitation: yes. Closes the presigned query-string authentication bypass when X-Amz-Content-Sha256: STREAMING-UNSIGNED-PAYLOAD-TRAILER is sent on PutObject or PutObjectPart. Upgrade any server reachable by clients on object write endpoints.

CVE-2026-40344 — Snowball Auto-Extract Authentication Bypass

Remote exploitation: yes. Verifies SigV4 authentication in newUnsignedV4ChunkedReader() before PutObjectExtract begins untar() extraction on Snowball unsigned-trailer uploads, guaranteeing that unauthenticated streams never reach the tar extractor.

CVE-2026-42600 — Internode ReadMultiple Path Traversal

Remote exploitation: yes (requires cluster-root / internode JWT). Removes the unused /rmpl (xlStorage.ReadMultiple) RPC endpoint that allowed msgpack request payloads to traverse outside configured drive roots. Single-node deployments do not register internode routes; distributed erasure deployments should upgrade.

SN-2026-002 — Internode Payload Path and Memory Containment

Remote exploitation: yes (requires cluster-root / internode JWT). Completes CVE-2026-42600 across the remaining internode protocol surfaces (storageREST, peerREST, grid WebSocket multiplexing, and xlStorage). Enforces path containment at two storage-layer chokepoints (getVolDir/NSScanner and getStorage() via guardPaths, hasBadPathComponent, and isVolumeRootAlias), caps caller-declared slice allocations (maxDeleteVersions = 1000, max BitrotVerifier size), validates erasure DataBlocks/ParityBlocks before division to prevent per-frame node panics, and verifies shard lengths before reporting intact data. Single-node deployments do not register these routes; no S3 API behavior changes. See the internode containment chronicle.

SN-2026-003 — Policy Condition Value Sources

Remote exploitation: yes (policy-dependent). Prevents raw HTTP query parameters or headers that spell internal IAM condition-key names from shadowing or synthesizing server-derived condition values; confines s3:signatureAge to verified SigV4 presigned requests; separates query-only list parameters from header-backed x-amz-* condition keys; prevents client request tags from impersonating stored ExistingObjectTag values; and evaluates s3:VersionId against the whitespace-trimmed version ID only when ?versionId is actually present. See the version-ID and condition chronicle and condition value sources reference.

SN-2026-004 — Object-Grant Bucket Reach

Remote exploitation: yes (policy-dependent). Withholds 12 sensitive bucket-level write actions from object-only resource patterns (arn:aws:s3:::bucket/*): PutBucketPolicy, DeleteBucketPolicy, PutBucketObjectLockConfiguration, PutBucketVersioning, PutReplicationConfiguration, PutBucketLifecycle, DeleteBucket, ForceDeleteBucket, PutBucketCors, DeleteBucketCors, PutBucketQOS, and PutInventoryConfiguration, and requires a single Allow statement to match both the action and the resource (monotone intersection). Read the SN-2026-004 chronicle before upgrading if you maintain custom bucket-scoped IAM policies: add the bare bucket ARN (arn:aws:s3:::bucket) alongside arn:aws:s3:::bucket/* in any statement intended to grant those 12 bucket-level writes. Built-in canned policies, Deny statements, and NotResource exclusions are unaffected. Setting MINIO_API_LEGACY_BUCKET_RESOURCE_MATCH=on in the process environment before startup restores legacy matching (MINIO_CONFIG_ENV_FILE is read too late for package init).

SN-2026-005 — Bare ARN Prefix Rejection

Policy-hardening change (silo-pkg v3.12.0 / Server eee05a17c). Rejects S3, S3 Tables, and KMS ARN namespace prefixes that name no resource (arn:aws:s3::: and its historical *arn:aws:s3::: form) in both Resource and NotResource when creating named policies or creating/updating service-account session policies. Existing stored policies continue loading, matching, importing, and replicating without disruption, but re-submitting a policy containing a bare prefix requires replacing it with the concrete bucket/object ARN or an explicit wildcard (arn:aws:s3:::*). Note that a bare ARN prefix (arn:aws:s3:::) is distinct from a valid bare bucket ARN (arn:aws:s3:::bucket). See the SN-2026-003 / SN-2026-005 chronicle and silo-pkg v3.12.0 release notes.

SN-2026-006 — Zero-Byte SSE-C Object Key Authentication

Remote exploitation: yes (requires read access to the object). Zero-byte SSE-C objects previously returned 200 OK without unsealing the customer-provided key, allowing a caller with the wrong SSE-C key to pass HeadObject/GetObject or copy/overwrite the object under a newly chosen key. Zero-byte SSE-C reads and copies now unseal and verify the customer key, returning 403 AccessDenied on key mismatch as on AWS S3. Shipped in Server 20260903.

SN-2026-007 — GetObjectAttributes on SSE-C Objects

Remote exploitation: yes (requires read access to the object). GetObjectAttributes previously returned object attributes for SSE-C objects without authenticating the customer key, and skipped the check whenever a client sent X-Minio-Source-Replication-Request. Wrong SSE-C keys now return 403 AccessDenied, and unauthenticated replication markers return 400 InvalidArgument; authorized replication peers holding s3:ReplicateObject remain unaffected. Shipped in Server 20260903.

SN-2026-008 — Post-Auth Trust Boundary for Internal Replication Headers

Remote exploitation: yes (any authenticated principal with read or write access to the object). Completes CVE-2026-34204: internal headers (X-Minio-Source-Etag, X-Minio-Source-Mtime, X-Minio-Source-Replication-Request, X-Minio-Source-DeleteMarker, replication SSE key headers, and X-Amz-Bucket-Replication-Status) were previously trusted on mere presence in several handlers. Server 20260903 strips these headers from a post-authentication clone unless the caller sends the exact marker value and holds s3:ReplicateObject or s3:ReplicateDelete. Site replication service accounts and bucket-replication targets holding replication permissions are unaffected. See the chronicle and CORS & Replication Trust Design.

SN-2026-009 — User and Group Status Authorization

Remote exploitation: yes (authenticated Admin API). SetUserStatus and UpdateGroupStatus previously checked admin:EnableUser and admin:EnableGroup regardless of whether the request enabled or disabled the target, allowing an operator granted only enable permission to disable accounts (and vice versa). Status changes now check admin:EnableUser / admin:DisableUser and admin:EnableGroup / admin:DisableGroup according to the requested target state. Policies granting admin:* or consoleAdmin are unaffected; least-privilege policies granting only one action of the pair now authorize only that direction. See the chronicle and User Status Permissions Design.

SN-2026-010 — Explicit Object Version Delete Authorization

Remote exploitation: yes (authenticated S3 API). DeleteObject?versionId=... and DeleteObjects entries carrying a VersionId were previously authorized against s3:DeleteObject with only a negative check for Deny s3:DeleteObjectVersion. Explicit version deletes now require s3:DeleteObjectVersion, matching AWS S3. Two policy effects: principals granted only s3:DeleteObject can still create delete markers on unversioned DELETE calls but can no longer permanently delete specific versions; and policies that relied solely on Deny s3:DeleteObject alongside Allow s3:* to block permanent version deletion must also add Deny s3:DeleteObjectVersion. Replication targets retain the s3:ReplicateDelete contract. See DeleteObjectVersion Authorization.

SN-2026-011 — Unsigned X-Amz-* Operation Headers

Remote exploitation: yes (holder of a presigned URL or intercepted Authorization-header PUT request). Because cmd/api-router.go dispatches PUT requests carrying x-amz-copy-source to CopyObjectHandler, an attacker holding a presigned PUT URL could append an unsigned x-amz-copy-source: /src/secret header and trick the server into copying any object readable by the signer into the destination object. Reported by Oren Yomtov.

Fixed in Server 20260916 (status note, 123325430, PR #173 and #177). Both doesPresignedSignatureMatch and doesSignatureMatch now invoke checkUnsignedHeaders and reject any request carrying an unsigned X-Amz- header with 400 AccessDenied (ErrUnsignedHeaders). X-Amz-Content-Sha256 is the sole explicit header exemption because its payload digest is bound by the canonical request and verified by SN-2026-012; PR #177 also derives s3:signatureAge directly from the signed X-Amz-Date without mutating r.Header. Standard AWS SDKs, mcli, and minio-go already sign all X-Amz- headers; custom clients that append X-Amz-* headers to a presigned URL must include them in X-Amz-SignedHeaders at signing time. See Signed Header Coverage Design.

SN-2026-012 — Header-Only Presigned Payload Hash Verification

Remote exploitation: yes (holder of a presigned URL whose payload hash was bound via X-Amz-Content-Sha256 header rather than query string). Generic authenticated handlers such as PutBucketPolicy previously verified the signature against the header digest but did not verify the consumed request body against that digest, allowing a holder of the presigned URL to substitute a different body. Commit c4b5e1cb4 (Server 20260916) binds generic body verification to the same effective payload hash used during signature verification (query parameter first, header fallback) and rejects tampered bodies with XAmzContentSHA256Mismatch.

SN-2026-013 — Durable IAM Revocation and Scoped STS Revocation

Remote exploitation: requires a previously issued credential and a restart, peer-sync delay, or same-name parent recreation scenario. Before Server 20260916 (#191, #192, f99ed829b), disabling or deleting a user, rotating credentials, or recreating a user under the same name could leave previously minted STS tokens or child service accounts valid until JWT expiration, or allow stale site-replication records to resurrect deleted identities. Server 20260916 persists deletion tombstones, parent revocation timestamps, and group-grant revisions under .minio.sys/iam/revocations/, and Server 20261018 (0cd388c66) adds POST /minio/admin/v3/sts-revoke for per-principal and per-token (jti) STS revocation without invalidating unrelated sessions. Coordinate upgrades across all nodes sharing an IAM backend; see IAM Revocations Design and the IAM Upgrade Runbook.

SN-2026-014 — Anonymous Console Share-Download Proxy Restriction

Remote exploitation: yes (anonymous caller reaching the Console /api/v1/download-shared-object endpoint). The Console share-download proxy previously accepted arbitrary paths and query parameters on its configured S3 origin, allowing an unauthenticated caller to reach internal origin paths (such as /minio/v2/metrics/cluster) that operators had isolated behind the Console network boundary. Reported by Jiri Pejchal (@jiri-pejchal). Fixed in Console v2.4.1 (silo-console#56) and embedded in Server 20260916 (#209): the proxy now restricts forwarding strictly to single-object GET downloads on the configured S3 origin, rejects /minio/* system paths and subresource management queries before dialing, and refuses HTTP redirects.

SN-2026-015 — PutObjectRetention Authorization and Governance Bypass

Remote exploitation: yes (authenticated S3 caller). Three flaws in PutObjectRetentionHandler (cmd/object-handlers.go) allowed an authenticated caller to: (1) modify object retention without holding s3:PutObjectRetention by supplying X-Amz-Bypass-Governance-Retention: true when holding s3:BypassGovernanceRetention (short-circuiting the base action check); (2) clear (Mode: "") or shorten an active GOVERNANCE lock using only s3:PutObjectRetention without s3:BypassGovernanceRetention; and (3) bypass IAM Deny policies on s3:object-lock-remaining-retention-days when clearing retention. Fixed in Server 20261018 (PR #234, #235, 14042b5aa): s3:PutObjectRetention is unconditionally enforced before object lookup, weakening or clearing an active GOVERNANCE lock requires both X-Amz-Bypass-Governance-Retention: true and s3:BypassGovernanceRetention, and clearing retention evaluates s3:object-lock-remaining-retention-days = 0. See the SN-2026-015 / SN-2026-016 Advisory and Repair Architecture.

SN-2026-016 — Version-Addressed and In-Place Object Lock Overwrites

Remote exploitation: yes (authenticated S3 writer). Callers supplying ?versionId=<existing-uuid> on PutObject, CopyObject, CompleteMultipartUpload, or PutObjectExtract, or overwriting unversioned/null-version objects in place (including directory objects and multipart completions), could overwrite an existing version protected by COMPLIANCE or GOVERNANCE retention or LegalHold without triggering an Object Lock check. Fixed in Server 20261018 (14042b5aa, 0d3ba5d4c): S3 handlers reject caller-supplied ?versionId= unless the request is an authenticated replication write (isReplicationRequest), preflight checks fail closed on unreadable metadata, and storage write paths (PutObject, CopyObject, CompleteMultipartUpload, PutObjectDir) re-verify destination version lock state (checkObjectLockForOverwrite) inside the namespace write lock. Upgrade every Server node and replication peer accepting writes. See the Repair Architecture.

SN-2026-017 — Delegated IAM Admin Credential Authorization Boundaries

Remote exploitation: yes (authenticated delegated IAM administrator or restricted derived credential). In Server 20260916 and earlier, delegated admins holding admin:CreateUser, admin:AttachUserOrGroupPolicy, or admin:UpdateServiceAccount could assign policies broader than their own effective permissions, mutate higher-privilege users/groups/service accounts, or use self-service admin routes to escape session-policy or Deny restrictions. Fixed in Server 20261018 (2616d43fb, 995439260, PR #242): delegated IAM mutations now enforce target-policy containment (authorizePolicyChange, authorizeGroupTargets, authorizeTargetUser) and block non-root self-permission escalation (ErrAdminChangeUserSelfPermission). See IAM Admin Authorization Design.

SN-2026-018 — Client Source Address Trust Boundary (MINIO_API_TRUSTED_PROXIES)

Forwarded-Header Trust Policy

Opt-in security hardening (fe6dc4780, shipped in Server 20260804). By default, inherited upstream code trusts X-Forwarded-For and X-Real-IP from any direct peer, allowing clients that can reach the server directly (or behind an appending proxy) to spoof aws:SourceIp IAM conditions and evade per-IP LDAP rate limits. MINIO_API_TRUSTED_PROXIES establishes an enforceable trust boundary: when set to none, forwarded headers are never trusted; when set to a comma-separated list of proxy IPs or CIDRs, forwarded headers are accepted only from listed peers (plus loopback sidecars) and X-Forwarded-For is walked right-to-left past trusted hops to extract the first untrusted client IP. Multi-node clusters that enable MINIO_API_TRUSTED_PROXIES must include their own cluster node IPs/CIDRs in the list so peer-forwarded S3 requests preserve the original client IP. See the Source Address Trust Chronicle and Settings Reference.

SN-2026-019 — Notification Key Registration and Secret Redaction

Config-subsystem hardening (672c07a0f in Server 20260804, followed by f1ba68358 in Server 20260903). Auditing notify_postgres and notify_mysql revealed that config.HasSensitiveKeys did not redact password, dsn_string, or connection_string when returning validation errors or GetConfigKV payloads, and five discrete connection keys were missing from the registered Keyspace. Commit 672c07a0f added credential redaction in config.HasSensitiveKeys and a structural test verifying key registration across all config subsystems; Server 20260903 subsequently retired the five discrete keys in favor of connection_string and dsn_string to eliminate split-brain overwrites during startup migration. See the Notification Keyspace Chronicle and Notify URL Design.

Dependency Security Updates

Server 20261018 builds with Go 1.27.2 and selects golang.org/x/net v0.61.0, golang.org/x/crypto v0.58.0, golang.org/x/text v0.43.0, and github.com/go-jose/go-jose/v4 v4.1.6 (note that the go-jose RSA JWK parsing fix rejects RSA keys larger than 4096 bits; verify OIDC/JWKS identity providers before upgrading). Unified Go 1.27.3 and static curl 8.23.0 updates are tracked in SILO 20261026.

Advisory / Scope Fixed By Summary
CVE-2026-39883 1869bd30b, e4fa06394 Updates OpenTelemetry dependencies (RELEASE.2026-03-21).
2026-03-25 release RELEASE.2026-03-25 OTel SDK, Paho MQTT, and x/crypto updates addressing CVE-2026-24051, CVE-2025-10543, and CVE-2025-58181.
CVE-2026-34986 68e0ba997 Upgrades go-jose to v4.1.4.
Go 1.26.2 stdlib db4c0fd5e Fixes CVE-2026-32280 and CVE-2026-32281 (crypto/x509) and CVE-2026-32283 (crypto/tls).
Go 1.26.4 & module refresh df627ff89, 3e61b1d3a Fixes CVE-2026-32952 (Azure NTLM) and CVE-2026-41602 (Thrift), plus NATS and Prometheus dependency updates (RELEASE.2026-06-18).
Go 1.26.5 stdlib Go 1.26.5 (Server 20260806) Fixes GO-2026-4946, GO-2026-4947, and GO-2026-4948 in crypto/tls and os.
GO-2026-6061 / GHSA-hrxh-6v49-42gf 4dfc27ce3 Updates gRPC to v1.82.1 (xDS RBAC engine and HTTP/2 transport fixes) and golang.org/x/text to v0.39.0 (GO-2026-5970 / CVE-2026-56852).
GO-2026-5841 c1aec0518 Updates github.com/klauspost/compress to v1.18.7.
Go 1.27.1 & September stack refresh Go 1.27.1 via 43f4bb7ed, edc8be6ed, 4d6e1ea8e Upgrades toolchain to Go 1.27.1, updates etcd client (v3.7.1), jwx (v3.0.13), and klauspost/compress (v1.19.2), and converges on upstream minio-go v7.3.1 (Server 20260903).
GO-2026-6354 / GO-2026-6355 edf36bcbf Updates golang.org/x/crypto to v0.56.0, fixing SFTP/SSH channel deadlock DoS (startSFTPServer → sftp.Server.Listen → ssh.NewServerConn).
CVE-2026-84304 gRPC v1.83.1 Fixes unauthenticated heap exhaustion on fragmented HTTP/2 DATA frames in gRPC-Go.
CVE-2026-79921 / GHSA-6c5v-hqjr-5xxp d63c92e39 (Server 20260916) Updates amqp091-go to v1.14.0, preventing a malicious AMQP broker from exhausting memory via oversized frames.
Go 1.27.2 & October dependency refresh 0cd388c66 (Server 20261018) Upgrades to Go 1.27.2, x/net v0.61.0, x/crypto v0.58.0, x/text v0.43.0, and go-jose/v4 v4.1.6 (GHSA-mgcc-cww5-fp2q).

Operationally Significant Security-Related Fixes

Change Fixed By Summary
Replicated Object Lock timestamp ordering f4c1286c9 (Server 20260903) Replicated CopyObject previously rebuilt metadata from the incoming request before comparing replication timestamps and stored the legal-hold timestamp under the retention key, allowing a stale replica event to turn off a newer legal hold or shorten a newer retention period. The handler now captures stored state first, applies replica updates only when their timestamp is newer, and keeps retention and legal-hold timestamps under distinct keys. See Object Lock Replication Ordering.
ldaps:// TLS configuration propagation ce1c537eb (RELEASE.2026-03-25) Restores TLS configuration propagation for ldaps:// DialURL() connections so MINIO_IDENTITY_LDAP_TLS_SKIP_VERIFY and custom root CAs take effect.
Signed-field and policy-input alignment #177, 87d8b5967 (Server 20260916) Rejects ambiguous repeated x-amz-copy-source headers, derives s3:signatureAge statelessly from the signed X-Amz-Date, and binds s3:x-amz-content-sha256 policy evaluation to the verified payload digest.
Cross-pool conditional PUT and DELETE #207, 5e7d60308 (Server 20260916) Evaluates conditional write and delete preconditions (If-Match, If-None-Match) against the authoritative logical object under a shared cross-pool lock so a stale copy in an older pool cannot authorize an overwrite. See Multi-Pool Object Consistency.

Ledger Provenance

This page is maintained from the advisory ledger originally tracked in pgsty/silo (docs/security/advisories.md through f99ed829b5eba / 40220bd836cb) and aligned with the Component Version Matrix. Full root-cause traces, rejected design alternatives, and verification commands live in the linked Security Chronicle and Design Notes articles.