<Vulnerability name="CVE-2026-71190">
    <DocumentDistribution xml:lang="en">Copyright © 2012 Red Hat, Inc. All rights reserved.</DocumentDistribution>
    <ThreatSeverity>Moderate</ThreatSeverity>
    <PublicDate>2026-07-28T15:00:00</PublicDate>
    <Bugzilla id="2503395" url="https://bugzilla.redhat.com/show_bug.cgi?id=2503395" xml:lang="en:us">
openstack-swift: openstack-swift: Unauthenticated denial of service via catastrophic backtracking in Accept header parser
    </Bugzilla>
    <CVSS3 status="draft">
        <CVSS3BaseScore>7.5</CVSS3BaseScore>
        <CVSS3ScoringVector>CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:H</CVSS3ScoringVector>
    </CVSS3>
    <CWE>CWE-1333</CWE>
    <Details xml:lang="en:us" source="Mitre">
In OpenStack Swift through 2.38.0, the proxy server Accept header parser contains a regular expression vulnerable to catastrophic backtracking (ReDoS). The "qdtext" pattern (?:[^"]|\\.)* allows an unauthenticated remote attacker to send a crafted Accept header that causes exponential CPU consumption in the proxy worker. A payload of 32 backslash-character pairs exceeds 30 seconds of CPU time. No authentication is required. Repeated requests can exhaust all proxy worker threads, resulting in a complete denial of service.
    </Details>
    <Details xml:lang="en:us" source="Red Hat">
A flaw was found in OpenStack Swift's proxy server. The Accept header parser uses a regular expression that is vulnerable to catastrophic backtracking. An unauthenticated attacker can send a crafted Accept header with a small number of backslash characters in an unterminated quoted string, causing a proxy worker to consume 100% CPU for an extended period. Because the regex evaluation runs at the C level, client disconnection does not interrupt the computation. Repeated requests can exhaust all proxy worker threads, resulting in a complete denial of service for the Swift object storage cluster.
    </Details>
    <Statement xml:lang="en:us">
Red Hat OpenStack Platform (RHOSP) and Red Hat OpenStack Services on OpenShift (RHOSO) ship OpenStack Swift as the openstack-swift package. Deployments using the default proxy-server pipeline configuration are affected because the listing_formats middleware processes Accept headers before authentication. The vulnerability is accessible without authentication on account and container listing endpoints (GET/HEAD requests).

In RHOSP deployments, operators who manage their own load balancer (HAProxy, nginx) can apply the header size limit mitigation described above as a temporary measure until the fix is backported.

In RHOSO deployments, the Swift API sits behind an OpenShift-managed HAProxy with configuration limited to OCP route annotations, which do not support the header inspection rules needed for effective mitigation. For RHOSO, backporting the upstream fix is the only effective remediation.
    </Statement>
    <Acknowledgement xml:lang="en:us">
Upstream acknowledges Christian Schwede (NVIDIA) as the original reporter.
    </Acknowledgement>
    <Mitigation xml:lang="en:us">
Deploy a reverse proxy (such as HAProxy, nginx, or Apache httpd) in front of the Swift proxy server and configure it to limit the size of the Accept request header. A limit of 256 bytes is sufficient for all legitimate Accept header values used by Swift clients. For example, in HAProxy: use 'http-request deny if { req.hdr(accept) -m len gt 256 }'. In nginx: use 'large_client_header_buffers' to restrict header size. Alternatively, a WAF rule can be deployed to reject Accept headers containing backslash characters in quoted strings without a closing quote, though the header size limit is simpler and more robust. Note that Swift's built-in max_header_size (default 8192 bytes) does NOT mitigate this vulnerability because the exponential backtracking is triggered with as few as 27 backslash-character pairs (~54 bytes).

In Red Hat OpenStack Services on OpenShift (RHOSO) environments, the Swift API is deployed behind an OpenShift-managed HAProxy load balancer. The available OCP route annotations do not support custom header inspection rules such as 'http-request deny if', making the header size limit approach not feasible. Rate limiting via route annotations (e.g., rate-limit-connections.rate-http) provides only partial protection, as a single crafted request can still lock a proxy worker for minutes, and attackers using multiple source IPs can bypass per-IP limits. Additionally, default rate limits cannot be shipped as a mitigation because they would break deployer configurations. For RHOSO deployments, applying the upstream patch backport is the only effective remediation.
    </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-71190
https://nvd.nist.gov/vuln/detail/CVE-2026-71190
https://launchpad.net/bugs/2158771
    </References>
</Vulnerability>