CVE-2026-71192 Overview
CVE-2026-71192 is an authorization bypass vulnerability in OpenStack Swift through version 2.38.0. The S3API middleware fails to sanitize Swift-native control headers X-Copy-From and X-Copy-From-Account when processing S3 API requests configured with s3_acl=true. An attacker can inject these headers into a signed PUT request against a bucket they control. Swift then executes a server-side copy from an arbitrary tenant's private object, because the middleware authorized only the destination. The attacker reads any object whose project_id, container name, and object name are known, bypassing source ACLs and ownership checks entirely. The flaw is classified as [CWE-863: Incorrect Authorization].
Critical Impact
Authenticated tenants can read arbitrary objects across tenant boundaries when s3_acl=true is enabled, breaking multi-tenant isolation in affected OpenStack Swift deployments.
Affected Products
- OpenStack Swift versions up to and including 2.38.0
- Deployments using the S3API middleware with the non-default s3_acl=true configuration
- Multi-tenant object storage clouds exposing S3-compatible endpoints via Swift
Discovery Timeline
- 2026-08-05 - CVE-2026-71192 published to NVD
- 2026-08-05 - Last updated in NVD database
- OSSA-2026-030 - OpenStack Security Advisory published (OSSA-2026-030)
Technical Details for CVE-2026-71192
Vulnerability Analysis
OpenStack Swift's S3API middleware translates S3 protocol requests into native Swift operations. When s3_acl=true is configured, the middleware performs S3-style access control on the incoming request. The middleware validates authorization against the destination bucket and object, but forwards Swift-native control headers to the backend without stripping them.
The headers X-Copy-From and X-Copy-From-Account instruct Swift to perform a server-side copy from a specified account, container, and object. An attacker crafts a signed S3 PUT request targeting their own bucket and includes these headers. The middleware authorizes the PUT against the attacker's destination, then Swift executes the copy using the injected source path. No authorization check runs against the source object.
The result is a confidentiality breach limited to read access. Data integrity and availability of the victim tenant are not affected, since the attacker only exfiltrates a copy into their own container.
Root Cause
The root cause is missing input sanitization in the S3API middleware. Swift-native control headers must be stripped or rejected when they arrive on an S3 API request path, because the S3 protocol has no legitimate equivalent that would authorize cross-container reads. The middleware treats destination authorization as sufficient, violating the principle that copy operations require authorization on both source and destination.
Attack Vector
Exploitation requires valid S3 credentials on the target Swift deployment and knowledge of the victim's project_id, container name, and object name. The attacker sends a signed S3 PUT request to a bucket they own, adding X-Copy-From: /<victim_container>/<victim_object> and X-Copy-From-Account: <victim_project_id> headers. Swift copies the victim object into the attacker's container, where it can be read using standard S3 GET operations. The attack is remotely executable over the network and requires low complexity. Deployments running the default configuration where s3_acl is disabled are not vulnerable.
Detection Methods for CVE-2026-71192
Indicators of Compromise
- S3 PUT requests containing X-Copy-From or X-Copy-From-Account headers in proxy or middleware logs
- Server-side copy operations in Swift logs where the source account differs from the authenticated tenant
- Anomalous object creation in a tenant's container with content matching known objects from another tenant
- Access patterns showing enumeration of unfamiliar project_id or container name combinations
Detection Strategies
- Parse Swift proxy access logs for requests to the S3 endpoint that carry Swift-native X-Copy-From* headers
- Alert on any cross-account copy operations recorded in Swift backend logs where the requester is an S3 API client
- Correlate S3 authenticated identity with the account referenced in copy source paths to detect mismatches
- Baseline normal S3 PUT request headers per tenant and flag deviations that introduce Swift-native control headers
Monitoring Recommendations
- Enable verbose logging on the S3API middleware and forward logs to a centralized SIEM for retention and correlation
- Monitor object storage egress volumes per tenant and alert on sudden spikes that may indicate bulk exfiltration
- Track newly created objects whose sizes and hashes match objects in other tenants' containers
- Review authentication events for S3 credentials that begin issuing copy operations after periods of inactivity
How to Mitigate CVE-2026-71192
Immediate Actions Required
- Audit the Swift proxy configuration and identify whether s3_acl=true is set in proxy-server.conf; deployments using the default s3_acl=false are not affected
- If the non-default configuration cannot be immediately changed, apply the patch released in OpenStack Security Advisory OSSA-2026-030
- Review historical proxy logs for S3 requests containing X-Copy-From or X-Copy-From-Account headers and notify affected tenants if evidence of exploitation exists
- Rotate S3 credentials for tenants suspected of unauthorized access to cross-tenant data
Patch Information
OpenStack has published the fix in Security Advisory OSSA-2026-030. Additional technical detail is available in the Launchpad bug report and the Openwall OSS-Security disclosure. The patch modifies the S3API middleware to strip Swift-native copy headers from incoming S3 requests before forwarding them to the Swift backend.
Workarounds
- Set s3_acl=false in the S3API middleware configuration until the patched version can be deployed; this returns Swift to the default configuration that is not vulnerable
- Deploy a reverse proxy or WAF rule in front of the Swift proxy that drops X-Copy-From and X-Copy-From-Account headers on requests routed to the S3 endpoint
- Restrict S3 API access to trusted networks and require additional network-layer authentication while a patch is pending
# Configuration example: disable s3_acl in proxy-server.conf as a workaround
[filter:s3api]
use = egg:swift#s3api
s3_acl = false
Disclaimer: This content was generated using AI. While we strive for accuracy, please verify critical information with official sources.

