Bug 2507992 (CVE-2026-66797) - CVE-2026-66797 cluster-backup-operator: cluster-backup-operator: Velero Restore includes cluster-scoped RBAC resources with no exclusion — tampered backup yields hub cluster-admin
Summary: CVE-2026-66797 cluster-backup-operator: cluster-backup-operator: Velero Resto...
Keywords:
Status: NEW
Alias: CVE-2026-66797
Product: Security Response
Classification: Other
Component: vulnerability
Version: unspecified
Hardware: All
OS: Linux
high
high
Target Milestone: ---
Assignee: Product Security
QA Contact:
URL:
Whiteboard:
Depends On:
Blocks:
TreeView+ depends on / blocked
 
Reported: 2026-07-28 13:52 UTC by OSIDB Bzimport
Modified: 2026-08-11 16:26 UTC (History)
3 users (show)

Fixed In Version:
Clone Of:
Environment:
Last Closed:
Embargoed:


Attachments (Terms of Use)

Description OSIDB Bzimport 2026-07-28 13:52:20 UTC
The cluster-backup-operator creates Velero Restore objects with IncludeClusterResources=true and ExistingResourcePolicy=update (controllers/restore.go setOptionalProperties()), excluding only CustomResourceDefinition from ExcludedResources. The backup schedule limits backups to specific API groups (open-cluster-management.io, hive.openshift.io, etc.) that do not include rbac.authorization.k8s.io, but the restore path does not re-apply this allow-list — it trusts whatever is inside the backup tarball fetched from object storage.

An attacker who can write to the backup storage location (e.g. S3 bucket) or create a Velero Backup object directly can inject a ClusterRoleBinding granting themselves cluster-admin. When a Restore CR is created in the open-cluster-management-backup namespace, the operator restores the tampered backup content including the malicious RBAC objects, escalating the attacker from backup-namespace-admin to hub cluster-admin.

Additionally, getVeleroBackupName (restore.go:678-687) resolves a user-supplied backup name by bare {Name, Namespace} Get with no velero.io/schedule-name or BackupScheduleClusterLabel provenance check, allowing the attacker to reference any Velero Backup object regardless of origin.

Confirmed by static triage at SHA 7f488e2e and remediation verification at HEAD 6248fd4 — root cause not addressed.


Note You need to log in before you can comment on or make changes to this bug.