Skip to content
Heist/ feed
Back to feed
High

Ceph RGW SigV4 handler accepts unsigned x-amz-* headers on presigned requests, allowing privilege escalation

Type: advisorySources: OSV

Ceph is an open-source distributed storage platform providing object, block, and file storage. In versions prior to 20.2.4 and 19.2.6, the Ceph Object Gateway (RGW) SigV4 handler does not reject requests that carry x-amz-* headers absent from the signed header set, allowing anyone holding a presigned URL to attach arbitrary unsigned x-amz-* headers that RGW will honor. AWS S3 requires every x-amz-* header on a SigV4 request to be signed and rejects requests bearing additional unsigned headers, but RGW validates only the headers listed in X-Amz-SignedHeaders and ignores any extra ones, so they take effect without being covered by the signature. By adding such headers to a presigned PUT URL, an attacker can grant themselves more capabilities than the URL's signer intended and escalate their privileges. This issue is fixed in versions 20.2.4 and 19.2.6.

Products
Not specified
Affected versions
Not specified
Fixed versions
Not specified
CVEs
CVE-2026-54330
Confirmed fixed CVEs
Not specified
Updated in this feed
3 Nov 2026, 15:11 UTC · Revision 1

Source evidence

Ceph RGW SigV4 handler accepts unsigned x-amz-* headers on presigned requests, allowing privilege escalation

core-osv · Original source

Published 27 Aug 2026, 20:59 UTC

Ceph is an open-source distributed storage platform providing object, block, and file storage. In versions prior to 20.2.4 and 19.2.6, the Ceph Object Gateway (RGW) SigV4 handler does not reject requests that carry x-amz-* headers absent from the signed header set, allowing anyone holding a presigned URL to attach arbitrary unsigned x-amz-* headers that RGW will honor. AWS S3 requires every x-amz-* header on a SigV4 request to be signed and rejects requests bearing additional unsigned headers, but RGW validates only the headers listed in X-Amz-SignedHeaders and ignores any extra ones, so they take effect without being covered by the signature. By adding such headers to a presigned PUT URL, an attacker can grant themselves more capabilities than the URL's signer intended and escalate their privileges. This issue is fixed in versions 20.2.4 and 19.2.6.

osv:CVE-2026-54330
Complete source record
{
  "id": "9f4c2541eef164ca2bcc637293a9f3e85337ca5cf7e092d82d31193a7290ab50",
  "url": "https://osv.dev/vulnerability/CVE-2026-54330",
  "method": "structured",
  "payload": {
    "kind": "advisory",
    "title": "Ceph RGW SigV4 handler accepts unsigned x-amz-* headers on presigned requests, allowing privilege escalation",
    "summary": "Ceph is an open-source distributed storage platform providing object, block, and file storage. In versions prior to 20.2.4 and 19.2.6, the Ceph Object Gateway (RGW) SigV4 handler does not reject requests that carry x-amz-* headers absent from the signed header set, allowing anyone holding a presigned URL to attach arbitrary unsigned x-amz-* headers that RGW will honor. AWS S3 requires every x-amz-* header on a SigV4 request to be signed and rejects requests bearing additional unsigned headers, but RGW validates only the headers listed in X-Amz-SignedHeaders and ignores any extra ones, so they take effect without being covered by the signature. By adding such headers to a presigned PUT URL, an attacker can grant themselves more capabilities than the URL's signer intended and escalate their privileges. This issue is fixed in versions 20.2.4 and 19.2.6.",
    "evidence": "osv:CVE-2026-54330",
    "products": [],
    "severity": "high",
    "structured": {
      "id": "CVE-2026-54330",
      "aliases": [
        "BIT-ceph-2026-54330",
        "CVE-2026-54330",
        "GHSA-rmjq-ffrm-j6vj"
      ],
      "metrics": [
        {
          "type": "CVSS_V3",
          "score": "CVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:U/C:H/I:H/A:N"
        }
      ],
      "affected": [
        {
          "ranges": [
            {
              "repo": "https://github.com/ceph/ceph",
              "type": "GIT",
              "events": [
                {
                  "introduced": "1680e466aab77cdf9ba07394bea664106580b32b"
                },
                {
                  "fixed": "f9fd95b4335bad6a26d7a74468f55d269e8dbef4"
                },
                {
                  "introduced": "3d911bce7d6557aa2d1826543a4a4e88981639da"
                },
                {
                  "fixed": "7f793731f1b39eb4f465e960113d2363c311b964"
                },
                {
                  "fixed": "5837aa8e60471128dbb672b0ff6f1b1feebe08a7"
                },
                {
                  "fixed": "5978c866d4a0812fbb024745c4f1e79aaecd6c6a"
                }
              ],
              "database_specific": {
                "extracted_events": [
                  {
                    "range": [
                      {
                        "introduced": "19.0.0"
                      },
                      {
                        "fixed": "19.2.6"
                      }
                    ],
                    "source": "AFFECTED_FIELD",
                    "strategy": "StringRangeExpression"
                  },
                  {
                    "range": [
                      {
                        "introduced": "20.0.0"
                      },
                      {
                        "fixed": "20.2.4"
                      }
                    ],
                    "source": "AFFECTED_FIELD",
                    "strategy": "StringRangeExpression"
                  },
                  {
                    "range": [
                      {
                        "fixed": "5837aa8e60471128dbb672b0ff6f1b1feebe08a7"
                      }
                    ],
                    "source": "REFERENCES_COMMIT"
                  },
                  {
                    "range": [
                      {
                        "fixed": "5978c866d4a0812fbb024745c4f1e79aaecd6c6a"
                      }
                    ],
                    "source": "REFERENCES_COMMIT"
                  }
                ]
              }
            }
          ],
          "versions": [
            "v20.2.3",
            "v19.2.5",
            "v20.2.2-pre.ibm",
            "v20.2.1-pre.ibm.0",
            "v20.1.0-pre.ibm.2",
            "v20.1.0-pre.ibm.1",
            "v20.0.0-pre.ibm",
            "v19.0.0"
          ],
          "database_specific": {
            "source": "https://storage.googleapis.com/cve-osv-conversion/osv-output/CVE-2026-54330.json"
          }
        }
      ],
      "modified": "2026-10-28T02:30:29.615387435Z",
      "provider": "osv",
      "references": [
        "https://github.com/CVEProject/cvelistV5/tree/main/cves/2026/54xxx/CVE-2026-54330.json",
        "https://github.com/ceph/ceph/security/advisories/GHSA-rmjq-ffrm-j6vj",
        "https://nvd.nist.gov/vuln/detail/CVE-2026-54330",
        "https://github.com/ceph/ceph/commit/5837aa8e60471128dbb672b0ff6f1b1feebe08a7",
        "https://github.com/ceph/ceph/commit/5978c866d4a0812fbb024745c4f1e79aaecd6c6a"
      ],
      "provider_metadata": {
        "cwe_ids": [
          "CWE-347"
        ],
        "cna_assigner": "GitHub_M",
        "osv_generated_from": "https://github.com/CVEProject/cvelistV5/tree/main/cves/2026/54xxx/CVE-2026-54330.json"
      }
    },
    "related_cves": [
      {
        "value": "CVE-2026-54330",
        "evidence": "/id"
      }
    ],
    "security_relevant": true,
    "severity_evidence": "/severity/0/score"
  },
  "source_id": "core-osv",
  "document_id": 496696,
  "published_at": "2026-08-27T20:59:24.688+00:00"
}