Skip to main content

MinIO EUVDEUVD-2026-86510

| CVE-2026-97731 HIGH
Improper Verification of Cryptographic Signature (CWE-347)
2026-09-25 mitre GHSA-r7wh-x6rf-8g63
7.1
CVSS 3.1 · Vendor: mitre
View

Attack ChainAIDerived

Hypothetical attack flow derived from CVE metadata – not a confirmed exploit chain

  1. Access
    Obtain scoped presigned PUT URL
  2. Delivery
    Append unsigned x-amz-copy-source header
  3. Exploit
    Bypass SigV4 signed-header enumeration check
  4. Execution
    Server dispatches CopyObject as the signer
  5. Impact
    Read 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.

This Week Schedule remediation this week. Why: HIGH severity (CVSS 7.0-8.9).
No patch listed yet 0.2% exploitation probability (EPSS)

Get an e-mail when this CVE is exploited, patched or re-scored. Free account.

Alert me

AnalysisAIv1 – 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

minio 0 ≤7aac2a2c5b7c882e68c1ce017d8256be2feea27f

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

Vendor (mitre) PRIMARY 7.1 HIGH
AV:N/AC:L/PR:L/UI:N/S:U/C:H/I:L/A:N
vuln.today AI 7.1 HIGH

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.

3.1 AV:N/AC:L/PR:L/UI:N/S:U/C:H/I:L/A:N
4.0 AV:N/AC:L/AT:N/PR:L/UI:N/VC:H/VI:L/VA:N/SC:N/SI:N/SA:N

Primary rating from Vendor (mitre).

CVSS VectorVendor: mitre

Attack Vector
Network
Attack Complexity
Low
Privileges Required
Low
User Interaction
None
Scope
Unchanged
Confidentiality
High
Integrity
Low
Availability
None

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

Why It Matters

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.

Business Impact: High
Compensating Controls

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

EPSS Score
0.2%
Top 96% exploitable
Prevalence
High
MinIO is a very widely deployed S3-compatible object storage across cloud and on-prem
Data Quality
6 sources
Confidence: High

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.

SignalValue
Severity HIGH
CISA KEV No
Public POC No
EPSS 0.2%
Patch available No
Active threat No
Deciding rule
HIGH severity (CVSS 7.0-8.9)
What every action level means
Emergency Immediate action required. Criteria: CRITICAL + in CISA KEV (actively exploited) without patch, OR CRITICAL + EPSS > 30% without patch, OR CRITICAL + active threat signals without patch.
Act Now Prioritize within 24-48h. Criteria: in KEV with patch available, OR CRITICAL + public POC, OR HIGH + EPSS > 10%, OR CRITICAL + active threat, OR any CRITICAL severity.
This Week Schedule remediation this week. Criteria: HIGH severity (CVSS 7.0-8.9). Patch within normal change window.
This Month Plan within 30 days. Criteria: MEDIUM severity (CVSS 4.0-6.9), lower exploitation probability. Include in regular patch cycle.
Monitor Track and reassess. Criteria: LOW severity (CVSS 0.1-3.9), minimal exploitation risk. No immediate action needed.

SSVC AssessmentENISA

SSVC Decision
Scheduled
Exploitation
None
System Exposure· derived
Open
Automatable
No
Human Impact
High
Technical Impact
Partial

Priority Score

36
Low Medium High Critical
KEV: 0
EPSS: 0
CVSS: +36
PoC: 0
Weaponized: 0
Threat intel: 0
Gov advisory: 0

Attack Technique

Information disclosure occurs when an application unintentionally exposes sensitive data that aids attackers in reconnaissance or directly compromises security.

More in Minio

View all
CVE-2023-28434 HIGH POC
8.8 Mar 22

Minio is a Multi-Cloud Object Storage framework. Rated high severity (CVSS 8.8), this vulnerability is remotely exploita

CVE-2023-25812 HIGH POC
8.8 Feb 21

Minio is a Multi-Cloud Object Storage framework. Rated high severity (CVSS 8.8), this vulnerability is remotely exploita

CVE-2022-24842 HIGH POC
8.8 Apr 12

MinIO is a High Performance Object Storage released under GNU Affero General Public License v3.0. Rated high severity (C

CVE-2021-21287 HIGH POC
7.7 Feb 01

MinIO is a High Performance Object Storage released under Apache License v2.0. Rated high severity (CVSS 7.7), this vuln

CVE-2023-28432 HIGH POC
7.5 Mar 22

Minio is a Multi-Cloud Object Storage framework. Rated high severity (CVSS 7.5), this vulnerability is remotely exploita

CVE-2022-31028 HIGH POC
7.5 Jun 07

MinIO is a multi-cloud object storage solution. Rated high severity (CVSS 7.5), this vulnerability is remotely exploitab

CVE-2023-27589 MEDIUM POC
6.5 Mar 14

Minio is a Multi-Cloud Object Storage framework. Rated medium severity (CVSS 6.5), this vulnerability is remotely exploi

CVE-2021-21362 MEDIUM POC
6.5 Mar 08

MinIO is an open-source high performance object storage service and it is API compatible with Amazon S3 cloud storage se

CVE-2021-21390 MEDIUM POC
5.9 Mar 19

MinIO is an open-source high performance object storage service and it is API compatible with Amazon S3 cloud storage se

CVE-2026-113466 MEDIUM POC
5.5 Oct 20

Unauthenticated attackers can forge Embedded Console session tokens against MinIO deployments built up to RELEASE.2025-1

CVE-2026-40344 HIGH
8.8 Apr 22

Authentication bypass in MinIO RELEASE.2023-05-18T00-05-36Z through RELEASE.2026-04-11T03-20-12Z allows remote unauthent

CVE-2026-41145 HIGH
8.8 Apr 22

Authentication bypass in MinIO object storage allows remote attackers to write arbitrary objects to any bucket using onl

This site uses cookies essential for authentication and security. No tracking or analytics cookies are used. Privacy Policy