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.

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
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 four 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 Docsy, link and build fixes, ongoing maintenance, and translation into Chinese. The commit history is the complete record of changes.

Not every page is derived from MinIO. The blog, download and release pages, this section, and PGSTY SILO-specific content are original works of the PGSTY SILO project. Pages that do carry upstream material say so in a notice at the bottom of the page, and pages that PGSTY SILO has changed beyond the format conversion link to their own 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-09-16, 50 community contributors are credited in SILO and related projects. The roll includes maintainers and every human issue / PR author, plus the previously acknowledged security disclosure.

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 separately from the original PR status. A closed issue does not necessarily mean a fix, and merged source does not imply a published release. Automated accounts are excluded. Upstream authorship remains in Git history and copyright notices.

@Vonng @ZouhairCharef @mfredenhagen @pinginfo @ycjlin @waterkip @Dansyuqri @mrjavadseydi @h5vx @nikitapogromsky @Aeirx @magicxor @davinkevin @metaneutrons @mikemikimike @julienlau @chodorenko @sulin37392 @lem21h @vampywiz17 @cbornet @orenyomtov @jiri-pejchal @AEGEGE @mosesdd @Xavier-777 @jiadzh @AntonOfTheWoods @TLINDEN @zylpsrs @nsanitate @makinikm @spaceg00se-r @heroes1412 @chalukyaj @jvasile @Kesavaambati @redfoxfox @kuldeep-link11 @meesudzu @pmezhuev @kh0mka @bagutzu @liuhaodongliu990-cmyk @DestroyLee @sargarass @mumu-lab @haiming236 @tiredenzo @aschyolkin

Merged pull requests

Contributor Contribution Record
@Vonng Maintains SILO, Console, mcli, shared packages, releases, and documentation pgsty/silo: Merged PRs (77)
PRs closed without merging: pgsty/silo#155, pgsty/silo#195
pgsty/silo: Closed issues (60)
Open issues: pgsty/silo#199, pgsty/silo#200, pgsty/silo#201, pgsty/silo#202, pgsty/silo#203
pgsty/silo-console: Merged PRs (22)
pgsty/silo-console: Closed issues (32)
Open issues: pgsty/silo-console#32, pgsty/silo-console#34
pgsty/mc: Merged PRs (24)
pgsty/mc: Closed issues (18)
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.pgsty.com: Merged PRs (24)
Open PRs: pgsty/silo.pgsty.com#25
@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
@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; contributed access-frequency ILM and S3-compatible multipart listing proposals Merged PRs: pgsty/silo#60, pgsty/silo#132, pgsty/silo#198
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 remains unreleased.
@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
@Aeirx Preserved Object Lock legal-hold headers in federated CopyObject Merged PRs: pgsty/silo#172

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.
@julienlau Reported MRF queue and delete-marker retry defects; contributed repair proposals, tests, and documentation 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.
@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.
@sulin37392 Proposed dependency updates PRs closed without merging: pgsty/silo#8
@lem21h Proposed robustness and goroutine improvements PRs closed without merging: pgsty/silo#36

Issue reports

Contributor Contribution Record
@vampywiz17 Reported LDAP TLS and Console login regressions Closed issues: pgsty/silo#15, pgsty/silo#108
@cbornet Reported multipart and streaming checksum defects and missing-bucket semantics Closed issues: pgsty/silo#31, pgsty/silo#32, pgsty/silo#107
@orenyomtov Reported the unsigned-header CopyObject cross-object read (SN-2026-011) Security disclosure credited in SN-2026-011, with the source fix in #173. This credit is retained separately from public issue/PR authorship.
@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.
@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
@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
@kh0mka Reported inter-node I/O timeouts and OIDC configuration-fetch failures Closed issues: pgsty/silo#51, pgsty/silo#154
@bagutzu Requested KES-compatible external KMS and OpenBao support Open 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 Open issues: pgsty/silo#197
@aschyolkin Reported a data race in CPU metrics collection Open issues: pgsty/silo#210

Audit scope

Counts below come from every page of the GitHub issue / PR records, across all states, including automated accounts. There are 49 distinct human public issue / PR authors, plus 1 credited security reporter. Excluded automated accounts: Copilot, dependabot[bot].

Repository Issues Pull requests
pgsty/silo 108 99
pgsty/silo-console 35 22
pgsty/mc 18 25
pgsty/silo-pkg 0 9
pgsty/silo-go 0 0
pgsty/kes 0 0
pgsty/silo.pgsty.com 1 26
pgsty/minio-docs 0 0
Total 162 181

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

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#204

Open issues: pgsty/silo#199, pgsty/silo#200, pgsty/silo#201, pgsty/silo#202, pgsty/silo#203

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

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#33, pgsty/silo-console#35, pgsty/silo-console#36, pgsty/silo-console#37

Open issues: pgsty/silo-console#32, pgsty/silo-console#34

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

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

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

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#26, pgsty/silo.pgsty.com#27, pgsty/silo.pgsty.com#28, pgsty/silo.pgsty.com#29

Open PRs: pgsty/silo.pgsty.com#25

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 a vulnerability in PGSTY SILO, and where fixed issues are published.

Current release boundary: latest Server 20260903 remains affected by SN-2026-011, fixed on main. A client/pkg release is separate from publication of a fixed Server; see the component matrix.

Security maintenance is the reason this fork exists. Upstream minio/minio is archived; Silo tracks CVEs against the codebase, backports or writes the fixes, and publishes what it found.

Reporting a vulnerability

Report undisclosed high-severity vulnerabilities through a private channel, not in a public issue.

Include the affected release, a description of the impact, and reproduction steps if you have them — this helps us confirm the issue faster.

We will do our best to respond within a reasonable time, but note that Silo is a community project: we promise no fix SLA and no guaranteed response time.

Vulnerabilities in upstream MinIO

Silo is a fork, so the vast majority of findings apply to minio/minio as well. The upstream repository is archived and no longer accepts reports — precisely the gap this project fills. Report to Silo; where an issue affects other distributions of the same code, the project coordinates disclosure with them.

Where fixes are published

  • Advisory Ledger — the stable index of every CVE and fork-local SN- identifier: the fix commit, affected area, exploitability, release boundary, and dependency security updates.

  • Security Chronicle — one article per investigated CVE: the original threat model, the back-and-forth of the review, the rejected alternatives, the invariant finally settled on, the verifying evidence, and the compatibility cost.

  • Release Notes — the release each fix first shipped in and became publicly available.

Hardening your own deployment

Reporting is one half; configuration is the other. See the security checklist for deployment hardening, and network encryption for TLS setup.

See also

  • License — the software is provided as-is, without warranty of any kind
  • Attribution — copyright and derivation of this documentation

7 - Security Advisories

The SILO advisory ledger: CVE and SN identifiers, fix commits, affected areas, release boundaries, and dependency security updates.

This ledger summarizes fork-specific security fixes and closely related upgrade-impacting security notes in pgsty/silo. It is intentionally narrower than a changelog and focuses on release-impacting security behavior. Each advisory with its own investigation also has an article in the Security Chronicle; this page is the stable index of identifiers, fixes, and release boundaries.

Entries carry a CVE identifier where one exists. Where none does, they carry a fork-local SN-<year>-<sequence> identifier so that a finding without a CVE can still be referenced stably from release notes, commits and issues. An SN- identifier is not a CVE and is not registered in any vulnerability database; it is deliberately not written in CVE form so that scanners do not mistake it for one. Upstream minio/minio is archived, so for findings in inherited code there is no upstream maintainer to coordinate a CVE assignment with. SN-2026-001 is the streaming-flush regression in trackingResponseWriter, which is a reliability defect rather than a security one and is tracked in the release notes rather than here.

Current release boundary

Verified 2026-09-16. The latest published Server is RELEASE.2026-09-03T13-18-01Z. SN-2026-011 is fixed on main but remains present in that release and all earlier public Server releases. A newer mcli, pkg or standalone Console does not patch an installed Server. See the component matrix for source pins.

Inherited upstream advisory baseline

The first Silo community release was cut from upstream history that already contained the following security fix. Upstream and Silo links are both recorded even when the fork preserves the same commit object and SHA; that identity is the inheritance evidence, not a claim that Silo independently reimplemented the patch.

ID Upstream remediation Silo inheritance Release note
CVE-2025-62506 minio/minio#21642, merged as c1a49490 The same commit object is present as pgsty/silo@c1a49490 Resets DenyOnly while evaluating a restricted session policy so service or STS accounts cannot mint an unrestricted child service account. Upstream first fixed this in RELEASE.2025-10-15T17-29-55Z; every Silo community release, beginning 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 article.

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 Chronicle
CVE-2026-34204 56fa63bfd Replication metadata handling Chronicle
CVE-2026-39414 3252d5b7f S3 Select oversized record handling Chronicle
CVE-2026-41145 f444b6f37 Unsigned-trailer PUT and multipart upload authentication Chronicle
CVE-2026-40344 efb6e5b00 Snowball auto-extract authentication Chronicle
CVE-2026-42600 73ac52472 Internode ReadMultiple storage-REST endpoint Chronicle
SN-2026-002 ca7baa670 and follow-ups Internode storage-REST and Grid RPC payloads Chronicle · release note
SN-2026-003 silo-pkg v3.11.0 and 2f55347f7 S3/IAM bucket-policy condition values release note
Not a vulnerability fe6dc4780 Client source address (aws:SourceIp, audit remotehost, event Host) Chronicle
SN-2026-004 silo-pkg v3.11.0 and 97b7d2804 IAM policy evaluation of bucket-level actions Chronicle · release note
SN-2026-005 silo-pkg v3.12.0 and eee05a17c IAM named-policy and service-account policy writes release note
SN-2026-006 b73581b05, c4fd97d0b (#82) SSE-C reads of zero-byte objects Chronicle
SN-2026-007 474cd5801, 74c97d005, 21870fa2e (#84) GetObjectAttributes on SSE-C objects Chronicle
SN-2026-008 PR #101 (938603458 through 04b097fd9) Internal replication request headers Chronicle
SN-2026-009 58735ee38, 229fe2b3c (PR #73) Admin SetUserStatus / SetGroupStatus Chronicle
SN-2026-010 PR #104 (75a6734e4 through d2d47a41f, #58) DeleteObject/DeleteObjects with explicit versionId Chronicle
SN-2026-011 123325430 SigV4 signed-header coverage; x-amz-copy-source dispatch Chronicle

Upgrade and compatibility notes for each entry follow. Entries whose full investigation is told in a chronicle article are summarized here; follow the link for the threat model, rejected alternatives, and verification.

CVE-2026-33322 — OIDC STS JWT algorithm confusion

Remote exploitation: yes. Closes JWT algorithm confusion by removing HMAC/shared-secret verification and requiring JWKS-backed verifier keys. Breaking change: providers issuing HS256, HS384, or HS512 tokens for these STS flows must switch to JWKS-backed RSA or ECDSA signing before upgrading. PS256 and EdDSA are not currently supported.

CVE-2026-33419 — LDAP STS username enumeration

Remote exploitation: yes. Prevents username enumeration by unifying unknown-user and bad-password responses (both now 400 InvalidParameterValue) and adds in-memory login throttling. The final June design limits by source IP only; it removed the shared username bucket because attackers could use it to lock out a specific account. Limits are per-node and in-memory; the source address trust policy is configurable separately. See the LDAP STS chronicle for the successive repairs.

CVE-2026-34204 — replication metadata injection

Remote exploitation: yes. Blocks untrusted X-Minio-Replication-* headers from being smuggled into internal replication metadata and leaving objects unreadable. Upgrade any server that accepts untrusted PutObject or CopyObject requests, which in practice means almost any production server that accepts writes.

CVE-2026-39414 — S3 Select oversized records

Remote exploitation: yes. Rejects oversized CSV and line-delimited JSON records with OverMaxRecordSize instead of buffering them unchecked. The April fix initially missed the SIMD JSON path; the June follow-up routes all JSON Lines through the bounded json.PReader, closing that bypass. See the S3 Select chronicle.

CVE-2026-41145 — unsigned-trailer authentication bypass

Remote exploitation: yes. Closes the query-string authentication bypass in unsigned-trailer streaming requests. Upgrade if clients can reach object write endpoints using the STREAMING-UNSIGNED-PAYLOAD-TRAILER content-sha256 mode together with query-string SigV4 credentials.

CVE-2026-40344 — Snowball auto-extract authentication

Remote exploitation: yes. Verifies request authentication before tar extraction in Snowball unsigned-trailer flows. Upgrade if you use PutObjectExtract or Snowball uploads.

CVE-2026-42600 — internode ReadMultiple path traversal

Remote exploitation: yes; cluster-root JWT required. Removes the unused endpoint that allowed path traversal outside configured drive roots. Upgrade distributed-erasure deployments. Single-node deployments do not register this route.

SN-2026-002 — internode payload containment

Remote exploitation: yes; cluster-root / internode JWT required. Completes CVE-2026-42600: its fix removed one endpoint that exercised the gap; the gap itself — request bodies and grid frames never reaching the validity middleware, and no containment in the storage layer — remained across three further protocol surfaces. Closes path traversal on both the volume and path axes (including the peer-S3 bucket RPCs, which bypass the storage-REST wrapper entirely), an unrecoverable divide-by-zero that killed a node per RPC frame, metadata that reported truncated shards as intact, and three allocations sized from caller-declared values. Upgrade distributed-erasure deployments; single-node deployments register none of these routes. No S3 API behaviour changes; object keys containing . or .. path segments were already refused at the S3 boundary.

SN-2026-003 — policy condition value sources

Remote exploitation: yes (policy-dependent). Prevents raw request entries that spell condition-key names from shadowing or synthesizing internal condition values; confines s3:signatureAge to verified SigV4 presigned requests; separates query-only list fields from header-backed x-amz-* fields; and stops client request tags from impersonating stored existing-object tags. The compatible query form remains for storage class and upload tagging on handlers that consume it; an explicitly present header wins, including an empty header. Use request-tag conditions only on operations that consume tags. Header-only x-amz-* policy keys no longer accept query substitutes. See condition value sources and precedence.

Client source address trust — opt-in hardening, not a vulnerability

Fixed by fe6dc4780; no CVE assigned (the default matches upstream, and upstream’s own position is that IP-based restrictions are impractical without reliable source-IP visibility). Adds an enforceable forwarded-header trust boundary, MINIO_API_TRUSTED_PROXIES. Set to a list of addresses or CIDR blocks, forwarded headers are believed only from those peers and forwarding chains are read right-to-left past listed hops — which also stops the client-supplied left-most entry that an appending proxy leaves in place. Set to none, no forwarded header is believed at all. This is the guarantee _MINIO_API_XFF_HEADER=off never provided. No behaviour change for any existing deployment; the variable is opt-in and inert when unset. If you use IpAddress or NotIpAddress conditions, note that they were not enforceable before this change; the operator contract — including why the allowlist must name proxies rather than subnets and why multi-node deployments must include their own node addresses — is in the chronicle article and the settings reference.

SN-2026-004 — object-grant bucket reach

Remote exploitation: yes (policy-dependent). Withholds twelve sensitive bucket-level writes from an object-only resource pattern (arn:aws:s3:::bucket/*): PutBucketPolicy, DeleteBucketPolicy, PutBucketObjectLockConfiguration, PutBucketVersioning, PutReplicationConfiguration, PutBucketLifecycle, DeleteBucket, ForceDeleteBucket, PutBucketCors, DeleteBucketCors, PutBucketQOS, PutInventoryConfiguration. This is an authorization tightening; read the chronicle article before upgrading if you write your own bucket-scoped policies. Add the bare bucket ARN (arn:aws:s3:::bucket) alongside the wildcard form in any statement that legitimately grants one of the twelve. Built-in canned policies are unaffected; Deny statements and NotResource exclusions are untouched. MINIO_API_LEGACY_BUCKET_RESOURCE_MATCH=on restores the historical behaviour in full; it is read once at startup.

SN-2026-005 — bare ARN prefix rejection

No direct remote exploit; policy-dependent. Rejects S3, S3 Tables, and KMS ARN namespace prefixes that name no resource, including their historical *arn:... serialization, in both Resource and NotResource, when creating named policies and when creating or updating service-account session policies. Existing policies keep loading, matching, importing, and replicating with unchanged runtime behavior, but a policy containing such a prefix cannot be submitted unchanged; replace it with the intended concrete resource, or use an explicit wildcard such as arn:aws:s3:::* only when all resources are intended. A “bare ARN prefix” (arn:aws:s3:::) is distinct from the valid “bare bucket ARN” of SN-2026-004 (arn:aws:s3:::bucket). IAM import, site-replication receive paths, stored-policy loading, and STS inline policies remain on the permissive compatibility path in this release. See the pkg v3.12.0 release note.

SN-2026-006 — SSE-C zero-byte reads

Remote exploitation: yes; requires read access to the object. Zero-byte SSE-C objects never unsealed the customer-provided key, so a wrong key was accepted with 200 instead of 403, and a copy or new version could be created under a key of the caller’s choosing without knowing the current one. Wrong keys now fail with 403 AccessDenied as on AWS; correct keys behave as before and no client change is needed. Inherited from upstream; every earlier release is affected.

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

Remote exploitation: yes; requires read access to the object. Attributes of SSE-C objects were returned without authenticating the customer key, and a bare X-Minio-Source-Replication-Request header skipped the check entirely. A wrong key returns 403, a replication marker without the key returns 400; replication peers holding s3:ReplicateObject are unaffected. Inherited from upstream.

SN-2026-008 — internal replication headers

Remote exploitation: yes; any authenticated principal that can read or write the object. Completes CVE-2026-34204: internal headers such as X-Minio-Source-Etag, X-Minio-Source-Mtime, X-Minio-Source-Replication-Request, the replication SSE key headers, and X-Amz-Bucket-Replication-Status were still trusted on presence in most handlers. Replication semantics now require the exact marker value together with s3:ReplicateObject or s3:ReplicateDelete; other requests have these headers removed after signature verification. Site replication service accounts and bucket-replication targets that already hold the replication permissions are unaffected. Inherited from upstream.

SN-2026-009 — user/group status authorization

Remote exploitation: yes; authenticated admin API. Status changes were authorized against admin:EnableUser / admin:EnableGroup regardless of the requested status, so a principal allowed only to enable could also disable, and vice versa. Enable and disable now require the action matching the target status. Policies that grant only one of the pair lose the other operation; admin:* and the built-in consoleAdmin policy are unaffected. Inherited from upstream.

SN-2026-010 — explicit version delete authorization

Remote exploitation: yes; authenticated S3 API. Explicit version deletes were authorized as s3:DeleteObject with only a deny check on s3:DeleteObjectVersion, diverging from AWS. Explicit version deletes now require s3:DeleteObjectVersion. Two policy effects: principals granted only s3:DeleteObject can no longer delete specific versions, and a policy that relied on Deny s3:DeleteObject to block permanent deletes must also deny s3:DeleteObjectVersion, because Allow s3:* now permits explicit version deletes. Replication targets keep the s3:ReplicateDelete contract. Inherited from upstream.

SN-2026-011 — unsigned x-amz-* headers and x-amz-copy-source

Remote exploitation: yes; a party holding only a presigned PUT URL, or any signed PUT, needs no credentials of its own. SigV4 verification only checked that each named signed header was present and never inspected the x-amz-* headers that actually arrived, while the router dispatches any PUT carrying x-amz-copy-source to CopyObjectHandler. An unsigned x-amz-copy-source therefore turned a one-object write grant into a server-side copy of any object the signing key can read, executed as the signer; both the presigned and Authorization-header paths were affected, and where the destination bucket allows anonymous GetObject the copied private bytes become readable unauthenticated. Any unsigned x-amz-* request header is now refused with AccessDenied on both paths, matching AWS S3 (AWS returns 403; Silo returns 400 AccessDenied, otherwise identical). Every AWS SDK, minio-go, and mc already signs its x-amz-* headers, so legitimate clients need no change. Inherited unchanged from upstream minio/minio; every earlier release, including the latest published Server 20260903, is affected. Reported by Oren Yomtov; a CVE has been requested. See the chronicle article and the signed-header design record.

Dependency security updates

Rows list the absorbed fix and the commit or release that first carried it. Reachability and deployment exposure still need to be judged per release: an absorbed dependency fix is not a claim that the vulnerability was reachable in Silo.

ID / date Fixed by Summary
2026-03-25 release RELEASE.2026-03-25 OTel SDK, Paho MQTT and x/crypto updates absorb CVE-2026-24051, CVE-2025-10543 and CVE-2025-58181; shipped together with the LDAP TLS regression fix below. Not every dependency upgrade in that release was a reachable vulnerability.
CVE-2026-34986 68e0ba997 Upgrades go-jose to v4.1.4.
CVE-2026-39883 1869bd30b, e4fa06394 Updates OpenTelemetry dependencies.
Go 1.26.2 stdlib db4c0fd5e (release lineage 9a4b3cd92) CVE-2026-32280 and CVE-2026-32281 (crypto/x509), CVE-2026-32283 (crypto/tls); toolchain/stdlib only, no unrelated dependency rolling.
Go 1.26.4 refresh df627ff89, 3e61b1d3a CVE-2026-32952 (Azure NTLM), CVE-2026-41602 (Thrift), plus further NATS/Prometheus security fixes as the dependency-maintenance layer of the 06-18 release.
Upstream Go security fixes Go 1.26.5 Bumps the required toolchain to Go 1.26.5, which includes security fixes to crypto/tls and os.
GO-2026-6061 / GHSA-hrxh-6v49-42gf 4dfc27ce3: gRPC v1.82.1 with x/text v0.39.0 gRPC xDS RBAC engine and HTTP/2 transport fixes (GO-2026-5970 / CVE-2026-56852, an infinite loop on invalid input in x/text, landed in the same refresh). Existing MVS pins were kept; the security update was not used to roll unrelated dependencies.
GO-2026-5841 f1357853d: klauspost/compress v1.18.7 govulncheck judged the affected dictionary symbols unreachable, but the known-affected direct dependency was still not carried; updated to the first fixed version.
Toolchain and dependency refresh Go 1.27.1 via 43f4bb7ed, edc8be6ed, 4d6e1ea8e Moves the toolchain to Go 1.27 (1.27.1 as of the release) and refreshes the dependency stack (etcd client v3.7.1, jwx v3.0.13, klauspost/compress v1.19.2). The pre-release cleanup then returns to upstream minio-go (v7.3.1 pre-release) and retires the silo-go fork; govulncheck reports no reachable vulnerability on the release candidate.
GO-2026-6354 / GO-2026-6355 golang.org/x/crypto v0.56.0 (edf36bcbf) Updates x/crypto/ssh to the first fixed version for denial of service on deadlocked undecided and established channels. Reachable through the SFTP server (startSFTPServersftp.Server.Listenssh.NewServerConn); every earlier release that enables SFTP is affected.
CVE-2026-84304 gRPC v1.83.1 Updates gRPC-Go to the first fixed version for unauthenticated heap exhaustion through highly fragmented HTTP/2 DATA frames. Silo pulls gRPC transitively rather than registering a gRPC server itself, but selects the fixed version for the complete module graph.
GO-2026-5970 / CVE-2026-56852 x/text v0.39.0 Updates x/text to the first fixed version for an infinite loop on invalid input.

Operationally significant security-related fixes

Change Fixed by Summary
Replicated Object Lock updates ignored their timestamps f4c1286c9, included in Server 20260903 A replicated CopyObject rebuilt the metadata from the request before comparing replication timestamps, so the stored retention and legal-hold timestamps were never seen: any replica update was applied regardless of order, and the legal-hold timestamp was written under the retention key. A stale replica could therefore turn a newer legal hold off or shorten a newer retention. The stored state is now captured first, a replica update is applied only when its timestamp is newer, a stale one leaves the stored state in place, and each timestamp is kept under its own key. Inherited from upstream; builds preceding the fix are affected.
LDAP TLS regression ce1c537eb, released in RELEASE.2026-03-25 Restores TLS configuration propagation for ldaps:// DialURL() connections so MINIO_IDENTITY_LDAP_TLS_SKIP_VERIFY and custom root CAs work again.

Attribution of this ledger

This page is maintained from the ledger previously carried in the repository at docs/security/advisories.md, updated through verified main 40220bd836cb (2026-09-16). Release status statements are calibrated against the component matrix; each fix’s investigation, review, and verification detail lives in the linked chronicle article or release note.