<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>CVE on SILO</title><link>https://silo.pgsty.com/tags/cve/</link><description>Recent content in CVE on SILO</description><generator>Hugo</generator><language>en</language><lastBuildDate>Sun, 02 Aug 2026 15:22:46 +0800</lastBuildDate><atom:link href="https://silo.pgsty.com/tags/cve/index.xml" rel="self" type="application/rss+xml"/><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;
&lt;strong&gt;GitHub issue:&lt;/strong&gt; &lt;a href="https://github.com/pgsty/minio/issues/26"&gt;pgsty/minio#26&lt;/a&gt;&lt;/p&gt;
&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>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;
&lt;strong&gt;First containing release:&lt;/strong&gt; &lt;a href="https://github.com/pgsty/minio/releases/tag/RELEASE.2026-04-17T00-00-00Z"&gt;RELEASE.2026-04-17T00-00-00Z&lt;/a&gt;&lt;br&gt;
&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;
&lt;strong&gt;GitHub issue:&lt;/strong&gt; &lt;a href="https://github.com/pgsty/minio/issues/22"&gt;pgsty/minio#22&lt;/a&gt;&lt;/p&gt;
&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>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;
&lt;strong&gt;First containing release:&lt;/strong&gt; &lt;a href="https://github.com/pgsty/minio/releases/tag/RELEASE.2026-04-17T00-00-00Z"&gt;RELEASE.2026-04-17T00-00-00Z&lt;/a&gt;&lt;br&gt;
&lt;strong&gt;Complete correction:&lt;/strong&gt; &lt;a href="https://github.com/pgsty/minio/releases/tag/RELEASE.2026-06-18T00-00-00Z"&gt;RELEASE.2026-06-18T00-00-00Z&lt;/a&gt;&lt;br&gt;
&lt;strong&gt;GitHub issue:&lt;/strong&gt; &lt;a href="https://github.com/pgsty/minio/issues/23"&gt;pgsty/minio#23&lt;/a&gt;&lt;/p&gt;
&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>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;
&lt;strong&gt;First containing release:&lt;/strong&gt; &lt;a href="https://github.com/pgsty/minio/releases/tag/RELEASE.2026-04-17T00-00-00Z"&gt;RELEASE.2026-04-17T00-00-00Z&lt;/a&gt;&lt;br&gt;
&lt;strong&gt;GitHub issue:&lt;/strong&gt; &lt;a href="https://github.com/pgsty/minio/issues/24"&gt;pgsty/minio#24&lt;/a&gt;&lt;/p&gt;
&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;
&lt;h2 id="threat-model"&gt;Threat model&lt;/h2&gt;
&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>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;
&lt;strong&gt;Initial fix release:&lt;/strong&gt; &lt;a href="https://github.com/pgsty/minio/releases/tag/RELEASE.2026-04-17T00-00-00Z"&gt;RELEASE.2026-04-17T00-00-00Z&lt;/a&gt;&lt;br&gt;
&lt;strong&gt;Complete fix release:&lt;/strong&gt; &lt;a href="https://github.com/pgsty/minio/releases/tag/RELEASE.2026-06-18T00-00-00Z"&gt;RELEASE.2026-06-18T00-00-00Z&lt;/a&gt;&lt;br&gt;
&lt;strong&gt;GitHub issue:&lt;/strong&gt; &lt;a href="https://github.com/pgsty/minio/issues/25"&gt;pgsty/minio#25&lt;/a&gt;&lt;/p&gt;
&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>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;
&lt;strong&gt;First containing release:&lt;/strong&gt; &lt;a href="https://github.com/pgsty/minio/releases/tag/RELEASE.2026-04-17T00-00-00Z"&gt;RELEASE.2026-04-17T00-00-00Z&lt;/a&gt;&lt;br&gt;
&lt;strong&gt;GitHub advisory:&lt;/strong&gt; &lt;a href="https://github.com/advisories/GHSA-9c4q-hq6p-c237"&gt;GHSA-9c4q-hq6p-c237&lt;/a&gt;&lt;/p&gt;
&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;
&lt;h2 id="cve-number"&gt;Why the identifier changed&lt;/h2&gt;
&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>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;
&lt;strong&gt;First containing release:&lt;/strong&gt; &lt;a href="https://github.com/pgsty/minio/releases/tag/RELEASE.2026-04-17T00-00-00Z"&gt;RELEASE.2026-04-17T00-00-00Z&lt;/a&gt;&lt;br&gt;
&lt;strong&gt;GitHub advisory:&lt;/strong&gt; &lt;a href="https://github.com/advisories/GHSA-hv4r-mvr4-25vw"&gt;GHSA-hv4r-mvr4-25vw&lt;/a&gt;&lt;/p&gt;
&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;
&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;
&lt;h2 id="cve-number"&gt;Identifier note&lt;/h2&gt;
&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>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;
&lt;strong&gt;First containing release:&lt;/strong&gt; &lt;a href="https://github.com/pgsty/minio/releases/tag/RELEASE.2026-06-18T00-00-00Z"&gt;RELEASE.2026-06-18T00-00-00Z&lt;/a&gt;&lt;br&gt;
&lt;strong&gt;GitHub advisory:&lt;/strong&gt; &lt;a href="https://github.com/advisories/GHSA-xh8f-g2qw-gcm7"&gt;GHSA-xh8f-g2qw-gcm7&lt;/a&gt;&lt;br&gt;
&lt;strong&gt;Affected scope:&lt;/strong&gt; Distributed erasure only; cluster-root / internode JWT required&lt;/p&gt;
&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></channel></rss>