The Apache CloudStack project announces the LTS release of 4.19.3.0 and 4.20.1.0 that includes fixes that address the following security issues:
- CVE-2025-26521 (severity 'Critical') - CVE-2025-30675 (severity 'Low') - CVE-2025-47713 (severity 'Critical') - CVE-2025-47849 (severity 'Moderate') - CVE-2025-22829 (severity 'Low') # CVE-2025-26521: CKS cluster in Project Exposes User API Keys When an Apache CloudStack user-account creates a CKS-based Kubernetes cluster in a project, the API key and the secret key of the 'kubeadmin' user of the caller account are used to create the secret config in the CKS-based Kubernetes cluster. A member of the project who can access the CKS-based Kubernetes cluster, can also access the API key and secret key of the 'kubeadmin' user of the CKS cluster's creator's account. An attacker who's a member of the project can exploit this to impersonate and perform privileged actions that can result in complete compromise of the confidentiality, integrity, and availability of resources owned by the creator's account. CKS users are recommended to upgrade to version 4.19.3.0 or 4.20.1.0, which fixes this issue. Updating Existing Kubernetes Clusters in Projects A service account should be created for each project to provide limited access specifically for Kubernetes cluster providers and autoscaling. Follow the steps below to create a new service account, update the secret inside the cluster, and regenerate existing API and service keys: 1. Create a New Service Account Create a new account using the role "Project Kubernetes Service Role" with the following details: Account Name: kubeadmin-<FIRST_EIGHT_CHARACTERS_OF_PROJECT_ID> First Name: Kubernetes Last Name: Service User Account Type: 0 (Normal User) Role ID: <ID_OF_SERVICE_ROLE> 2. Add the Service Account to the Project Add this account to the project where the Kubernetes cluster(s) are hosted. 3. Generate API and Secret Keys Generate API Key and Secret Key for the default user of this account. 4. Update the CloudStack Secret in the Kubernetes Cluster Create a temporary file /tmp/cloud-config with the following data: api-url = <API_URL> # For example: <MS_URL>/client/api api-key = <SERVICE_USER_API_KEY> secret-key = <SERVICE_USER_SECRET_KEY> project-id = <PROJECT_ID> Delete the existing secret using kubectl and Kubernetes cluster config: ./kubectl --kubeconfig kube.conf -n kube-system delete secret cloudstack-secret Create a new secret using kubectl and Kubernetes cluster config: ./kubectl --kubeconfig kube.conf -n kube-system create secret generic cloudstack-secret --from-file=/tmp/cloud-config Remove the temporary file: rm /tmp/cloud-config 5. Regenerate API and Secret Keys Regenerate the API and secret keys for the original user account that was used to create the Kubernetes cluster. # CVE-2025-30675: Unauthorised template/ISO list access to the domain/resource admins In Apache CloudStack, a flaw in access control affects the listTemplates and listIsos APIs. A malicious Domain Admin or Resource Admin can exploit this issue by intentionally specifying the 'domainid' parameter along with the 'filter=self' or 'filter=selfexecutable' values. This allows the attacker to gain unauthorized visibility into templates and ISOs under the ROOT domain. A malicious admin can enumerate and extract metadata of templates and ISOs that belong to unrelated domains, violating isolation boundaries and potentially exposing sensitive or internal configuration details. This vulnerability has been fixed by ensuring the domain resolution strictly adheres to the caller's scope rather than defaulting to the ROOT domain. Affected users are recommended to upgrade to Apache CloudStack 4.19.3.0 or 4.20.1.0. # CVE-2025-47713: Domain Admin can reset Admin password in Root Domain A privilege escalation vulnerability exists in Apache CloudStack versions 4.10.0.0 through 4.20.0.0 where a malicious Domain Admin user in the ROOT domain can reset the password of user-accounts of Admin role type. This operation is not appropriately restricted and allows the attacker to assume control over higher-privileged user-accounts. A malicious Domain Admin attacker can impersonate an Admin user-account and gain access to sensitive APIs and resources that could result in the compromise of resource integrity and confidentiality, data loss, denial of service, and availability of infrastructure managed by CloudStack. Users are recommended to upgrade to Apache CloudStack 4.19.3.0 or 4.20.1.0, which fixes the issue with the following: Strict validation on Role Type hierarchy: the caller's user-account role must be equal to or higher than the target user-account's role. API privilege comparison: the caller must possess all privileges of the user they are operating on. Two new domain-level settings (restricted to the default Admin): - role.types.allowed.for.operations.on.accounts.of.same.role.type: Defines which role types are allowed to act on users of the same role type. Default: "Admin, DomainAdmin, ResourceAdmin". - allow.operations.on.users.in.same.account: Allows/disallows user operations within the same account. Default: true. # CVE-2025-47849: Insecure access of user's API/Secret Keys in the same domain A privilege escalation vulnerability exists in Apache CloudStack versions 4.10.0.0 through 4.20.0.0 where a malicious Domain Admin user in the ROOT domain can get the API key and secret key of user-accounts of Admin role type in the same domain. This operation is not appropriately restricted and allows the attacker to assume control over higher-privileged user-accounts. A malicious Domain Admin attacker can impersonate an Admin user-account and gain access to sensitive APIs and resources that could result in the compromise of resource integrity and confidentiality, data loss, denial of service, and availability of infrastructure managed by CloudStack. Users are recommended to upgrade to Apache CloudStack 4.19.3.0 or 4.20.1.0, which fixes the issue with the following: Strict validation on Role Type hierarchy: the caller's role must be equal to or higher than the target user's role. API privilege comparison: the caller must possess all privileges of the user they are operating on. Two new domain-level settings (restricted to the default admin): - role.types.allowed.for.operations.on.accounts.of.same.role.type: Defines which role types are allowed to act on users of the same role type. Default: "Admin, DomainAdmin, ResourceAdmin". - allow.operations.on.users.in.same.account: Allows/disallows user operations within the same account. Default: true. # CVE-2025-22829: Unauthorised access to dedicated resources in Quota plugin The CloudStack Quota plugin has an improper privilege management logic in version 4.20.0.0. Anyone with authenticated user-account access in CloudStack 4.20.0.0 environments, where this plugin is enabled and has access to specific APIs can enable or disable reception of quota-related emails for any account in the environment and list their configurations. Quota plugin users using CloudStack 4.20.0.0 are recommended to upgrade to CloudStack version 4.20.1.0, which fixes this issue. # Credits The CVEs are credited to the following reporters: ## CVE-2025-26521: - Wei Zhou (weiz...@apache.org) ## CVE-2025-30675: - Bernardo <bernardomg2...@gmail.com> ## CVE-2025-47713: - Scott Schmitz <sschm...@ussignal.com> ## CVE-2025-47849: - Kevin <kl...@apple.com> - Scott Schmitz <sschm...@ussignal.com> ## CVE-2025-22829: - Fabricio Duarte <fabricio.duarte...@gmail.com> # Affected versions ## CVE-2025-26521: - Apache CloudStack 4.17.0.0 through 4.19.2.0 - Apache CloudStack 4.17.0.0 through 4.20.0.0 ## CVE-2025-30675: - Apache CloudStack 4.0.0 through 4.19.2.0 - Apache CloudStack 4.0.0 through 4.20.0.0 ## CVE-2025-47713: - Apache CloudStack 4.10.0.0 through 4.19.2.0 - Apache CloudStack 4.10.0.0 through 4.20.0.0 ## CVE-2025-47849: - Apache CloudStack 4.10.0.0 through 4.19.2.0 - Apache CloudStack 4.10.0.0 through 4.20.0.0 ## CVE-2025-22829: - Apache CloudStack 4.20.0.0 # Resolution Users are recommended to upgrade to version 4.19.3.0, 4.20.1.0 or later, which addresses these issues. Additionally, users on a version older than 4.20.0.0 are advised to skip 4.20.0.0 and upgrade to 4.20.1.0 instead. # Downloads and Documentation The official source code for the 4.19.3.0 and 4.20.1.0 releases can be downloaded from the project downloads page: https://cloudstack.apache.org/downloads The 4.19.3.0 and 4.20.1.0 release notes can be found at: - https://docs.cloudstack.apache.org/en/4.19.3.0/releasenotes/about.html - https://docs.cloudstack.apache.org/en/4.20.1.0/releasenotes/about.html In addition to the official source code release, individual contributors have also made release packages available on the Apache CloudStack download page, and available at: - https://download.cloudstack.org/el/7/ - https://download.cloudstack.org/el/8/ - https://download.cloudstack.org/el/9/ - https://download.cloudstack.org/suse/15/ - https://download.cloudstack.org/ubuntu/dists/ - https://www.shapeblue.com/cloudstack-packages/