Attack ChainAIDerived
Hypothetical attack flow derived from CVE metadata – not a confirmed exploit chain
-
AccessObtain scoped presigned PUT URL
-
DeliveryAppend unsigned x-amz-copy-source header
-
ExploitBypass SigV4 signed-header enumeration check
-
ExecutionServer dispatches CopyObject as the signer
-
ImpactRead arbitrary objects the signing key can reach
Vulnerability Assessment
| Weakness |
CWE
OWASP Top 10:2025
A04:2025 - Cryptographic Failures
ASVS 5.0
V11 - Cryptography Signature verification
|
| Exploitation Conditions | Exploitation requires the attacker to already possess a valid SigV4 presigned URL (e.g., a presigned PUT scoped to one object) issued by MinIO through commit 7aac2a2 or pgsty/silo before commit 1233254, AND the access key behind that presigned URL must have read permission over additional buckets/objects for the attack to yield meaningful data. The concrete trigger is adding an x-amz-copy-source header to the otherwise-unmodified presigned request; MinIO dispatches CopyObject on that header's presence alone and, per extractSignedHeaders(), never rejects the unsigned x-amz-* header. Limiting factors: the attacker must be granted a presigned URL in the first place (so this is a privilege-escalation-from-delegated-credential, not fully unauthenticated), and the value of the breach is bounded by the signing key's own read scope. Amazon S3 is not affected - it returns HTTP 403 AccessDenied for the equivalent request. |
| Impact | This is a genuine signature-verification bypass (CWE-347) in MinIO's AWS SigV4 implementation, not a paper-tiger high-CVSS issue, but its real-world priority is moderate rather than emergency. The provided CVSS 3.1 vector (AV:N/AC:L/PR:L/UI:N/S:U/C:H/I:L/A:N = 7.1) is internally consistent with the described mechanism: the attacker must already hold a valid presigned PUT URL (hence PR:L, a delegated capability rather than PR:N), needs no user interaction, and gains high confidentiality impact (read of any object the signing key can reach) with only low integrity impact (a server-side object copy is created). No EPSS score, no CISA KEV listing, and no explicit proof-of-concept were supplied, so exploitation status is 'no public exploit identified at time of analysis' - however the description is unusually detailed at the code level (naming extractSignedHeaders() in cmd/signature-v4-utils.go and the CopyObject dispatch in cmd/api-router.go), which materially lowers the bar to weaponization for a skilled attacker. A key complicating signal: the upstream minio/minio GitHub repository was archived in April 2026, so the canonical product will likely NOT receive a fix; the only observed remediation is in the downstream fork pgsty/silo (commit 1233254). That combination - no upstream patch plus a widely deployed product - raises long-tail risk even though there is no evidence of active exploitation today. Note the CPE lists only minio:minio while the reference/patch evidence is entirely from pgsty/silo, a discrepancy defenders should reconcile. |
| Exploit ScenarioDerived | An application legitimately issues a presigned PUT URL scoped to a single object to a partner or client. The URL holder, instead of uploading, appends an unsigned x-amz-copy-source header to the unchanged URL; because MinIO routes CopyObject on the mere presence of that header and never checks that it was covered by the signature, the server performs a server-side copy executed as the signer, letting the holder exfiltrate any object the signing key can read. No public exploit code is identified, but the advisory describes the exact code paths, so exploitation is straightforward for a knowledgeable attacker. |
Get an e-mail when this CVE is exploited, patched or re-scored. Free account.
Alert meAnalysisAIv1 – Sep 25, 2026
Signature-verification bypass in MinIO (all releases through commit 7aac2a2) and in the pgsty/silo fork (before commit 1233254) lets an attacker who holds a valid SigV4 presigned PUT URL - one scoped to a single object - append an unsigned x-amz-copy-source header to the otherwise unmodified URL and cause a server-side CopyObject executed with the signer's credentials, converting a write grant into reads of every object that signing key can reach. The root cause is a CWE-347 improper-verification-of-signature error: extractSignedHeaders() in cmd/signature-v4-utils.go iterates only the client-claimed X-Amz-SignedHeaders list and never enumerates the x-amz-* headers that actually arrived, so an unsigned header is neither hashed into the canonical request nor rejected, while cmd/api-router.go dispatches CopyObject purely on the presence of x-amz-copy-source. Amazon S3 rejects the equivalent request with HTTP 403 AccessDenied; exploitation here requires a delegated presigned URL plus a signing key with broader read permission, making this a privilege escalation from a delegated credential rather than unauthenticated access, with no public exploit code or confirmed active exploitation identified at time of analysis.
RemediationAI
Apply the fix in pgsty/silo by upgrading to commit 1233254 or later (fix commit 1233254309b15571f101b2b26d531951ceaeef1e); the upstream fix is available as a commit, and a released/tagged patched version is not independently confirmed from the available data, so validate the build you deploy against that commit. Since minio/minio was archived in April 2026 and no MinIO-published patch is identified, operators still running MinIO must rely on compensating controls: restrict presigned URL issuance to trusted principals only and, more importantly, provision the access key used for presigning with the minimum read scope required - a dedicated key limited to the single bucket/prefix it writes to eliminates the data-exfiltration payoff entirely, though it requires credential re-provisioning and may break existing integrations that legitimately read across buckets. A reverse proxy or API gateway in front of the cluster can enforce the missing check by rejecting any request whose x-amz-* headers are not all present in X-Amz-SignedHeaders (or blocking x-amz-copy-source outright), with the trade-off that stripping or blocking that header breaks legitimate CopyObject and UploadPartCopy operations, so the rule should be scoped to presigned requests rather than applied globally. Note the assessed CVSS 3.1 vector AV:N/AC:L/PR:L/UI:N/S:U/C:H/I:L/A:N, which reflects the requirement for an attacker to already hold a delegated presigned credential.
Affected VersionsENISA
Affects your stack
Find out whether the stacks and servers you run are on an affected version.
Checking this CVE against your own stacks and servers is part of the Basic plan and up.
Technical ContextAI · show details
The vulnerability sits in MinIO's implementation of AWS Signature Version 4, the HMAC-based request authentication scheme used for the S3 API. A SigV4 client supplies an X-Amz-SignedHeaders list naming the headers it claims to have signed; the canonical request is built by hashing those named headers, and the server is supposed to reject any request whose x-amz-* headers are not all covered by the signature. Here, extractSignedHeaders() in cmd/signature-v4-utils.go trusts the claimed list exclusively and never enumerates the headers that actually arrived on the wire, so an attacker-added x-amz-copy-source header escapes both the canonical-request hash and any rejection check. The second half of the flaw is in cmd/api-router.go, which routes a request to CopyObject based on the mere presence of x-amz-copy-source, so the injected header alone is enough to change the operation semantics: instead of writing the presigned target object, the server performs a server-side copy of any source object the signing key can read. This corresponds to CWE-347 (Improper Verification of Cryptographic Signature) and affects products tracked under the CPE cpe:2.3:a:minio:minio:*:*:*:*:*:*:*:*, i.e. the entire MinIO server line through commit 7aac2a2, plus the pgsty/silo distribution before commit 1233254. Amazon S3 implements the correct behavior and returns HTTP 403 AccessDenied for the same request, which confirms the intended semantics. The upstream fix in pgsty/silo aligns the verifier with real S3 clients: tests are updated to re-sign copy requests so x-amz-copy-source and related headers are covered by the signature, the verifier now rejects unsigned x-amz-* headers, and PutObjectTaggingHandler was reordered so the derived x-amz-object-tagging header is injected only after signature verification rather than being synthesized beforehand from request-body data.
Know when Minio gets its next vulnerability
- Watch products and get an email when something new is published
- Check this CVE against your own stack and servers
- Exploit and PoC references, threat intelligence from 22 sources
No credit card · 7-day full trial
Severity by source
AV:N/AC:L/PR:L/UI:N/S:U/C:H/I:L/A:N
Holder of a delegated presigned URL is a low-privilege actor (PR:L); network vector, no user interaction, high confidentiality (broad object read) but only a copy is created (I:L), no availability impact.
Primary rating from Vendor (mitre).
CVSS VectorVendor: mitre
DescriptionCVE.org
MinIO through 7aac2a2 does not verify that every x-amz-* header present on a request also appears in the client-supplied X-Amz-SignedHeaders list. extractSignedHeaders() in cmd/signature-v4-utils.go iterates only the claimed list and never enumerates the headers that actually arrived, and thus a header that arrives unsigned is neither hashed into the canonical request nor rejected. Because cmd/api-router.go dispatches CopyObject on the presence of x-amz-copy-source alone, the holder of a presigned PUT URL scoped to a single object can add that header to the unmodified URL and cause a server-side copy, executed as the signer, of any object the signing key can read. A grant to write one object becomes a read of every bucket that key can reach. Amazon S3 rejects the equivalent request with HTTP 403 AccessDenied. The minio/minio GitHub repository was archived in April 2026; pgsty/silo before 1233254 is also affected.
Executive ViewAI
MinIO (all releases through commit 7aac2a2) and the pgsty/silo fork (before commit 1233254) contain a signature-verification bypass that lets a valid, object-scoped SigV4 presigned PUT URL be abused to read any object the signing key can access. Organizations using these object stores and delegating presigned write URLs face potential confidentiality loss and cross-tenant data exposure, undermining access-control assumptions. No public exploit identified at time of analysis and no vendor-released patch identified at time of analysis, so leadership should treat this as a high-priority access-control risk requiring immediate key governance and monitoring.
Block or strip x-amz-copy-source at a reverse proxy/WAF for presigned requests unless explicitly required; restrict and monitor issuance of SigV4 presigned PUT URLs; use least-privilege signing keys and short TTLs; rotate keys; alert on CopyObject and x-amz-copy-source anomalies; isolate MinIO/silo deployments from sensitive data until fixed. No vendor-released patch identified at time of analysis.
Threat Intelligence Overview
How this decision was reached
The engine reads each signal below and applies a fixed list of rules from top to bottom. The first rule that matches sets the recommended action – like a statement, every line is shown.
What every action level means
SSVC AssessmentENISA
Priority Score
Attack Technique
Information disclosure occurs when an application unintentionally exposes sensitive data that aids attackers in reconnaissance or directly compromises security.
Minio is a Multi-Cloud Object Storage framework. Rated high severity (CVSS 8.8), this vulnerability is remotely exploita
Minio is a Multi-Cloud Object Storage framework. Rated high severity (CVSS 8.8), this vulnerability is remotely exploita
MinIO is a High Performance Object Storage released under GNU Affero General Public License v3.0. Rated high severity (C
MinIO is a High Performance Object Storage released under Apache License v2.0. Rated high severity (CVSS 7.7), this vuln
Minio is a Multi-Cloud Object Storage framework. Rated high severity (CVSS 7.5), this vulnerability is remotely exploita
MinIO is a multi-cloud object storage solution. Rated high severity (CVSS 7.5), this vulnerability is remotely exploitab
Minio is a Multi-Cloud Object Storage framework. Rated medium severity (CVSS 6.5), this vulnerability is remotely exploi
MinIO is an open-source high performance object storage service and it is API compatible with Amazon S3 cloud storage se
MinIO is an open-source high performance object storage service and it is API compatible with Amazon S3 cloud storage se
Unauthenticated attackers can forge Embedded Console session tokens against MinIO deployments built up to RELEASE.2025-1
Authentication bypass in MinIO RELEASE.2023-05-18T00-05-36Z through RELEASE.2026-04-11T03-20-12Z allows remote unauthent
Authentication bypass in MinIO object storage allows remote attackers to write arbitrary objects to any bucket using onl
EUVD-2026-86510
GHSA-r7wh-x6rf-8g63
NVD
CVE.org
EPSS
Vulnrichment
Exploit-DB