<Vulnerability name="CVE-2026-71191">
    <DocumentDistribution xml:lang="en">Copyright © 2012 Red Hat, Inc. All rights reserved.</DocumentDistribution>
    <ThreatSeverity>Important</ThreatSeverity>
    <PublicDate>2026-07-28T15:00:00</PublicDate>
    <Bugzilla id="2503670" url="https://bugzilla.redhat.com/show_bug.cgi?id=2503670" xml:lang="en:us">
openstack-swift: openstack-swift: S3API presigned URL unsigned header authorization bypass
    </Bugzilla>
    <CVSS3 status="draft">
        <CVSS3BaseScore>8.2</CVSS3BaseScore>
        <CVSS3ScoringVector>CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:L/A:N</CVSS3ScoringVector>
    </CVSS3>
    <CWE>CWE-863</CWE>
    <Details xml:lang="en:us" source="Mitre">
In OpenStack Swift through 2.38.0, S3API middleware does not enforce that semantic x-amz-* headers are covered by the SigV4 signature on presigned URL requests. An attacker who obtains a presigned PUT URL can inject an unsigned X-Amz-Copy-Source header, causing Swift to perform a server-side copy from an arbitrary source object using the signer's authorization context. The attacker can read any object the signer has access to, provided the target project_id, container name, and object name are known. This affects all deployments using the default s3_acl=false configuration.
    </Details>
    <Details xml:lang="en:us" source="Red Hat">
A flaw was found in the S3API middleware of OpenStack Swift. The SigV4 presigned URL implementation does not require that semantic x-amz-* headers be included in the request signature. An attacker who obtains a presigned PUT URL can inject unsigned headers such as X-Amz-Copy-Source to copy objects from the signer's storage, bypassing the intended scope of the presigned URL authorization. The attacker needs prior knowledge of the target project_id, container name, and object name.
    </Details>
    <Statement xml:lang="en:us">
Red Hat OpenStack Platform (RHOSP) and Red Hat OpenStack Services on OpenShift (RHOSO) ship openstack-swift and are affected by this vulnerability. In default RHOSO deployments, the s3api filter is included in the active proxy-server pipeline, and the s3_acl option is not explicitly set (defaulting to false). SigV4 presigned URL requests are processed through the S3API middleware and are vulnerable. All RHOSP (13, 16.2, 17.1) and RHOSO (18.0) deployments with s3api enabled in the pipeline are affected.
    </Statement>
    <Acknowledgement xml:lang="en:us">
Upstream acknowledges Christian Schwede (NVIDIA) as the original reporter.
    </Acknowledgement>
    <Mitigation xml:lang="en:us">
If S3 API compatibility is not required, remove the s3api filter from the proxy-server pipeline in proxy-server.conf. This completely eliminates the attack surface. If S3 API is required, restrict the distribution and scope of presigned PUT URLs as an operational control, and apply the upstream patch when available. There is no configuration-only workaround that fully mitigates this issue while keeping S3 API functionality enabled.
    </Mitigation>
    <PackageState cpe="cpe:/a:redhat:openstack:13">
        <ProductName>Red Hat OpenStack Platform 13 (Queens)</ProductName>
        <FixState>Will not fix</FixState>
        <PackageName>rhosp13/openstack-swift-account</PackageName>
    </PackageState>
    <PackageState cpe="cpe:/a:redhat:openstack:13">
        <ProductName>Red Hat OpenStack Platform 13 (Queens)</ProductName>
        <FixState>Will not fix</FixState>
        <PackageName>rhosp13/openstack-swift-base</PackageName>
    </PackageState>
    <PackageState cpe="cpe:/a:redhat:openstack:13">
        <ProductName>Red Hat OpenStack Platform 13 (Queens)</ProductName>
        <FixState>Will not fix</FixState>
        <PackageName>rhosp13/openstack-swift-container</PackageName>
    </PackageState>
    <PackageState cpe="cpe:/a:redhat:openstack:13">
        <ProductName>Red Hat OpenStack Platform 13 (Queens)</ProductName>
        <FixState>Will not fix</FixState>
        <PackageName>rhosp13/openstack-swift-object</PackageName>
    </PackageState>
    <PackageState cpe="cpe:/a:redhat:openstack:13">
        <ProductName>Red Hat OpenStack Platform 13 (Queens)</ProductName>
        <FixState>Will not fix</FixState>
        <PackageName>rhosp13/openstack-swift-proxy-server</PackageName>
    </PackageState>
    <PackageState cpe="cpe:/a:redhat:openstack:16.2">
        <ProductName>Red Hat OpenStack Platform 16.2</ProductName>
        <FixState>Affected</FixState>
        <PackageName>openstack-swift</PackageName>
    </PackageState>
    <PackageState cpe="cpe:/a:redhat:openstack:16.2">
        <ProductName>Red Hat OpenStack Platform 16.2</ProductName>
        <FixState>Affected</FixState>
        <PackageName>rhosp-rhel8/openstack-swift-account</PackageName>
    </PackageState>
    <PackageState cpe="cpe:/a:redhat:openstack:16.2">
        <ProductName>Red Hat OpenStack Platform 16.2</ProductName>
        <FixState>Affected</FixState>
        <PackageName>rhosp-rhel8/openstack-swift-base</PackageName>
    </PackageState>
    <PackageState cpe="cpe:/a:redhat:openstack:16.2">
        <ProductName>Red Hat OpenStack Platform 16.2</ProductName>
        <FixState>Affected</FixState>
        <PackageName>rhosp-rhel8/openstack-swift-container</PackageName>
    </PackageState>
    <PackageState cpe="cpe:/a:redhat:openstack:16.2">
        <ProductName>Red Hat OpenStack Platform 16.2</ProductName>
        <FixState>Affected</FixState>
        <PackageName>rhosp-rhel8/openstack-swift-object</PackageName>
    </PackageState>
    <PackageState cpe="cpe:/a:redhat:openstack:16.2">
        <ProductName>Red Hat OpenStack Platform 16.2</ProductName>
        <FixState>Affected</FixState>
        <PackageName>rhosp-rhel8/openstack-swift-proxy-server</PackageName>
    </PackageState>
    <PackageState cpe="cpe:/a:redhat:openstack:17.1">
        <ProductName>Red Hat OpenStack Platform 17.1</ProductName>
        <FixState>Affected</FixState>
        <PackageName>openstack-swift</PackageName>
    </PackageState>
    <PackageState cpe="cpe:/a:redhat:openstack:17.1">
        <ProductName>Red Hat OpenStack Platform 17.1</ProductName>
        <FixState>Affected</FixState>
        <PackageName>rhosp-rhel9/openstack-swift-account</PackageName>
    </PackageState>
    <PackageState cpe="cpe:/a:redhat:openstack:17.1">
        <ProductName>Red Hat OpenStack Platform 17.1</ProductName>
        <FixState>Affected</FixState>
        <PackageName>rhosp-rhel9/openstack-swift-base</PackageName>
    </PackageState>
    <PackageState cpe="cpe:/a:redhat:openstack:17.1">
        <ProductName>Red Hat OpenStack Platform 17.1</ProductName>
        <FixState>Affected</FixState>
        <PackageName>rhosp-rhel9/openstack-swift-container</PackageName>
    </PackageState>
    <PackageState cpe="cpe:/a:redhat:openstack:17.1">
        <ProductName>Red Hat OpenStack Platform 17.1</ProductName>
        <FixState>Affected</FixState>
        <PackageName>rhosp-rhel9/openstack-swift-object</PackageName>
    </PackageState>
    <PackageState cpe="cpe:/a:redhat:openstack:17.1">
        <ProductName>Red Hat OpenStack Platform 17.1</ProductName>
        <FixState>Affected</FixState>
        <PackageName>rhosp-rhel9/openstack-swift-proxy-server</PackageName>
    </PackageState>
    <PackageState cpe="cpe:/a:redhat:openstack:18.0">
        <ProductName>Red Hat OpenStack Platform 18.0</ProductName>
        <FixState>Affected</FixState>
        <PackageName>openstack-swift</PackageName>
    </PackageState>
    <PackageState cpe="cpe:/a:redhat:openstack:18.0">
        <ProductName>Red Hat OpenStack Platform 18.0</ProductName>
        <FixState>Affected</FixState>
        <PackageName>rhoso/openstack-swift-account-rhel9</PackageName>
    </PackageState>
    <PackageState cpe="cpe:/a:redhat:openstack:18.0">
        <ProductName>Red Hat OpenStack Platform 18.0</ProductName>
        <FixState>Affected</FixState>
        <PackageName>rhoso/openstack-swift-base-rhel9</PackageName>
    </PackageState>
    <PackageState cpe="cpe:/a:redhat:openstack:18.0">
        <ProductName>Red Hat OpenStack Platform 18.0</ProductName>
        <FixState>Affected</FixState>
        <PackageName>rhoso/openstack-swift-container-rhel9</PackageName>
    </PackageState>
    <PackageState cpe="cpe:/a:redhat:openstack:18.0">
        <ProductName>Red Hat OpenStack Platform 18.0</ProductName>
        <FixState>Affected</FixState>
        <PackageName>rhoso/openstack-swift-object-rhel9</PackageName>
    </PackageState>
    <PackageState cpe="cpe:/a:redhat:openstack:18.0">
        <ProductName>Red Hat OpenStack Platform 18.0</ProductName>
        <FixState>Affected</FixState>
        <PackageName>rhoso/openstack-swift-proxy-server-rhel9</PackageName>
    </PackageState>
    <References xml:lang="en:us">
https://www.cve.org/CVERecord?id=CVE-2026-71191
https://nvd.nist.gov/vuln/detail/CVE-2026-71191
https://launchpad.net/bugs/2158733
    </References>
</Vulnerability>