<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>PGSTY SILO Blog on SILO</title>
    <link>https://silo.pgsty.com/blog/</link>
    <description>Recent content in PGSTY SILO Blog on SILO</description>
    <generator>Hugo</generator>
    <language>en</language>
    
    
    
      <lastBuildDate>Mon, 24 Aug 2026 20:49:19 +0800</lastBuildDate>
    
    
      <atom:link href="https://silo.pgsty.com/blog/index.xml" rel="self" type="application/rss+xml" />
    
    <item>
        <title>Silo Console 2.1.0 Released</title>
        <link>https://silo.pgsty.com/blog/release/console-2.1.0/</link>
        <pubDate>Thu, 06 Aug 2026 00:00:00 +0000</pubDate>
        
        <guid>https://silo.pgsty.com/blog/release/console-2.1.0/</guid>
        <description>&lt;p&gt;&lt;strong&gt;Published:&lt;/strong&gt; 2026-08-06 · &lt;strong&gt;Version:&lt;/strong&gt; &lt;a href=&#34;https://github.com/pgsty/silo-console/releases/tag/v2.1.0&#34;&gt;v2.1.0&lt;/a&gt; · &lt;strong&gt;Repository:&lt;/strong&gt; &lt;a href=&#34;https://github.com/pgsty/silo-console&#34;&gt;pgsty/silo-console&lt;/a&gt;&lt;/p&gt;&#xA;&lt;p&gt;SILO Console 2.1.0 is the first feature release after the independent 2.0.0. It does three things:&lt;/p&gt;&#xA;&lt;ol&gt;&#xA;&lt;li&gt;&lt;strong&gt;Speaks two languages&lt;/strong&gt; — every console screen, help topic, and documentation link now renders in English or Chinese, behind a toggle on every page, with zero new runtime dependencies;&lt;/li&gt;&#xA;&lt;li&gt;&lt;strong&gt;Reads the right metrics&lt;/strong&gt; — the dashboard moves off the MinIO Metrics V2 names onto V3, with explicit handling for the semantics V3 changed underneath it;&lt;/li&gt;&#xA;&lt;li&gt;&lt;strong&gt;Stops lying in edge cases&lt;/strong&gt; — a select-all that matched what a bulk action would delete, placeholders that survive object names containing &lt;code&gt;$&amp;amp;&lt;/code&gt;, timestamps that carry a timezone, and empty metrics that read &amp;ldquo;no data&amp;rdquo; instead of a fabricated &lt;code&gt;0&lt;/code&gt;.&lt;/li&gt;&#xA;&lt;/ol&gt;&#xA;&lt;p&gt;This is a &lt;strong&gt;minor release&lt;/strong&gt;. No environment variable, module path, API contract, binary name, or data layout changes. Upgrading is a binary or image swap.&lt;/p&gt;</description>
      </item>
    <item>
        <title>Silo Console 2.0.0 Released</title>
        <link>https://silo.pgsty.com/blog/release/console-2.0.0/</link>
        <pubDate>Tue, 04 Aug 2026 00:00:00 +0000</pubDate>
        
        <guid>https://silo.pgsty.com/blog/release/console-2.0.0/</guid>
        <description>&lt;p&gt;&lt;strong&gt;Published:&lt;/strong&gt; 2026-08-04 · &lt;strong&gt;Version:&lt;/strong&gt; &lt;a href=&#34;https://github.com/pgsty/silo-console/releases/tag/v2.0.0&#34;&gt;v2.0.0&lt;/a&gt; · &lt;strong&gt;Repository:&lt;/strong&gt; &lt;a href=&#34;https://github.com/pgsty/silo-console&#34;&gt;pgsty/silo-console&lt;/a&gt;&lt;/p&gt;&#xA;&lt;p&gt;SILO Console 2.0.0 is the first major release of this object-storage administration console as an independent project. Continuing from the &lt;code&gt;georgmangold/console&lt;/code&gt; v1.9.1 maintenance line, it accomplishes three things:&lt;/p&gt;&#xA;&lt;ol&gt;&#xA;&lt;li&gt;&lt;strong&gt;An independent identity&lt;/strong&gt; — product name, visual system, documentation entry points, source attribution, and the release pipeline all move into the SILO project, while the Go module path, environment variables, and other compatibility contracts are deliberately retained;&lt;/li&gt;&#xA;&lt;li&gt;&lt;strong&gt;A redesigned interface&lt;/strong&gt; — the login page, theme system, dashboard, and console details are reworked under one design language, backed by a regenerated brand icon set;&lt;/li&gt;&#xA;&lt;li&gt;&lt;strong&gt;Hardened engineering&lt;/strong&gt; — the embedded frontend payload shrinks from roughly 10MB to 3.5MB, known dependency vulnerabilities drop to zero, and a batch of inherited defects — including a real runtime data race — is fixed.&lt;/li&gt;&#xA;&lt;/ol&gt;&#xA;&lt;p&gt;Before publication this release went through two independent review passes: a full code review with commit-history restructuring, followed by an adversarial re-verification (exhaustive asset validation, HTTP semantics probing, full routing regression, and smoke tests against the published artifacts themselves).&lt;/p&gt;</description>
      </item>
    <item>
        <title>Silo Pkg 3.11.0 Released</title>
        <link>https://silo.pgsty.com/blog/release/pkg-3.11.0/</link>
        <pubDate>Tue, 04 Aug 2026 00:00:00 +0000</pubDate>
        
        <guid>https://silo.pgsty.com/blog/release/pkg-3.11.0/</guid>
        <description>&lt;p&gt;&lt;strong&gt;Release date:&lt;/strong&gt; 2026-08-04 · &lt;strong&gt;Version:&lt;/strong&gt; &lt;a href=&#34;https://github.com/pgsty/silo-pkg/releases/tag/v3.11.0&#34;&gt;v3.11.0&lt;/a&gt; · &lt;strong&gt;Commit:&lt;/strong&gt; &lt;a href=&#34;https://github.com/pgsty/silo-pkg/commit/d8b1fa7&#34;&gt;&lt;code&gt;d8b1fa7&lt;/code&gt;&lt;/a&gt; · &lt;strong&gt;Repository:&lt;/strong&gt; &lt;a href=&#34;https://github.com/pgsty/silo-pkg&#34;&gt;pgsty/silo-pkg&lt;/a&gt;&lt;/p&gt;&#xA;&lt;p&gt;This is the fork&amp;rsquo;s &lt;strong&gt;first pinned release&lt;/strong&gt;. It restores the IAM bucket/object resource boundary reported as upstream &lt;a href=&#34;https://github.com/minio/minio/issues/20449&#34;&gt;minio/minio#20449&lt;/a&gt;: a policy condition-key bypass fix, three LDAP connection defects, a certificate watcher leak, a seeded-RNG defect, and the module&amp;rsquo;s real minimum Go version.&lt;/p&gt;&#xA;&lt;div class=&#34;td-callout td-callout--warning&#34; role=&#34;note&#34;&gt;&#xA;  &lt;div class=&#34;td-callout__title&#34;&gt;&lt;i class=&#34;td-callout__icon fa-solid fa-triangle-exclamation&#34; aria-hidden=&#34;true&#34;&gt;&lt;/i&gt;&lt;span class=&#34;td-callout__label&#34;&gt;Warning&lt;/span&gt;&lt;/div&gt;&#xA;  &lt;div class=&#34;td-callout__body&#34;&gt;&#xA;&lt;p&gt;&lt;strong&gt;Two things to check before upgrading&lt;/strong&gt;&lt;/p&gt;&#xA;&lt;ol&gt;&#xA;&lt;li&gt;&lt;strong&gt;This release tightens authorization.&lt;/strong&gt; Twelve bucket-level write actions are no longer reachable through an object-only resource pattern such as &lt;code&gt;arn:aws:s3:::bucket/*&lt;/code&gt;. If you write your own bucket-scoped policies, read &lt;a href=&#34;https://silo.pgsty.com/blog/release/pkg-3.11.0/#bucket-boundary&#34;&gt;The IAM bucket/object boundary&lt;/a&gt; — the fix is one line of policy for anyone affected, and &lt;code&gt;MINIO_API_LEGACY_BUCKET_RESOURCE_MATCH=on&lt;/code&gt; restores the previous behaviour in full.&lt;/li&gt;&#xA;&lt;li&gt;&lt;strong&gt;The condition-key fix still needs its server half.&lt;/strong&gt; The policy lookup change and the server changes that reserve internal condition-key names each cover one half of that problem. The companion server work exists in &lt;code&gt;pgsty/minio&lt;/code&gt; commit &lt;code&gt;2f55347f7&lt;/code&gt; but is not yet on public &lt;code&gt;origin/master&lt;/code&gt;, and no published Silo server release contains it. Verify that a later server release explicitly includes it.&lt;/li&gt;&#xA;&lt;/ol&gt;&#xA;  &lt;/div&gt;&#xA;&lt;/div&gt;&lt;h2 id=&#34;what-is-this&#34;&gt;What This Repository Is&#xA;&lt;/h2&gt;&#xA;&lt;p&gt;&lt;code&gt;silo-pkg&lt;/code&gt; is a maintained fork of &lt;a href=&#34;https://github.com/minio/pkg&#34;&gt;minio/pkg&lt;/a&gt;, carrying fixes needed by community MinIO forks that the now commercially driven upstream no longer accepts. The repository was renamed from &lt;code&gt;pgsty/minio-pkg&lt;/code&gt; on 2026-08-02.&lt;/p&gt;</description>
      </item>
    <item>
        <title>CopyObject Checksums Must Cover Logical Object Bytes</title>
        <link>https://silo.pgsty.com/blog/design/copyobject-checksum/</link>
        <pubDate>Mon, 24 Aug 2026 00:00:00 +0000</pubDate>
        
        <guid>https://silo.pgsty.com/blog/design/copyobject-checksum/</guid>
        <description>When destination compression was enabled, SILO could persist a CopyObject checksum of the S2 storage stream instead of the logical S3 object. This record explains the plaintext-reader invariant, verification boundary, related fixes, and remediation of older objects.</description>
      </item>
    <item>
        <title>DSN-Only Database Notifications: A Compatibility Boundary for #53</title>
        <link>https://silo.pgsty.com/blog/design/notify-url/</link>
        <pubDate>Sun, 23 Aug 2026 00:00:00 +0000</pubDate>
        
        <guid>https://silo.pgsty.com/blog/design/notify-url/</guid>
        <description>SILO will keep PostgreSQL and MySQL notification targets, but standardize their configuration on complete connection strings. Pre-KV discrete database fields are an unsupported migration input and must abort server startup with an explicit error instead of being accepted and silently disabling every bucket notification.</description>
      </item>
    <item>
        <title>Preview Text, Never Execute It: SILO Console Text Preview PRD</title>
        <link>https://silo.pgsty.com/blog/design/console-text-preview/</link>
        <pubDate>Sun, 23 Aug 2026 00:00:00 +0000</pubDate>
        
        <guid>https://silo.pgsty.com/blog/design/console-text-preview/</guid>
        <description>The accepted PRD for previewing small log, text, JSON, and XML objects in SILO Console as bounded, strict UTF-8 text—never as a same-origin executable document.</description>
      </item>
    <item>
        <title>mcli 20260806 Released</title>
        <link>https://silo.pgsty.com/blog/release/mcli-20260806/</link>
        <pubDate>Thu, 06 Aug 2026 00:00:00 +0000</pubDate>
        
        <guid>https://silo.pgsty.com/blog/release/mcli-20260806/</guid>
        <description>&lt;p&gt;&lt;strong&gt;Published:&lt;/strong&gt; 2026-08-06 · &lt;strong&gt;Version:&lt;/strong&gt; &lt;a href=&#34;https://github.com/pgsty/mc/releases/tag/RELEASE.2026-08-06T00-00-00Z&#34;&gt;RELEASE.2026-08-06T00-00-00Z&lt;/a&gt;&lt;/p&gt;&#xA;&lt;p&gt;Two days after &lt;a href=&#34;https://silo.pgsty.com/blog/release/mcli-20260804/&#34;&gt;mcli 20260804&lt;/a&gt;, this release completes the client&amp;rsquo;s transition to the Silo identity. It is deliberately a pure rebranding and lockdown release: &lt;code&gt;--version&lt;/code&gt; and &lt;code&gt;--help&lt;/code&gt; now present the Silo client, every remaining path to MinIO&amp;rsquo;s SUBNET service is disabled at build time, the embedded vendor encryption key is removed from the diagnostics tooling, and the contribution policy moves to no-CLA with a mandatory DCO sign-off. There are &lt;strong&gt;no dependency changes and no protocol changes&lt;/strong&gt; in this cycle — &lt;code&gt;go.mod&lt;/code&gt; is byte-for-byte identical to 20260804 — so the regression surface is confined to text, command gating, and CI.&lt;/p&gt;</description>
      </item>
    <item>
        <title>Silo 20260806 Released</title>
        <link>https://silo.pgsty.com/blog/release/silo-20260806/</link>
        <pubDate>Thu, 06 Aug 2026 00:00:00 +0000</pubDate>
        
        <guid>https://silo.pgsty.com/blog/release/silo-20260806/</guid>
        <description>&lt;p&gt;&lt;strong&gt;Version:&lt;/strong&gt; &lt;code&gt;RELEASE.2026-08-06T00-00-00Z&lt;/code&gt; · &lt;strong&gt;Commit:&lt;/strong&gt; &lt;code&gt;3be10fcc1a44f6620ded0bd303461f9d688cca23&lt;/code&gt;&lt;/p&gt;&#xA;&lt;p&gt;SILO 20260806 is the &lt;strong&gt;first release published under the Silo name&lt;/strong&gt;. The previous release, &lt;a href=&#34;https://silo.pgsty.com/blog/release/silo-20260804/&#34;&gt;20260804&lt;/a&gt;, was the last one delivered as &lt;code&gt;pgsty/minio&lt;/code&gt;; this release completes the cutover to &lt;a href=&#34;https://github.com/pgsty/silo&#34;&gt;&lt;code&gt;github.com/pgsty/silo&lt;/code&gt;&lt;/a&gt; and renames every delivery surface — binary, packages, container images, systemd unit, Helm chart — while deliberately preserving every wire and configuration surface a MinIO deployment depends on. On top of the rename it adds native health checking (&lt;code&gt;silo healthcheck&lt;/code&gt;), a single-binary &lt;strong&gt;distroless&lt;/strong&gt; container image pilot, complete license-compliance materials in every artifact, and a release pipeline gated on compatibility snapshots and build provenance.&lt;/p&gt;</description>
      </item>
    <item>
        <title>Silo 20260804 Released</title>
        <link>https://silo.pgsty.com/blog/release/silo-20260804/</link>
        <pubDate>Wed, 05 Aug 2026 00:00:00 +0000</pubDate>
        
        <guid>https://silo.pgsty.com/blog/release/silo-20260804/</guid>
        <description>&lt;p&gt;&lt;strong&gt;Version:&lt;/strong&gt; &lt;code&gt;RELEASE.2026-08-04T00-00-00Z&lt;/code&gt; · &lt;strong&gt;Commit:&lt;/strong&gt; &lt;code&gt;d88f46ccee345a9c2fabe2d221d9a9e56bc11aec&lt;/code&gt;&lt;/p&gt;&#xA;&lt;p&gt;SILO 20260804 is a security, correctness, and release-engineering update to the &lt;code&gt;pgsty/minio&lt;/code&gt; community fork. It completes the internode storage-containment work begun with CVE-2026-42600, prevents request-controlled values from impersonating server-calculated S3/IAM policy conditions, restores streaming flush behavior, fixes several multipart and versioning edge cases, hardens notification configuration migration, moves the build baseline to Go 1.26.5, and connects the server to the SILO-maintained Console, shared package, and &lt;code&gt;mcli&lt;/code&gt; releases. The release pipeline was rebuilt to produce reproducible binaries and GPG-signed packages.&lt;/p&gt;</description>
      </item>
    <item>
        <title>mcli 20260804 Released</title>
        <link>https://silo.pgsty.com/blog/release/mcli-20260804/</link>
        <pubDate>Tue, 04 Aug 2026 00:00:00 +0000</pubDate>
        
        <guid>https://silo.pgsty.com/blog/release/mcli-20260804/</guid>
        <description>&lt;p&gt;&lt;strong&gt;Published:&lt;/strong&gt; 2026-08-04 · &lt;strong&gt;Version:&lt;/strong&gt; &lt;a href=&#34;https://github.com/pgsty/mc/releases/tag/RELEASE.2026-08-04T00-00-00Z&#34;&gt;RELEASE.2026-08-04T00-00-00Z&lt;/a&gt;&lt;/p&gt;&#xA;&lt;p&gt;This is the first release of the &lt;code&gt;pgsty/mc&lt;/code&gt; community fork since &lt;a href=&#34;https://silo.pgsty.com/blog/release/20260417/&#34;&gt;20260417&lt;/a&gt;. It fixes a credential leak in debug logging, severs every remaining connection between the client and upstream release channels, moves containers and packages onto artifacts this fork builds itself, and migrates packaging from MinIO&amp;rsquo;s &lt;code&gt;pkger&lt;/code&gt; to standard nFPM — with GPG-signed RPMs for the first time.&lt;/p&gt;&#xA;&lt;p&gt;Upstream &lt;code&gt;minio/mc&lt;/code&gt; was archived in July 2026. Its final commit, &lt;a href=&#34;https://github.com/minio/mc/commit/77f82e18b5401a65958f1619df6ebb994634bd88&#34;&gt;&lt;code&gt;77f82e18&lt;/code&gt;&lt;/a&gt;, is exactly this fork&amp;rsquo;s base, and upstream never cut a release containing it — so this build is strictly newer than any official &lt;code&gt;mc&lt;/code&gt; binary ever published.&lt;/p&gt;</description>
      </item>
    <item>
        <title>Silo 20260618 Released</title>
        <link>https://silo.pgsty.com/blog/release/20260618/</link>
        <pubDate>Thu, 18 Jun 2026 00:00:00 +0000</pubDate>
        
        <guid>https://silo.pgsty.com/blog/release/20260618/</guid>
        <description>&lt;p&gt;&lt;strong&gt;Published:&lt;/strong&gt; 2026-06-18 · &lt;strong&gt;Version:&lt;/strong&gt; &lt;a href=&#34;https://github.com/pgsty/minio/releases/tag/RELEASE.2026-06-18T00-00-00Z&#34;&gt;RELEASE.2026-06-18T00-00-00Z&lt;/a&gt;&lt;/p&gt;&#xA;&lt;p&gt;This release is a security and dependency-maintenance update for the &lt;code&gt;pgsty/minio&lt;/code&gt; fork. It hardens LDAP STS throttling, completes S3 Select oversized-record enforcement, removes the obsolete &lt;code&gt;ReadMultiple&lt;/code&gt; internode storage-REST API, upgrades the Go build baseline to &lt;code&gt;1.26.4&lt;/code&gt;, and refreshes Go module dependencies to pick up additional third-party security fixes.&lt;/p&gt;&#xA;&lt;div class=&#34;td-callout td-callout--note&#34; role=&#34;note&#34;&gt;&#xA;  &lt;div class=&#34;td-callout__title&#34;&gt;&lt;i class=&#34;td-callout__icon fa-solid fa-circle-info&#34; aria-hidden=&#34;true&#34;&gt;&lt;/i&gt;&lt;span class=&#34;td-callout__label&#34;&gt;Note&lt;/span&gt;&lt;/div&gt;&#xA;  &lt;div class=&#34;td-callout__body&#34;&gt;&#xA;&lt;p&gt;&lt;strong&gt;Note&lt;/strong&gt;&lt;/p&gt;&#xA;&lt;p&gt;&lt;strong&gt;Known issue&lt;/strong&gt;: this release — like every earlier community release since &lt;code&gt;RELEASE.2025-12-03T12-00-00Z&lt;/code&gt; — carries a silent streaming-flush regression inherited from upstream that breaks &lt;code&gt;mc watch&lt;/code&gt; / bucket-notification listeners and S3 Select keep-alives. There is no workaround. The fix was merged to &lt;code&gt;master&lt;/code&gt; on 2026-07-29 but has not shipped in a published server release; see &lt;a href=&#34;https://github.com/pgsty/minio/pull/34&#34;&gt;PR #34&lt;/a&gt; for the implementation.&lt;/p&gt;</description>
      </item>
    <item>
        <title>MinIO Fork, Promise Kept</title>
        <link>https://silo.pgsty.com/blog/post/minio-promise-kept/</link>
        <pubDate>Fri, 17 Apr 2026 00:00:00 +0000</pubDate>
        
        <guid>https://silo.pgsty.com/blog/post/minio-promise-kept/</guid>
        <description>Two months after forking MinIO, pgsty/minio ships patches for four CVEs and related security issues.  No new features — just working builds, a restored console, and timely security fixes.</description>
      </item>
    <item>
        <title>CVE-2026-32285: The jsonparser Advisory That Required No Patch</title>
        <link>https://silo.pgsty.com/blog/security/cve-2026-32285/</link>
        <pubDate>Wed, 15 Apr 2026 00:00:00 +0000</pubDate>
        
        <guid>https://silo.pgsty.com/blog/security/cve-2026-32285/</guid>
        <description>&lt;p&gt;&lt;strong&gt;Status:&lt;/strong&gt; Closed without a code change&lt;br&gt;&#xA;&lt;strong&gt;GitHub issue:&lt;/strong&gt; &lt;a href=&#34;https://github.com/pgsty/minio/issues/26&#34;&gt;pgsty/minio#26&lt;/a&gt;&lt;/p&gt;&#xA;&lt;p&gt;Security maintenance is not always a sequence of “find a vulnerability, then ship a patch.” The initial assessment of CVE-2026-32285 was that the repository might still carry a vulnerable &lt;code&gt;jsonparser&lt;/code&gt;; replacing the dependency or maintaining another fork was even considered. Checking the resolved module version and actual reachability changed the conclusion: the tree already used &lt;code&gt;v1.1.2&lt;/code&gt;, which contained the fix, and &lt;code&gt;govulncheck&lt;/code&gt; found no reachable vulnerable symbol.&lt;/p&gt;</description>
      </item>
    <item>
        <title>When the Total Is Unknown: Folder Download Progress</title>
        <link>https://silo.pgsty.com/blog/design/dir-percentage/</link>
        <pubDate>Sun, 23 Aug 2026 00:00:00 +0000</pubDate>
        
        <guid>https://silo.pgsty.com/blog/design/dir-percentage/</guid>
        <description>&lt;blockquote&gt;&#xA;&lt;p&gt;&lt;strong&gt;Status&lt;/strong&gt;: Implemented and verified locally; commit, Console release, and Silo dependency update pending · &lt;strong&gt;Priority&lt;/strong&gt;: P1 · &lt;strong&gt;Owner&lt;/strong&gt;: &lt;a href=&#34;https://github.com/pgsty/silo-console&#34;&gt;&lt;code&gt;pgsty/silo-console&lt;/code&gt;&lt;/a&gt; · &lt;strong&gt;Related issue&lt;/strong&gt;: &lt;a href=&#34;https://github.com/pgsty/silo/issues/62&#34;&gt;&lt;code&gt;pgsty/silo#62&lt;/code&gt;&lt;/a&gt; · &lt;strong&gt;PRD review&lt;/strong&gt;: Claude Fable 5 (&lt;code&gt;xhigh&lt;/code&gt;) — &lt;strong&gt;APPROVE&lt;/strong&gt; · &lt;strong&gt;Implementation review&lt;/strong&gt;: Claude Fable 5 (&lt;code&gt;xhigh&lt;/code&gt;), 2026-08-23 — &lt;strong&gt;APPROVE&lt;/strong&gt;, no P0/P1/P2 findings&lt;/p&gt;&#xA;&lt;/blockquote&gt;&#xA;&lt;p&gt;SILO Console shows &lt;code&gt;NaN%&lt;/code&gt; in Downloads / Uploads while downloading a folder. The ZIP normally keeps streaming and the stored objects are intact, but the progress bar has crossed from &amp;ldquo;unknown&amp;rdquo; into an invalid determinate state. Users see a full-looking bar, assume the transfer failed or finished, and retry it.&lt;/p&gt;</description>
      </item>
    <item>
        <title>Silo 20260417 Released</title>
        <link>https://silo.pgsty.com/blog/release/20260417/</link>
        <pubDate>Fri, 17 Apr 2026 00:00:00 +0000</pubDate>
        
        <guid>https://silo.pgsty.com/blog/release/20260417/</guid>
        <description>&lt;p&gt;&lt;strong&gt;Published:&lt;/strong&gt; 2026-04-17 · &lt;strong&gt;Version:&lt;/strong&gt; &lt;a href=&#34;https://github.com/pgsty/minio/releases/tag/RELEASE.2026-04-17T00-00-00Z&#34;&gt;RELEASE.2026-04-17T00-00-00Z&lt;/a&gt;&lt;/p&gt;&#xA;&lt;p&gt;This release focuses on security hardening and compatibility tightening. It bundles fixes across OIDC, LDAP STS, S3 Select, replication metadata handling, unsigned-trailer flows, the Snowball upload path, and multiple dependency- and Go toolchain-related security issues, while also incorporating the LDAP TLS regression fix and a cleanup of community-fork documentation.&lt;/p&gt;&#xA;&lt;h2 id=&#34;major-changes&#34;&gt;Major Changes&#xA;&lt;/h2&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;Tighten the identity-authentication flow: OIDC / WebIdentity now accepts only asymmetrically signed &lt;code&gt;ID Token&lt;/code&gt; values backed by the IdP &lt;code&gt;JWKS&lt;/code&gt;; symmetrically signed tokens such as &lt;code&gt;HS256&lt;/code&gt; are no longer accepted. LDAP STS also now hides the distinction between unknown-user and bad-password failures to reduce username-enumeration risk.&lt;/li&gt;&#xA;&lt;li&gt;Update LDAP STS rate limiting: limits now apply to both source IP and normalized username, and successful requests no longer consume quota incorrectly. By default MinIO now uses only the socket peer address as the source and no longer trusts &lt;code&gt;X-Forwarded-For&lt;/code&gt;, &lt;code&gt;X-Real-IP&lt;/code&gt;, or &lt;code&gt;Forwarded&lt;/code&gt;; to rate-limit by real client IP, configure &lt;code&gt;MINIO_IDENTITY_LDAP_STS_TRUSTED_PROXIES&lt;/code&gt; explicitly.&lt;/li&gt;&#xA;&lt;li&gt;Make upload and write paths stricter: presigned query parameters can no longer be combined with &lt;code&gt;unsigned-trailer&lt;/code&gt; &lt;code&gt;PUT&lt;/code&gt; or multipart uploads. Snowball auto-extract now also performs full signature validation on the &lt;code&gt;unsigned-trailer&lt;/code&gt; path and rejects anonymous or forged-signature requests.&lt;/li&gt;&#xA;&lt;li&gt;Prevent replication metadata spoofing: internal &lt;code&gt;X-Minio-Replication-*&lt;/code&gt; headers attached to ordinary &lt;code&gt;PUT&lt;/code&gt; / &lt;code&gt;COPY&lt;/code&gt; requests are now rejected or ignored, and only trusted replication flows may write the related internal metadata.&lt;/li&gt;&#xA;&lt;li&gt;Clarify S3 Select error semantics: oversized CSV and line-delimited JSON records now return &lt;code&gt;OverMaxRecordSize&lt;/code&gt; directly instead of the generic &lt;code&gt;InternalError&lt;/code&gt;; clients or alerting rules that depend on the old error code should be adjusted.&lt;/li&gt;&#xA;&lt;li&gt;Upgrade the runtime and dependency baseline: fix the regression where &lt;code&gt;ldaps://&lt;/code&gt; did not correctly apply TLS settings, replace &lt;code&gt;minio/pkg/v3&lt;/code&gt; with &lt;code&gt;pgsty/minio-pkg/v3&lt;/code&gt;, and pin several critical dependencies that are prone to breaking changes. The release also upgrades &lt;code&gt;go-jose&lt;/code&gt;, &lt;code&gt;go.opentelemetry.io&lt;/code&gt;, and Go &lt;code&gt;1.26.2&lt;/code&gt; to unify the build and release baseline.&lt;/li&gt;&#xA;&lt;li&gt;Refresh documentation and security guidance: update &lt;code&gt;SECURITY.md&lt;/code&gt;, &lt;code&gt;VULNERABILITY_REPORT.md&lt;/code&gt;, &lt;code&gt;docs/sts/ldap.md&lt;/code&gt;, and related documents, add a security advisory index, and switch upstream &lt;code&gt;minio/minio&lt;/code&gt; references in the security guidance over to &lt;code&gt;pgsty/minio&lt;/code&gt;.&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;h2 id=&#34;fixed-cves&#34;&gt;Fixed CVEs&#xA;&lt;/h2&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://github.com/advisories?query=CVE-2026-34986&#34;&gt;CVE-2026-34986&lt;/a&gt;: upgrade &lt;code&gt;go-jose&lt;/code&gt; to &lt;code&gt;v4.1.4&lt;/code&gt; and fix known security issues in the JWT / JOSE dependency chain.&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://github.com/advisories/GHSA-hfvc-g4fc-pqhx&#34;&gt;CVE-2026-39883&lt;/a&gt;: upgrade the &lt;code&gt;go.opentelemetry.io&lt;/code&gt; dependency stack to fix the PATH-hijacking risk.&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://github.com/advisories?query=CVE-2026-33322&#34;&gt;CVE-2026-33322&lt;/a&gt;: restore the strict JWKS-only OIDC JWT verification path to block keyring injection and algorithm-confusion risk.&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://github.com/advisories?query=CVE-2026-33419&#34;&gt;CVE-2026-33419&lt;/a&gt;: systematically harden LDAP STS authentication, rate limiting, source-address identification, and accounting logic across four follow-up fixes.&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://github.com/advisories?query=CVE-2026-34204&#34;&gt;CVE-2026-34204&lt;/a&gt;: reject injection of &lt;code&gt;X-Minio-Replication-*&lt;/code&gt; metadata by untrusted requests to prevent objects from being written with invalid replication state.&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://github.com/advisories?query=CVE-2026-39414&#34;&gt;CVE-2026-39414&lt;/a&gt;: reject oversized S3 Select records early to avoid continued buffering and parsing of abnormal inputs.&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://github.com/advisories/GHSA-hv4r-mvr4-25vw&#34;&gt;GHSA-hv4r-mvr4-25vw&lt;/a&gt;: close the unsigned-trailer query-auth bypass.&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://github.com/advisories/GHSA-9c4q-hq6p-c237&#34;&gt;GHSA-9c4q-hq6p-c237&lt;/a&gt;: harden unsigned-trailer authentication and signature validation in Snowball auto-extract scenarios.&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://pkg.go.dev/vuln/GO-2026-4947&#34;&gt;CVE-2026-32280&lt;/a&gt;, &lt;a href=&#34;https://pkg.go.dev/vuln/GO-2026-4946&#34;&gt;CVE-2026-32281&lt;/a&gt;, and &lt;a href=&#34;https://pkg.go.dev/vuln/GO-2026-4870&#34;&gt;CVE-2026-32283&lt;/a&gt;: upgrade Go to &lt;code&gt;1.26.2&lt;/code&gt; and absorb the upstream toolchain and stdlib security fixes.&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;h2 id=&#34;related-commits&#34;&gt;Related Commits&#xA;&lt;/h2&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://github.com/pgsty/minio/commit/c878ca075678e943666ec2365afe95d992a0cc76&#34;&gt;c878ca0&lt;/a&gt;: fix: pin deps with breaking changes and fix LDAP TLS regression (#15)&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://github.com/pgsty/minio/commit/e970ec5629068a1fc5938dddb4e3f1e70e1e2929&#34;&gt;e970ec5&lt;/a&gt;: fix: upgrade go-jose to v4.1.4 to patch CVE-2026-34986&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://github.com/pgsty/minio/commit/a2065105a0e1b67f44b537e9d246ace2acc6aec0&#34;&gt;a206510&lt;/a&gt;: fix: CVE-2026-39883 upgrade go.opentelemetry.io&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://github.com/pgsty/minio/commit/fd65f1199bac0317cc18fc9630dcee3f0c168024&#34;&gt;fd65f11&lt;/a&gt;: merge: PR #18 upgrade go-jose to v4.1.4 for CVE-2026-34986&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://github.com/pgsty/minio/commit/bc087e40a3a4feaa7d9817cfc621e79bed5ad84a&#34;&gt;bc087e4&lt;/a&gt;: merge: PR #19 upgrade go.opentelemetry.io for CVE-2026-39883&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://github.com/pgsty/minio/commit/f1f2239ef8f44de48f6730327643e454574cbcdd&#34;&gt;f1f2239&lt;/a&gt;: fix: CVE-2026-33322 restore JWKS-only OIDC JWT verification&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://github.com/pgsty/minio/commit/6619d0cd326b022dd34f7da4d637c5aca37bbd23&#34;&gt;6619d0c&lt;/a&gt;: fix: CVE-2026-33419 harden LDAP STS auth&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://github.com/pgsty/minio/commit/fcb8f242dee3394263e5b7a2cf02af87d34701f8&#34;&gt;fcb8f24&lt;/a&gt;: fix: CVE-2026-34204 reject untrusted replication metadata&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://github.com/pgsty/minio/commit/c5765dcbbe28b2fb001c30ef44e95ff9ca026ca9&#34;&gt;c5765dc&lt;/a&gt;: fix: CVE-2026-39414 reject oversized S3 Select records&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://github.com/pgsty/minio/commit/fa7c579bfbe2a98f2cb7d3ff1333d9393978fab1&#34;&gt;fa7c579&lt;/a&gt;: fix: GHSA-hv4r-mvr4-25vw block unsigned-trailer query auth bypass&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://github.com/pgsty/minio/commit/b50ab5835bc6d04a9f760bbcfcca21d9fdb22fa7&#34;&gt;b50ab58&lt;/a&gt;: fix: GHSA-9c4q-hq6p-c237 harden Snowball unsigned-trailer auth&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://github.com/pgsty/minio/commit/9a4b3cd92f8fff72d31c3e41d68d878f39253eaa&#34;&gt;9a4b3cd&lt;/a&gt;: fix: CVE-2026-32280/CVE-2026-32281/CVE-2026-32283 upgrade Go to 1.26.2&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://github.com/pgsty/minio/commit/c55b52caf183db40adb3fdb56cb8b0f0067a8dd1&#34;&gt;c55b52c&lt;/a&gt;: fix: CVE-2026-33419 preserve LDAP STS rate limits on success&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://github.com/pgsty/minio/commit/817a4570165b3073451b4b392a3aafcaafcdcea9&#34;&gt;817a457&lt;/a&gt;: fix: CVE-2026-33419 harden LDAP STS rate-limit source IP&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://github.com/pgsty/minio/commit/084a15461a03944e50b37987c9446d4c2f87f9b8&#34;&gt;084a154&lt;/a&gt;: fix: CVE-2026-33419 tighten LDAP STS rate-limit accounting&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://github.com/pgsty/minio/commit/16e34f900cf90b541561a450e2588332e17213b9&#34;&gt;16e34f9&lt;/a&gt;: docs: refresh security guidance and fork references&lt;/li&gt;&#xA;&lt;/ul&gt;</description>
      </item>
    <item>
        <title>CVE-2026-33322: OIDC JWT Algorithm Confusion</title>
        <link>https://silo.pgsty.com/blog/security/cve-2026-33322/</link>
        <pubDate>Wed, 15 Apr 2026 00:00:00 +0000</pubDate>
        
        <guid>https://silo.pgsty.com/blog/security/cve-2026-33322/</guid>
        <description>&lt;p&gt;&lt;strong&gt;Status:&lt;/strong&gt; Released&lt;br&gt;&#xA;&lt;strong&gt;First containing release:&lt;/strong&gt; &lt;a href=&#34;https://github.com/pgsty/minio/releases/tag/RELEASE.2026-04-17T00-00-00Z&#34;&gt;RELEASE.2026-04-17T00-00-00Z&lt;/a&gt;&lt;br&gt;&#xA;&lt;strong&gt;Affected entry points:&lt;/strong&gt; &lt;code&gt;AssumeRoleWithWebIdentity&lt;/code&gt;, &lt;code&gt;AssumeRoleWithClientGrants&lt;/code&gt;&lt;br&gt;&#xA;&lt;strong&gt;GitHub issue:&lt;/strong&gt; &lt;a href=&#34;https://github.com/pgsty/minio/issues/22&#34;&gt;pgsty/minio#22&lt;/a&gt;&lt;/p&gt;&#xA;&lt;p&gt;The old implementation placed the OIDC client secret in the JWT verifier keyring while also accepting HMAC signing methods. An attacker who knew that client secret could therefore mint an HS-signed token and exchange it through STS for temporary credentials. The final fix restored asymmetric, JWKS-only verification. It deliberately broke HS256/384/512 compatibility instead of keeping an option that would reintroduce ambiguous trust semantics.&lt;/p&gt;</description>
      </item>
    <item>
        <title>MinIO Is Dead, Long Live MinIO</title>
        <link>https://silo.pgsty.com/blog/post/minio-resurrect/</link>
        <pubDate>Sat, 14 Feb 2026 00:00:00 +0000</pubDate>
        
        <guid>https://silo.pgsty.com/blog/post/minio-resurrect/</guid>
        <description>MinIO&amp;rsquo;s repo is officially archived and abandoned. And how AI Agents helped bring it back from the dead. This post explains how a community fork restores the admin console and ships binaries via CI/CD pipeline.</description>
      </item>
    <item>
        <title>CVE-2026-33419: LDAP STS Enumeration and the Throttling Chain</title>
        <link>https://silo.pgsty.com/blog/security/cve-2026-33419/</link>
        <pubDate>Wed, 15 Apr 2026 00:00:00 +0000</pubDate>
        
        <guid>https://silo.pgsty.com/blog/security/cve-2026-33419/</guid>
        <description>&lt;p&gt;&lt;strong&gt;Status:&lt;/strong&gt; Released, followed by two rounds of corrections&lt;br&gt;&#xA;&lt;strong&gt;First containing release:&lt;/strong&gt; &lt;a href=&#34;https://github.com/pgsty/minio/releases/tag/RELEASE.2026-04-17T00-00-00Z&#34;&gt;RELEASE.2026-04-17T00-00-00Z&lt;/a&gt;&lt;br&gt;&#xA;&lt;strong&gt;Complete correction:&lt;/strong&gt; &lt;a href=&#34;https://github.com/pgsty/minio/releases/tag/RELEASE.2026-06-18T00-00-00Z&#34;&gt;RELEASE.2026-06-18T00-00-00Z&lt;/a&gt;&lt;br&gt;&#xA;&lt;strong&gt;GitHub issue:&lt;/strong&gt; &lt;a href=&#34;https://github.com/pgsty/minio/issues/23&#34;&gt;pgsty/minio#23&lt;/a&gt;&lt;/p&gt;&#xA;&lt;p&gt;The core vulnerability was straightforward: LDAP STS returned different results for “user does not exist” and “password is wrong,” creating a username oracle. The first fix unified the external authentication failure and added limits by source IP and username. Continued review then showed that success refunds, spoofable source headers, reservation accounting, and the shared username bucket could turn the security control itself into a new attack surface.&lt;/p&gt;</description>
      </item>
    <item>
        <title>Silo 20260325 Released</title>
        <link>https://silo.pgsty.com/blog/release/20260325/</link>
        <pubDate>Wed, 25 Mar 2026 00:00:00 +0000</pubDate>
        
        <guid>https://silo.pgsty.com/blog/release/20260325/</guid>
        <description>&lt;p&gt;&lt;strong&gt;Published:&lt;/strong&gt; 2026-03-25 · &lt;strong&gt;Version:&lt;/strong&gt; &lt;a href=&#34;https://github.com/pgsty/minio/releases/tag/RELEASE.2026-03-25T00-00-00Z&#34;&gt;RELEASE.2026-03-25T00-00-00Z&lt;/a&gt;&lt;/p&gt;&#xA;&lt;p&gt;This is a maintenance release centered on packaging, stability, and security disclosure. It improves the shipping artifacts, fixes an LDAP TLS regression, and explicitly documents the secure dependency set carried by the release.&lt;/p&gt;&#xA;&lt;h2 id=&#34;major-changes&#34;&gt;Major Changes&#xA;&lt;/h2&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;Bundle &lt;code&gt;mcli/mc&lt;/code&gt; into the Docker image and add checksum verification for a better out-of-the-box image experience.&lt;/li&gt;&#xA;&lt;li&gt;Fix the LDAP TLS regression affecting &lt;code&gt;ldaps://&lt;/code&gt; deployments so TLS settings are correctly honored.&lt;/li&gt;&#xA;&lt;li&gt;Remove inherited upstream CI/CD workflows that are no longer used in the community-maintained fork.&lt;/li&gt;&#xA;&lt;li&gt;Pin several critical dependencies to avoid further fallout from upstream breaking changes.&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;h2 id=&#34;fixed-cves&#34;&gt;Fixed CVEs&#xA;&lt;/h2&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://pkg.go.dev/vuln/GO-2026-4394&#34;&gt;CVE-2026-24051&lt;/a&gt;: the release notes explicitly call out &lt;code&gt;go.opentelemetry.io/otel/sdk v1.42.0&lt;/code&gt;, which avoids the macOS PATH-hijacking arbitrary code execution issue.&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://pkg.go.dev/vuln/GO-2025-4173&#34;&gt;CVE-2025-10543&lt;/a&gt;: the release notes explicitly ship &lt;code&gt;github.com/eclipse/paho.mqtt.golang v1.5.1&lt;/code&gt;, fixing incorrect MQTT packet encoding for oversized UTF-8 strings.&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://pkg.go.dev/vuln/GO-2025-4134&#34;&gt;CVE-2025-58181&lt;/a&gt;: the release notes explicitly ship &lt;code&gt;golang.org/x/crypto v0.49.0&lt;/code&gt;, fixing unbounded memory consumption in &lt;code&gt;ssh&lt;/code&gt; GSSAPI authentication handling.&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;h2 id=&#34;related-commits&#34;&gt;Related Commits&#xA;&lt;/h2&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://github.com/pgsty/minio/commit/f2f9a40dce9597d5d1fa758b3316d41a86e73cff&#34;&gt;f2f9a40&lt;/a&gt;: add mcli/mc from pgsty/mc to Docker image&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://github.com/pgsty/minio/commit/ce1c537eb1dd6c4efa1cf75cf5df0e2c489c947a&#34;&gt;ce1c537&lt;/a&gt;: fix: pin deps with breaking changes and fix LDAP TLS regression (#15)&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://github.com/pgsty/minio/commit/ee55e5391a5d5e4bd46d555a11b2215eb6ed836e&#34;&gt;ee55e53&lt;/a&gt;: remove upstream CI/CD workflows inherited from minio/minio&lt;/li&gt;&#xA;&lt;/ul&gt;</description>
      </item>
    <item>
        <title>MinIO Is Dead. Which Next?</title>
        <link>https://silo.pgsty.com/blog/post/minio-alternative/</link>
        <pubDate>Mon, 08 Dec 2025 00:00:00 +0000</pubDate>
        
        <guid>https://silo.pgsty.com/blog/post/minio-alternative/</guid>
        <description>MinIO just entered maintenance mode. What replaces it? Can RustFS step in? I tested the contenders so you don’t have to.</description>
      </item>
    <item>
        <title>CVE-2026-34204: Replication Metadata Injection</title>
        <link>https://silo.pgsty.com/blog/security/cve-2026-34204/</link>
        <pubDate>Wed, 15 Apr 2026 00:00:00 +0000</pubDate>
        
        <guid>https://silo.pgsty.com/blog/security/cve-2026-34204/</guid>
        <description>&lt;p&gt;&lt;strong&gt;Status:&lt;/strong&gt; Released&lt;br&gt;&#xA;&lt;strong&gt;First containing release:&lt;/strong&gt; &lt;a href=&#34;https://github.com/pgsty/minio/releases/tag/RELEASE.2026-04-17T00-00-00Z&#34;&gt;RELEASE.2026-04-17T00-00-00Z&lt;/a&gt;&lt;br&gt;&#xA;&lt;strong&gt;GitHub issue:&lt;/strong&gt; &lt;a href=&#34;https://github.com/pgsty/minio/issues/24&#34;&gt;pgsty/minio#24&lt;/a&gt;&lt;/p&gt;&#xA;&lt;p&gt;Ordinary &lt;code&gt;PUT&lt;/code&gt; and &lt;code&gt;COPY&lt;/code&gt; requests could smuggle &lt;code&gt;X-Minio-Replication-*&lt;/code&gt; headers into internal &lt;code&gt;X-Minio-Internal-*&lt;/code&gt; SSE metadata, creating objects whose replication state did not match the authorized path and could even make them unreadable. The final fix stopped accepting replication-only metadata by default, restored it only in a trusted flow authorized for &lt;code&gt;ReplicateObjectAction&lt;/code&gt;, and sanitized &lt;code&gt;CopyObject&lt;/code&gt; before any header consumer ran.&lt;/p&gt;&#xA;&lt;h2 id=&#34;threat-model&#34;&gt;Threat model&#xA;&lt;/h2&gt;&#xA;&lt;p&gt;An attacker needed only ordinary object-write permission, not internode credentials. The input came entirely from client-controlled &lt;code&gt;X-Minio-Replication-*&lt;/code&gt; headers, but metadata extraction converted it into internal replication or SSE state.&lt;/p&gt;</description>
      </item>
    <item>
        <title>Silo 20260321 Released</title>
        <link>https://silo.pgsty.com/blog/release/20260321/</link>
        <pubDate>Sat, 21 Mar 2026 00:00:00 +0000</pubDate>
        
        <guid>https://silo.pgsty.com/blog/release/20260321/</guid>
        <description>&lt;p&gt;&lt;strong&gt;Published:&lt;/strong&gt; 2026-03-21 · &lt;strong&gt;Version:&lt;/strong&gt; &lt;a href=&#34;https://github.com/pgsty/minio/releases/tag/RELEASE.2026-03-21T00-00-00Z&#34;&gt;RELEASE.2026-03-21T00-00-00Z&lt;/a&gt;&lt;/p&gt;&#xA;&lt;p&gt;This maintenance release is built around the Go 1.26.1 upgrade and a broad dependency refresh. Beyond stricter compiler and linter compatibility fixes, it also delivers the most substantial security dependency refresh in the current release line.&lt;/p&gt;&#xA;&lt;h2 id=&#34;major-changes&#34;&gt;Major Changes&#xA;&lt;/h2&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;Upgrade the build environment from Go &lt;code&gt;1.26.0&lt;/code&gt; to Go &lt;code&gt;1.26.1&lt;/code&gt;.&lt;/li&gt;&#xA;&lt;li&gt;Refresh direct and indirect dependencies to converge on the newer toolchain.&lt;/li&gt;&#xA;&lt;li&gt;Fix linter and test issues exposed by the stricter Go 1.26.1 checks.&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;h2 id=&#34;fixed-cves&#34;&gt;Fixed CVEs&#xA;&lt;/h2&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://pkg.go.dev/vuln/GO-2026-4599&#34;&gt;CVE-2026-27137&lt;/a&gt;: Go stdlib &lt;code&gt;1.26.0&lt;/code&gt; -&amp;gt; &lt;code&gt;1.26.1&lt;/code&gt; fixes incomplete email-constraint enforcement in &lt;code&gt;crypto/x509&lt;/code&gt;.&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://pkg.go.dev/vuln/GO-2026-4600&#34;&gt;CVE-2026-27138&lt;/a&gt;: Go stdlib &lt;code&gt;1.26.0&lt;/code&gt; -&amp;gt; &lt;code&gt;1.26.1&lt;/code&gt; fixes a &lt;code&gt;crypto/x509&lt;/code&gt; panic triggered by malformed certificates.&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://pkg.go.dev/vuln/GO-2026-4601&#34;&gt;CVE-2026-25679&lt;/a&gt;: Go stdlib &lt;code&gt;1.26.0&lt;/code&gt; -&amp;gt; &lt;code&gt;1.26.1&lt;/code&gt; fixes insufficient validation of IPv6 host literals in &lt;code&gt;net/url&lt;/code&gt;.&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://pkg.go.dev/vuln/GO-2026-4602&#34;&gt;CVE-2026-27139&lt;/a&gt;: Go stdlib &lt;code&gt;1.26.0&lt;/code&gt; -&amp;gt; &lt;code&gt;1.26.1&lt;/code&gt; fixes &lt;code&gt;FileInfo&lt;/code&gt; metadata escaping the &lt;code&gt;Root&lt;/code&gt; boundary in &lt;code&gt;os&lt;/code&gt;.&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://pkg.go.dev/vuln/GO-2026-4603&#34;&gt;CVE-2026-27142&lt;/a&gt;: Go stdlib &lt;code&gt;1.26.0&lt;/code&gt; -&amp;gt; &lt;code&gt;1.26.1&lt;/code&gt; fixes missing URL escaping in &lt;code&gt;html/template&lt;/code&gt; for &lt;code&gt;meta refresh&lt;/code&gt; content.&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://pkg.go.dev/vuln/GO-2026-4503&#34;&gt;CVE-2026-26958&lt;/a&gt;: &lt;code&gt;filippo.io/edwards25519&lt;/code&gt; &lt;code&gt;v1.1.0&lt;/code&gt; -&amp;gt; &lt;code&gt;v1.2.0&lt;/code&gt; fixes incorrect or undefined &lt;code&gt;MultiScalarMult&lt;/code&gt; behavior.&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://pkg.go.dev/vuln/GO-2025-4173&#34;&gt;CVE-2025-10543&lt;/a&gt;: &lt;code&gt;github.com/eclipse/paho.mqtt.golang&lt;/code&gt; &lt;code&gt;v1.5.0&lt;/code&gt; -&amp;gt; &lt;code&gt;v1.5.1&lt;/code&gt; fixes incorrect MQTT packet encoding for oversized UTF-8 strings.&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://pkg.go.dev/vuln/GO-2026-4394&#34;&gt;CVE-2026-24051&lt;/a&gt;: &lt;code&gt;go.opentelemetry.io/otel/sdk&lt;/code&gt; &lt;code&gt;v1.38.0&lt;/code&gt; -&amp;gt; &lt;code&gt;v1.42.0&lt;/code&gt; fixes the macOS PATH-hijacking arbitrary code execution issue.&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://pkg.go.dev/vuln/GO-2026-4762&#34;&gt;CVE-2026-33186&lt;/a&gt;: &lt;code&gt;google.golang.org/grpc&lt;/code&gt; &lt;code&gt;v1.77.0&lt;/code&gt; -&amp;gt; &lt;code&gt;v1.79.3&lt;/code&gt; fixes authorization bypass caused by a missing leading slash in the HTTP/2 &lt;code&gt;:path&lt;/code&gt; pseudo-header.&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;h2 id=&#34;related-commits&#34;&gt;Related Commits&#xA;&lt;/h2&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://github.com/pgsty/minio/commit/5abd9a80f66f6fe2812d2eded18961a65712eb9e&#34;&gt;5abd9a8&lt;/a&gt;: bump golang to 1.26.1 and update deps&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://github.com/pgsty/minio/commit/377fc616d9c5944d9d0aff081089d2d0c4ebb12c&#34;&gt;377fc61&lt;/a&gt;: fix: satisfy stricter Go 1.26.1 linter checks&lt;/li&gt;&#xA;&lt;/ul&gt;</description>
      </item>
    <item>
        <title>MinIO is Dead</title>
        <link>https://silo.pgsty.com/blog/post/minio-is-dead/</link>
        <pubDate>Thu, 04 Dec 2025 00:00:00 +0000</pubDate>
        
        <guid>https://silo.pgsty.com/blog/post/minio-is-dead/</guid>
        <description>MinIO announces it is entering maintenance mode, the dragon-slayer has become the dragon – how MinIO transformed from an open-source S3 alternative to just another commercial software company</description>
      </item>
    <item>
        <title>CVE-2026-39414: Oversized S3 Select Records and a SIMD Bypass</title>
        <link>https://silo.pgsty.com/blog/security/cve-2026-39414/</link>
        <pubDate>Wed, 15 Apr 2026 00:00:00 +0000</pubDate>
        
        <guid>https://silo.pgsty.com/blog/security/cve-2026-39414/</guid>
        <description>&lt;p&gt;&lt;strong&gt;Status:&lt;/strong&gt; Released; the second-round fix was completed in June&lt;br&gt;&#xA;&lt;strong&gt;Initial fix release:&lt;/strong&gt; &lt;a href=&#34;https://github.com/pgsty/minio/releases/tag/RELEASE.2026-04-17T00-00-00Z&#34;&gt;RELEASE.2026-04-17T00-00-00Z&lt;/a&gt;&lt;br&gt;&#xA;&lt;strong&gt;Complete fix release:&lt;/strong&gt; &lt;a href=&#34;https://github.com/pgsty/minio/releases/tag/RELEASE.2026-06-18T00-00-00Z&#34;&gt;RELEASE.2026-06-18T00-00-00Z&lt;/a&gt;&lt;br&gt;&#xA;&lt;strong&gt;GitHub issue:&lt;/strong&gt; &lt;a href=&#34;https://github.com/pgsty/minio/issues/25&#34;&gt;pgsty/minio#25&lt;/a&gt;&lt;/p&gt;&#xA;&lt;p&gt;The first fix in April reused the existing 1 MiB &lt;code&gt;maxCharsPerRecord&lt;/code&gt; limit for both CSV and ordinary JSON Lines. This prevented unbounded buffering while waiting for a delimiter and returned the explicit &lt;code&gt;OverMaxRecordSize&lt;/code&gt; error to clients. A June review then found that CPUs with SIMD support took a different &lt;code&gt;simdjson&lt;/code&gt; fast path that bypassed the limit completely.&lt;/p&gt;</description>
      </item>
    <item>
        <title>Silo 20260314 Released</title>
        <link>https://silo.pgsty.com/blog/release/20260314/</link>
        <pubDate>Sat, 14 Mar 2026 00:00:00 +0000</pubDate>
        
        <guid>https://silo.pgsty.com/blog/release/20260314/</guid>
        <description>&lt;p&gt;&lt;strong&gt;Published:&lt;/strong&gt; 2026-03-14 · &lt;strong&gt;Version:&lt;/strong&gt; &lt;a href=&#34;https://github.com/pgsty/minio/releases/tag/RELEASE.2026-03-14T12-00-00Z&#34;&gt;RELEASE.2026-03-14T12-00-00Z&lt;/a&gt;&lt;/p&gt;&#xA;&lt;p&gt;This release switches the project to the community-maintained Console fork and performs a sizeable dependency refresh to establish the base for the later Go 1.26.x maintenance releases.&lt;/p&gt;&#xA;&lt;h2 id=&#34;major-changes&#34;&gt;Major Changes&#xA;&lt;/h2&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;Switch to the community-maintained &lt;code&gt;georgmangold/console v1.9.1&lt;/code&gt; fork in place of the unmaintainable upstream Console dependency.&lt;/li&gt;&#xA;&lt;li&gt;Refresh a large portion of the direct and indirect dependency graph so the new Console and toolchain combination builds cleanly.&lt;/li&gt;&#xA;&lt;li&gt;Fix the &lt;code&gt;go vet&lt;/code&gt; format directive issue in &lt;code&gt;grid_test.go&lt;/code&gt; and adjust tests for the HTTP behavior changes in Go 1.26.&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;h2 id=&#34;fixed-cves&#34;&gt;Fixed CVEs&#xA;&lt;/h2&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://pkg.go.dev/vuln/GO-2025-4116&#34;&gt;CVE-2025-47913&lt;/a&gt;: &lt;code&gt;golang.org/x/crypto&lt;/code&gt; &lt;code&gt;v0.37.0&lt;/code&gt; -&amp;gt; &lt;code&gt;v0.46.0&lt;/code&gt; fixes a panic in &lt;code&gt;ssh/agent&lt;/code&gt; when handling malformed responses.&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://pkg.go.dev/vuln/GO-2025-4134&#34;&gt;CVE-2025-58181&lt;/a&gt;: &lt;code&gt;golang.org/x/crypto&lt;/code&gt; &lt;code&gt;v0.37.0&lt;/code&gt; -&amp;gt; &lt;code&gt;v0.46.0&lt;/code&gt; fixes unbounded memory consumption in &lt;code&gt;ssh&lt;/code&gt; GSSAPI authentication parsing.&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://pkg.go.dev/vuln/GO-2025-4135&#34;&gt;CVE-2025-47914&lt;/a&gt;: &lt;code&gt;golang.org/x/crypto&lt;/code&gt; &lt;code&gt;v0.37.0&lt;/code&gt; -&amp;gt; &lt;code&gt;v0.46.0&lt;/code&gt; fixes a panic in &lt;code&gt;ssh/agent&lt;/code&gt; caused by malformed identity messages.&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://pkg.go.dev/vuln/GO-2026-4440&#34;&gt;CVE-2025-47911&lt;/a&gt;: &lt;code&gt;golang.org/x/net&lt;/code&gt; &lt;code&gt;v0.39.0&lt;/code&gt; -&amp;gt; &lt;code&gt;v0.48.0&lt;/code&gt; fixes quadratic parsing complexity in &lt;code&gt;html.Parse&lt;/code&gt; for crafted inputs.&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://pkg.go.dev/vuln/GO-2026-4441&#34;&gt;CVE-2025-58190&lt;/a&gt;: &lt;code&gt;golang.org/x/net&lt;/code&gt; &lt;code&gt;v0.39.0&lt;/code&gt; -&amp;gt; &lt;code&gt;v0.48.0&lt;/code&gt; fixes an infinite parsing loop in &lt;code&gt;golang.org/x/net/html&lt;/code&gt;.&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;h2 id=&#34;related-commits&#34;&gt;Related Commits&#xA;&lt;/h2&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://github.com/pgsty/minio/commit/68521b37f2697c79b7fe14676eaf687864a1cf26&#34;&gt;68521b3&lt;/a&gt;: add github ci/cd pipeline&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://github.com/pgsty/minio/commit/00f3cf74fc4319f3d34c4e47c87ad39386318755&#34;&gt;00f3cf7&lt;/a&gt;: RELEASE.2026-03-14T12-00-00Z with go 1.26.0&lt;/li&gt;&#xA;&lt;/ul&gt;</description>
      </item>
    <item>
        <title>CVE-2026-40344: Snowball Auto-Extract Authentication Bypass</title>
        <link>https://silo.pgsty.com/blog/security/cve-2026-40344/</link>
        <pubDate>Thu, 16 Apr 2026 00:00:00 +0000</pubDate>
        
        <guid>https://silo.pgsty.com/blog/security/cve-2026-40344/</guid>
        <description>&lt;p&gt;&lt;strong&gt;Status:&lt;/strong&gt; Released&lt;br&gt;&#xA;&lt;strong&gt;First containing release:&lt;/strong&gt; &lt;a href=&#34;https://github.com/pgsty/minio/releases/tag/RELEASE.2026-04-17T00-00-00Z&#34;&gt;RELEASE.2026-04-17T00-00-00Z&lt;/a&gt;&lt;br&gt;&#xA;&lt;strong&gt;GitHub advisory:&lt;/strong&gt; &lt;a href=&#34;https://github.com/advisories/GHSA-9c4q-hq6p-c237&#34;&gt;GHSA-9c4q-hq6p-c237&lt;/a&gt;&lt;/p&gt;&#xA;&lt;p&gt;Snowball&amp;rsquo;s &lt;code&gt;PutObjectExtractHandler&lt;/code&gt; omitted the streaming unsigned-trailer authentication case. A tar stream with a forged signature could enter &lt;code&gt;untar()&lt;/code&gt; before authentication completed, and one request could fan out into many object writes. The final fix initialized the correct reader, handled the decoded length, and completed SigV4 verification before any tar byte reached the extractor.&lt;/p&gt;&#xA;&lt;h2 id=&#34;cve-number&#34;&gt;Why the identifier changed&#xA;&lt;/h2&gt;&#xA;&lt;p&gt;The official CVE had not been assigned when the fix was written, so the commit subject used the temporary identifier &lt;code&gt;fake CVE-2026-40028&lt;/code&gt;. The final identifier is &lt;strong&gt;CVE-2026-40344&lt;/strong&gt;. The historical commit was not rewritten; the advisory and this article use the official number.&lt;/p&gt;</description>
      </item>
    <item>
        <title>Silo 20260214 Released</title>
        <link>https://silo.pgsty.com/blog/release/20260214/</link>
        <pubDate>Sat, 14 Feb 2026 00:00:00 +0000</pubDate>
        
        <guid>https://silo.pgsty.com/blog/release/20260214/</guid>
        <description>&lt;p&gt;&lt;strong&gt;Published:&lt;/strong&gt; 2026-02-14 · &lt;strong&gt;Version:&lt;/strong&gt; &lt;a href=&#34;https://github.com/pgsty/minio/releases/tag/RELEASE.2026-02-14T12-00-00Z&#34;&gt;RELEASE.2026-02-14T12-00-00Z&lt;/a&gt;&lt;/p&gt;&#xA;&lt;p&gt;This early infrastructure-focused community release restores the embedded Console, introduces GitHub CI/CD, and lifts the Go baseline to 1.26.0, which also absorbs a batch of security fixes from the older toolchain generation.&lt;/p&gt;&#xA;&lt;h2 id=&#34;major-changes&#34;&gt;Major Changes&#xA;&lt;/h2&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;Restore the embedded Console and refresh the README to clarify the community fork position.&lt;/li&gt;&#xA;&lt;li&gt;Add GitHub CI/CD workflows as the base for automated builds and multi-platform delivery.&lt;/li&gt;&#xA;&lt;li&gt;Add quick links for docs, Docker, the GitHub repository, and installation through the &lt;code&gt;pig&lt;/code&gt; package manager.&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;h2 id=&#34;fixed-cves&#34;&gt;Fixed CVEs&#xA;&lt;/h2&gt;&#xA;&lt;p&gt;These issues were absorbed as part of the Go &lt;code&gt;1.25.5&lt;/code&gt; -&amp;gt; &lt;code&gt;1.26.0&lt;/code&gt; upgrade:&lt;/p&gt;</description>
      </item>
    <item>
        <title>CVE-2026-41145: Unsigned-Trailer Query Authentication Bypass</title>
        <link>https://silo.pgsty.com/blog/security/cve-2026-41145/</link>
        <pubDate>Thu, 16 Apr 2026 00:00:00 +0000</pubDate>
        
        <guid>https://silo.pgsty.com/blog/security/cve-2026-41145/</guid>
        <description>&lt;p&gt;&lt;strong&gt;Status:&lt;/strong&gt; Released&lt;br&gt;&#xA;&lt;strong&gt;First containing release:&lt;/strong&gt; &lt;a href=&#34;https://github.com/pgsty/minio/releases/tag/RELEASE.2026-04-17T00-00-00Z&#34;&gt;RELEASE.2026-04-17T00-00-00Z&lt;/a&gt;&lt;br&gt;&#xA;&lt;strong&gt;GitHub advisory:&lt;/strong&gt; &lt;a href=&#34;https://github.com/advisories/GHSA-hv4r-mvr4-25vw&#34;&gt;GHSA-hv4r-mvr4-25vw&lt;/a&gt;&lt;/p&gt;&#xA;&lt;p&gt;Query-string SigV4 credentials could enter a &lt;code&gt;STREAMING-UNSIGNED-PAYLOAD-TRAILER&lt;/code&gt; data flow, while the old code verified the signature only when an &lt;code&gt;Authorization&lt;/code&gt; header was present. A request carrying a valid access-key identifier could therefore complete a write without a correct signature.&lt;/p&gt;&#xA;&lt;p&gt;The final fix moved presigned rejection and SigV4 verification into &lt;code&gt;newUnsignedV4ChunkedReader()&lt;/code&gt;, making every caller consuming that stream share one authentication boundary.&lt;/p&gt;&#xA;&lt;h2 id=&#34;cve-number&#34;&gt;Identifier note&#xA;&lt;/h2&gt;&#xA;&lt;p&gt;The official CVE had not been assigned when the patch was written, so its commit subject used &lt;code&gt;fake CVE-2026-40027&lt;/code&gt;. The final identifier is &lt;strong&gt;CVE-2026-41145&lt;/strong&gt;. The historical commit remains unchanged; public material uses the official identifier.&lt;/p&gt;</description>
      </item>
    <item>
        <title>Silo 20251203 Released</title>
        <link>https://silo.pgsty.com/blog/release/20251203/</link>
        <pubDate>Mon, 15 Dec 2025 00:00:00 +0000</pubDate>
        
        <guid>https://silo.pgsty.com/blog/release/20251203/</guid>
        <description>&lt;p&gt;&lt;strong&gt;Published:&lt;/strong&gt; 2025-12-15 · &lt;strong&gt;Version:&lt;/strong&gt; &lt;a href=&#34;https://github.com/pgsty/minio/releases/tag/RELEASE.2025-12-03T12-00-00Z&#34;&gt;RELEASE.2025-12-03T12-00-00Z&lt;/a&gt;&lt;/p&gt;&#xA;&lt;p&gt;This is the earliest traceable community release. Its purpose is to establish the community packaging and distribution baseline rather than to deliver incremental fixes over an earlier community release.&lt;/p&gt;&#xA;&lt;h2 id=&#34;major-changes&#34;&gt;Major Changes&#xA;&lt;/h2&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;Build the community packaging flow around &lt;code&gt;minio/pkger&lt;/code&gt;.&lt;/li&gt;&#xA;&lt;li&gt;Choose a maintenance-mode upstream MinIO baseline as the starting point for the community-maintained fork.&lt;/li&gt;&#xA;&lt;li&gt;Produce the first &lt;code&gt;apk&lt;/code&gt;, &lt;code&gt;deb&lt;/code&gt;, and &lt;code&gt;rpm&lt;/code&gt; artifacts for ongoing community releases.&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;h2 id=&#34;fixed-cves&#34;&gt;Fixed CVEs&#xA;&lt;/h2&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;This is the first community release. The GitHub Release does not provide a delta-style security-fix list against an earlier community version, and this page does not attempt to reconstruct the full historical CVE delta against the upstream maintenance baseline.&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;h2 id=&#34;related-commits&#34;&gt;Related Commits&#xA;&lt;/h2&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://github.com/pgsty/minio/commit/d4cd4b433797e1cdcd2e46cc72df45b0897bdc0a&#34;&gt;d4cd4b4&lt;/a&gt;: RELEASE.2025-12-03T12-00-00Z with go 1.25.5&lt;/li&gt;&#xA;&lt;/ul&gt;</description>
      </item>
    <item>
        <title>CVE-2026-42600: ReadMultiple Storage-REST Path Traversal</title>
        <link>https://silo.pgsty.com/blog/security/cve-2026-42600/</link>
        <pubDate>Fri, 12 Jun 2026 00:00:00 +0000</pubDate>
        
        <guid>https://silo.pgsty.com/blog/security/cve-2026-42600/</guid>
        <description>&lt;p&gt;&lt;strong&gt;Status:&lt;/strong&gt; Released&lt;br&gt;&#xA;&lt;strong&gt;First containing release:&lt;/strong&gt; &lt;a href=&#34;https://github.com/pgsty/minio/releases/tag/RELEASE.2026-06-18T00-00-00Z&#34;&gt;RELEASE.2026-06-18T00-00-00Z&lt;/a&gt;&lt;br&gt;&#xA;&lt;strong&gt;GitHub advisory:&lt;/strong&gt; &lt;a href=&#34;https://github.com/advisories/GHSA-xh8f-g2qw-gcm7&#34;&gt;GHSA-xh8f-g2qw-gcm7&lt;/a&gt;&lt;br&gt;&#xA;&lt;strong&gt;Affected scope:&lt;/strong&gt; Distributed erasure only; cluster-root / internode JWT required&lt;/p&gt;&#xA;&lt;p&gt;The msgpack body of &lt;code&gt;/rmpl&lt;/code&gt; carried &lt;code&gt;Bucket&lt;/code&gt;, &lt;code&gt;Prefix&lt;/code&gt;, and &lt;code&gt;Files&lt;/code&gt;. The old code joined those values into filesystem paths without a containment check. The initial fix implemented full preflight validation. Continued call-chain review then found that this API had had no production caller since 2024. The final solution changed from “retain and harden” to removing the route, handler, client, interface, and generated code.&lt;/p&gt;</description>
      </item>
    <item>
        <title>Internode Path Containment Audit: Paying Off What CVE-2026-42600 Left Owing</title>
        <link>https://silo.pgsty.com/blog/security/internode-path-containment/</link>
        <pubDate>Sun, 02 Aug 2026 00:00:00 +0000</pubDate>
        
        <guid>https://silo.pgsty.com/blog/security/internode-path-containment/</guid>
        <description>&lt;p&gt;&lt;strong&gt;Status:&lt;/strong&gt; Fixed on the local &lt;code&gt;pgsty/minio&lt;/code&gt; branch, &lt;strong&gt;unreleased and not disclosed&lt;/strong&gt; (no CVE/GHSA requested; the upstream repository is archived)&#xA;&lt;strong&gt;Affected scope:&lt;/strong&gt; Distributed erasure only; cluster-root / internode JWT required&#xA;&lt;strong&gt;Prerequisite reading:&lt;/strong&gt; &lt;a href=&#34;https://silo.pgsty.com/blog/security/cve-2026-42600/&#34;&gt;CVE-2026-42600 · ReadMultiple&lt;/a&gt;&lt;/p&gt;&#xA;&lt;blockquote&gt;&#xA;&lt;p&gt;This article contains complete exploitation vectors and measurements. Publishing it constitutes disclosure. Hold it until the fixed release ships.&lt;/p&gt;&#xA;&lt;/blockquote&gt;&#xA;&lt;p&gt;&lt;a href=&#34;https://silo.pgsty.com/blog/security/cve-2026-42600/&#34;&gt;The previous entry&lt;/a&gt; closed with this sentence:&lt;/p&gt;&#xA;&lt;blockquote&gt;&#xA;&lt;p&gt;Deleting the endpoint proves only that &lt;code&gt;ReadMultiple&lt;/code&gt; no longer exists. It cannot be extrapolated into a completed containment audit of every internode body path.&lt;/p&gt;</description>
      </item>
    <item>
        <title>The Parser Knew, the Schema Didn&#39;t: Config Keys That Could Take Every Notification Down</title>
        <link>https://silo.pgsty.com/blog/security/notify-keyspace-registration/</link>
        <pubDate>Tue, 04 Aug 2026 00:00:00 +0000</pubDate>
        
        <guid>https://silo.pgsty.com/blog/security/notify-keyspace-registration/</guid>
        <description>&lt;p&gt;&lt;strong&gt;Status:&lt;/strong&gt; Fixed on the local &lt;code&gt;pgsty/minio&lt;/code&gt; branch as &lt;code&gt;162ded343&lt;/code&gt;, &lt;strong&gt;unreleased&lt;/strong&gt;&#xA;&lt;strong&gt;Classification:&lt;/strong&gt; Configuration-schema consistency and availability, &lt;strong&gt;not a vulnerability&lt;/strong&gt;; includes one defensive hardening (credential values no longer echoed in validation errors)&#xA;&lt;strong&gt;Affected scope:&lt;/strong&gt; &lt;code&gt;notify_nats&lt;/code&gt; JWT/NKey/TLS-handshake-first options, &lt;code&gt;notify_amqp&lt;/code&gt; &lt;code&gt;immediate&lt;/code&gt;, and any pre-2020 config migrated with an enabled NATS target — whose failure then silences &lt;strong&gt;every&lt;/strong&gt; notification backend&#xA;&lt;strong&gt;Tracking:&lt;/strong&gt; &lt;code&gt;pgsty/minio&lt;/code&gt; issue #39&lt;/p&gt;&#xA;&lt;blockquote&gt;&#xA;&lt;p&gt;This article names two unfixed availability defects in neighbouring code (the Postgres/MySQL migration writes, and &lt;code&gt;kvFields&lt;/code&gt; typo folding). Neither is exploitable — both break the operator&amp;rsquo;s own configuration, loudly or not at all — and both are already named in the committed audit test&amp;rsquo;s allowlist. Publication needs no hold beyond the release itself.&lt;/p&gt;</description>
      </item>
    <item>
        <title>Object Grant, Bucket Reach: When &#39;bucket/*&#39; Could Rewrite the Bucket Itself</title>
        <link>https://silo.pgsty.com/blog/security/object-grant-bucket-reach/</link>
        <pubDate>Tue, 04 Aug 2026 00:00:00 +0000</pubDate>
        
        <guid>https://silo.pgsty.com/blog/security/object-grant-bucket-reach/</guid>
        <description>&lt;p&gt;&lt;strong&gt;Status:&lt;/strong&gt; Fixed on &lt;code&gt;pgsty/silo-pkg&lt;/code&gt; &lt;code&gt;main&lt;/code&gt; (&lt;code&gt;3c24ad1&lt;/code&gt;, extended by &lt;code&gt;1f97549&lt;/code&gt;, scoped to its final twelve actions in &lt;code&gt;d8b1fa7&lt;/code&gt;), &lt;strong&gt;released as &lt;code&gt;silo-pkg v3.11.0&lt;/code&gt;&lt;/strong&gt;; consumed by &lt;code&gt;pgsty/minio&lt;/code&gt;&#xA;&lt;strong&gt;Classification:&lt;/strong&gt; Access-control hardening — a privilege boundary, narrowly restored&#xA;&lt;strong&gt;Affected scope:&lt;/strong&gt; IAM users/roles/service accounts granted only object-scoped (&lt;code&gt;arn:aws:s3:::bucket/*&lt;/code&gt;) access, in deployments that share a cluster across tenants&#xA;&lt;strong&gt;Tracking:&lt;/strong&gt; upstream &lt;code&gt;minio/minio&lt;/code&gt; issue &lt;a href=&#34;https://github.com/minio/minio/issues/20449&#34;&gt;#20449&lt;/a&gt; (public since 2024, still open)&lt;/p&gt;&#xA;&lt;h2 id=&#34;summary&#34;&gt;Conclusions first&#xA;&lt;/h2&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;In IAM policy matching, a bucket-level request carries an &lt;strong&gt;empty object name&lt;/strong&gt;, and the matcher built its resource string as &lt;code&gt;&amp;quot;bucket/&amp;quot;&lt;/code&gt;. An object-only policy pattern — &lt;code&gt;&amp;quot;arn:aws:s3:::bucket/*&amp;quot;&lt;/code&gt; — then matched that string, so a grant that should cover only objects &lt;strong&gt;also authorized bucket-level actions.&lt;/strong&gt;&lt;/li&gt;&#xA;&lt;li&gt;The dangerous one is &lt;strong&gt;&lt;code&gt;PutBucketPolicy&lt;/code&gt;&lt;/strong&gt;. A tenant holding only &lt;code&gt;s3:*&lt;/code&gt; on &lt;code&gt;bucket/*&lt;/code&gt; could install a bucket policy with &lt;code&gt;Principal:&amp;quot;*&amp;quot;&lt;/code&gt; — making the bucket &lt;strong&gt;publicly readable or writable&lt;/strong&gt; — or grant itself bucket-level control. Same mechanism, same class: &lt;code&gt;DeleteBucket&lt;/code&gt;/&lt;code&gt;ForceDeleteBucket&lt;/code&gt; (the issue&amp;rsquo;s own reproduction), &lt;code&gt;PutReplicationConfiguration&lt;/code&gt; (exfiltration), &lt;code&gt;PutBucketLifecycle&lt;/code&gt; (mass deletion), &lt;code&gt;PutBucketVersioning&lt;/code&gt;, &lt;code&gt;PutBucketObjectLockConfiguration&lt;/code&gt;, and the rest of the bucket-configuration writes.&lt;/li&gt;&#xA;&lt;li&gt;The &lt;strong&gt;full&lt;/strong&gt; correction is a two-directional behavior change: it tightens over-granting &lt;code&gt;Allow&lt;/code&gt; statements &lt;strong&gt;and&lt;/strong&gt; loosens over-blocking &lt;code&gt;Deny&lt;/code&gt; statements, and it would revoke &lt;code&gt;ListBucket&lt;/code&gt;/&lt;code&gt;GetBucketLocation&lt;/code&gt; grants that &lt;strong&gt;many real deployments write as &lt;code&gt;bucket/*&lt;/code&gt; today&lt;/strong&gt;. That is a compatibility break, not a clean patch.&lt;/li&gt;&#xA;&lt;li&gt;So we shipped a &lt;strong&gt;narrow&lt;/strong&gt; fix — first six sensitive bucket-configuration writes, then, in a second pass, &lt;strong&gt;twelve&lt;/strong&gt;: the bucket-level writes that hand the caller something its object access does not already give it, plus four that no handler implements. Only on &lt;code&gt;Allow&lt;/code&gt; statements, so no &lt;code&gt;Deny&lt;/code&gt; and no &lt;code&gt;NotResource&lt;/code&gt; exclusion is ever weakened, with an environment-variable escape hatch. The compatibility-sensitive read/list family, &lt;code&gt;CreateBucket&lt;/code&gt;, and three bucket writes with plausible tenant use are &lt;strong&gt;left unchanged, by decision&lt;/strong&gt;.&lt;/li&gt;&#xA;&lt;li&gt;Twice we claimed the change could only remove permissions, and twice an untested case said otherwise — the second time found by an independent review of a shipped release. The protected path now requires the resource to match &lt;strong&gt;both&lt;/strong&gt; the bare and the historical form, which makes the property hold by construction rather than by argument.&lt;/li&gt;&#xA;&lt;li&gt;The fix is &lt;strong&gt;red/green proven&lt;/strong&gt; at the matcher layer and end to end through the real handlers; the object-scoped hot path is untouched.&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;h2 id=&#34;the-defect&#34;&gt;The slash, and the empty object name&#xA;&lt;/h2&gt;&#xA;&lt;p&gt;Every bucket-level S3 operation authorizes with an empty object name — &lt;code&gt;checkRequestAuthType(ctx, r, policy.PutBucketPolicyAction, bucket, &amp;quot;&amp;quot;)&lt;/code&gt;. The IAM matcher turned that into a resource string, and for the empty-object case it appended a trailing slash:&lt;/p&gt;</description>
      </item>
    <item>
        <title>Absent Is Not Empty: A Blank versionid and the Fail-Open It Invites</title>
        <link>https://silo.pgsty.com/blog/security/s3-versionid-conditions/</link>
        <pubDate>Tue, 04 Aug 2026 00:00:00 +0000</pubDate>
        
        <guid>https://silo.pgsty.com/blog/security/s3-versionid-conditions/</guid>
        <description>&lt;p&gt;&lt;strong&gt;Status:&lt;/strong&gt; Fixed on the local &lt;code&gt;pgsty/minio&lt;/code&gt; branch as &lt;code&gt;744a9dcd7&lt;/code&gt;, &lt;strong&gt;unreleased&lt;/strong&gt;&#xA;&lt;strong&gt;Classification:&lt;/strong&gt; Policy-enforcement correctness — a fail-&lt;strong&gt;closed&lt;/strong&gt; report, a fail-&lt;strong&gt;open&lt;/strong&gt; trap avoided, and one narrow trim bypass closed. &lt;strong&gt;Not a headline CVE&lt;/strong&gt; — see &lt;a href=&#34;https://silo.pgsty.com/blog/security/s3-versionid-conditions/#not-a-cve&#34;&gt;How we classify this&lt;/a&gt;&#xA;&lt;strong&gt;Affected scope:&lt;/strong&gt; Any deployment with a bucket/IAM policy using &lt;code&gt;Null&lt;/code&gt; or &lt;code&gt;StringEquals&lt;/code&gt; on &lt;code&gt;s3:versionid&lt;/code&gt;; the reported break is on &lt;code&gt;DeleteObject&lt;/code&gt;/&lt;code&gt;DeleteObjects&lt;/code&gt;&#xA;&lt;strong&gt;Tracking:&lt;/strong&gt; upstream &lt;code&gt;minio/minio&lt;/code&gt; issue #21735 (reporter iTrooz, 2026-01-10); upstream repository archived read-only since 2026-04-25&lt;/p&gt;</description>
      </item>
    <item>
        <title>Three Headers, One Lie: Making the Client Source Address Mean Something</title>
        <link>https://silo.pgsty.com/blog/security/source-address-trust/</link>
        <pubDate>Tue, 04 Aug 2026 00:00:00 +0000</pubDate>
        
        <guid>https://silo.pgsty.com/blog/security/source-address-trust/</guid>
        <description>&lt;p&gt;&lt;strong&gt;Status:&lt;/strong&gt; Landed on &lt;code&gt;pgsty/minio&lt;/code&gt; &lt;code&gt;master&lt;/code&gt; as &lt;code&gt;fe6dc4780&lt;/code&gt;, &lt;strong&gt;unreleased&lt;/strong&gt;&#xA;&lt;strong&gt;Classification:&lt;/strong&gt; Opt-in hardening plus a documentation defect, &lt;strong&gt;not a vulnerability and not a regression&lt;/strong&gt;; no CVE assigned. The underlying weakness is inherited from upstream and its default behaviour is unchanged here&#xA;&lt;strong&gt;Affected scope:&lt;/strong&gt; &lt;code&gt;aws:SourceIp&lt;/code&gt; policy conditions, the audit log &lt;code&gt;remotehost&lt;/code&gt; field, S3 event notification &lt;code&gt;Host&lt;/code&gt;, and the client shown by &lt;code&gt;mc admin trace&lt;/code&gt; — on any deployment whose S3 API port is reachable without passing through a header-sanitising proxy&#xA;&lt;strong&gt;Upstream:&lt;/strong&gt; nothing to file — &lt;code&gt;minio/minio&lt;/code&gt; is archived. Prior art there: &lt;a href=&#34;https://github.com/minio/minio/pull/4736&#34;&gt;PR #4736&lt;/a&gt; (2017, the concern raised and half-addressed), &lt;a href=&#34;https://github.com/minio/minio/discussions/17878&#34;&gt;discussion #17878&lt;/a&gt; (2023, maintainer marks it working as intended), &lt;a href=&#34;https://github.com/minio/minio/pull/20977&#34;&gt;PR #20977&lt;/a&gt; (2025, the partial switch)&lt;/p&gt;</description>
      </item>
    <item>
        <title>Sorted Is Not Increasing: How One Duplicate Part Number Doubled an Object</title>
        <link>https://silo.pgsty.com/blog/security/duplicate-part-numbers/</link>
        <pubDate>Mon, 03 Aug 2026 00:00:00 +0000</pubDate>
        
        <guid>https://silo.pgsty.com/blog/security/duplicate-part-numbers/</guid>
        <description>&lt;p&gt;&lt;strong&gt;Status:&lt;/strong&gt; Fixed on the local &lt;code&gt;pgsty/minio&lt;/code&gt; branch as &lt;code&gt;22c1e41fd&lt;/code&gt;, &lt;strong&gt;unreleased&lt;/strong&gt;&#xA;&lt;strong&gt;Classification:&lt;/strong&gt; Data correctness, &lt;strong&gt;not a vulnerability&lt;/strong&gt; — see &lt;a href=&#34;https://silo.pgsty.com/blog/security/duplicate-part-numbers/#not-a-cve&#34;&gt;Why this is not a CVE&lt;/a&gt;&#xA;&lt;strong&gt;Affected scope:&lt;/strong&gt; All backends, any authenticated S3 client, on its own upload&#xA;&lt;strong&gt;Tracking:&lt;/strong&gt; &lt;code&gt;pgsty/minio&lt;/code&gt; issue #49&lt;/p&gt;&#xA;&lt;blockquote&gt;&#xA;&lt;p&gt;One section of this article describes an unfixed process-level panic in a neighbouring code path. Hold publication until that is fixed and released.&lt;/p&gt;&#xA;&lt;/blockquote&gt;&#xA;&lt;h2 id=&#34;summary&#34;&gt;Conclusions first&#xA;&lt;/h2&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;&lt;code&gt;sort.SliceIsSorted&lt;/code&gt; with a &lt;code&gt;&amp;lt;&lt;/code&gt; predicate does not test strict increase. It tests &lt;strong&gt;the absence of an inversion&lt;/strong&gt;. Equal neighbours contain no inversion, so &lt;code&gt;[1,1]&lt;/code&gt; was accepted.&lt;/li&gt;&#xA;&lt;li&gt;Upload one 5 MiB part, complete with &lt;code&gt;[1,1]&lt;/code&gt;, and the server returns &lt;strong&gt;HTTP 200 and a 10 MiB object&lt;/strong&gt;. The upload is then consumed: a corrected retry gets &lt;code&gt;NoSuchUpload&lt;/code&gt;. The client cannot recover.&lt;/li&gt;&#xA;&lt;li&gt;&lt;strong&gt;Inherited from upstream, and old.&lt;/strong&gt; The check has had this shape since 2016-08. Two refactors — 2017 and 2023 — rewrote it faithfully, because each preserved the predicate, and &lt;strong&gt;the predicate was never the problem&lt;/strong&gt;.&lt;/li&gt;&#xA;&lt;li&gt;The fix is one loop at the handler layer. The object layer is left undefended &lt;strong&gt;by decision&lt;/strong&gt;, and that IOU is written down here rather than left implicit.&lt;/li&gt;&#xA;&lt;li&gt;Three independent reviews found &lt;strong&gt;no defect in the fix&lt;/strong&gt;. What they found was a comment that misstated why a neighbouring guard exists — and, through that comment, an unrelated node-level panic.&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;h2 id=&#34;the-defect&#34;&gt;The verb, not the predicate&#xA;&lt;/h2&gt;&#xA;&lt;p&gt;The code, as inherited:&lt;/p&gt;</description>
      </item>
    
  </channel>
</rss>
