Security News

Cybersecurity news aggregator

🔓
HIGH Vulnerabilities Reddit r/netsec

GatewayToHeaven: Finding a Cross-Tenant Vulnerability in Google Cloud's Apigee

  • What: The GatewayToHeaven vulnerability (CVE-2025-13292) in Google Cloud's Apigee allowed cross-tenant data access.
  • Why: Attackers could access verbose logs and analytics data, potentially exposing plaintext access tokens.
  • Impact: Organizations using Apigee could have been vulnerable to user impersonation across tenants.
Read Full Article →

A few months ago, I discovered GatewayToHeaven , a vulnerability in Google Cloud’s Apigee that allowed for reading and writing verbose cross-tenant access logs and analytics data. Some of the data contained plaintext access tokens, which could be exfiltrated to potentially impersonate any end user of any organization that uses Apigee. This vulnerability was assigned CVE-2025-13292 . This article is for: Cloud security researchers and bug bounty hunters looking for new approaches to finding vulnerabilities in complex, multi-tenant architectures. Cloud and software engineers interested in learning about potential points of failure in their own architectures and seeing how an attacker might approach their SaaS products. We will explore the internal architecture of Apigee, how to gain an initial foothold in Apigee’s tenant project, and how to escalate those privileges and access data belonging to other organizations. For a shorter, less technical examination of the vulnerability, feel free to check out this executive summary . Table of Contents Open Table of Contents What is Apigee What are Tenant Projects Gaining Access to the Apigee Service Account Reconnaissance of the Tenant Project Escalating Privileges as the Dataflow Service Account The Impact Conclusion What is Apigee As specified by Google: Apigee provides an API proxy layer that sits between your backend services and internal or external clients that want to use your services. You can use custom policies to configure its behavior all along the flow of the request, sent from the end user to the backend and back. These policies can be used to add authentication to a backend that does not support it, convert the request or response from XML to JSON and vice versa, remove and add headers, and so on. Apigee is a managed service, meaning that Google takes responsibility for setting up the resources necessary to run it. You are not required to set up your own servers and run the Apigee infrastructure on them - Google Cloud does that for you. These resources are set up in a special Google Cloud project called the tenant project . What are Tenant Projects As you might know, projects in Google Cloud Platform (GCP) are used to create a clear security boundary between resources, even if they belong to the same organization. Tenant projects are simply GCP projects provisioned under the Google organization, used to host the resources of a managed service dedicated to a single service consumer. When enabling Apigee in a project, Google creates a dedicated tenant project associated with it, where Apigee-related resources are hosted. Each one of these Apigee-enabled projects is associated with a different tenant project. This allows for a strong, logical separation between the resources used in one tenant and others, even though all have resources managed by Google. Because tenant projects are managed by Google, consumers don’t have permissions to access them directly. Tenant projects are interesting because they blur the line between what belongs to the consumer and what belongs to Google. This raises the questions: what resources does the Apigee tenant project contain? Are these resources associated with any Google-managed service accounts? Do any of the service accounts have access to cross-tenant resources, hosted outside of a tenant project? As explained earlier, the consumer does not have direct access to the resources in the tenant project, which makes enumerating it much harder. To gain a deeper insight into its internal architecture, we must first discover a way to gain an initial foothold in the tenant project. Gaining Access to the Apigee Service Account As of now, this is how we view the tenant project and our theoretical cross-tenant target: As we can see, there isn’t much to go on. A good place to start when faced with a new cloud research project is the documentation. Apigee also has a hybrid version, which allows it to be deployed outside of the cloud, and thus outside of the tenant project. While the cloud and hybrid deployments are different in certain ways, they are also similar in many others, and exploring the well-documented hybrid version could expose how the components in the cloud version are configured. This is a rough schematic of the hybrid deployment of Apigee: The architecture is complex and not entirely relevant as of now. It is important to note that it is based on Kubernetes, which the cloud deployment also uses - and that the main component of Apigee is the Message Processor, highlighted in yellow in the schematic. The Message Processor is the API proxy sitting between the end users and the backend services - all of the end-user requests that go through Apigee are processed by it. All the other components exist in order to make it work as expected - serving it the most up-to-date configuration, and streaming analytics back to Google. In Google Kubernetes Engine, pods such as the Message Processor have access to a metadata endpoint jus...

Share this article