Skip to content
Back to skills

Red Gcp Iam Privilege Escalation

ASecurity

GCP IAM privilege escalation - gcp service account impersonation primitives (actAs, getAccessToken, signBlob, signJwt), serviceAccountKeys, setIamPolicy at project/folder/org levels, custom role manipulation, — service account actAs, getAccessToken, signBlob and signJwt, serviceAccountKeys…

  • 2 stars
  • 0 votes
  • 0 copies
  • 0 views
  • Added November 7, 2026
securityrustgobashgcptesting

Works with

  • terminal

Security analysis

A100/100

Scanned November 7, 2026

npx -y skills add bitbytelabio/arsenal --skill red-gcp-iam-privilege-escalation --agent claude-code

Installs into .claude/skills of the current project.

Are you the author of Red Gcp Iam Privilege Escalation?

Add the live security badge to your README. It updates with every re-scan.

Security grade badge for Red Gcp Iam Privilege Escalation
[![Security: A — Skills Directory](https://www.skillsdirectory.com/api/skills/bitbytelabio-red-gcp-iam-privilege-escalation/badge)](https://www.skillsdirectory.com/skills/bitbytelabio-red-gcp-iam-privilege-escalation)

More formats (shields.io, HTML) on the badges page. Keep it an A: scan every change in CI with Pro.

Download with Pro
SKILL.md
---
name: red-gcp-iam-privilege-escalation
description: GCP IAM privilege escalation - gcp service account impersonation primitives (actAs, getAccessToken, signBlob, signJwt), serviceAccountKeys, setIamPolicy at project/folder/org levels, custom role manipulation, — service account actAs, getAccessToken, signBlob and signJwt, serviceAccountKeys…
domain: red
category: privesc
hide: true
license: Apache-2.0
metadata:
  manifest_entry: src/corpus/red-gcp-iam-privilege-escalation/SKILL.md
---
# GCP IAM Privilege Escalation

## Purpose
Prove GCP escalation from a starting principal to a higher-privilege identity or effective permission — typically service account impersonation (actAs / token mint / signBlob) or policy modification — with the previously unavailable action demonstrated. A broad role detected is never equivalent to successful escalation.

## Entry Conditions
- Validated GCP credential with an effective-permission map (`gcp-cloud-pentesting` steps 1–2)
- Runtime authorization for state-changing operations

## Attack Model

```text
starting identity
→ escalation primitive (actAs / token mint / policy set / deploy with SA)
→ higher-priv identity or effective permission
→ previously unavailable cloud action SUCCEEDS
→ report
```

## Methodology

### Family 1 — Service Account Impersonation
```bash
# roles/iam.serviceAccountUser (actAs) over a target SA = act as it everywhere:
gcloud auth print-access-token --impersonate-service-account=<target-sa>   # THE proof — then use the token
# roles/iam.serviceAccountTokenCreator: mint tokens for the SA without actAs:
gcloud iam service-accounts sign-jwt --iam-account <sa> ... 
gcloud iam service-accounts sign-blob --iam-account <sa> ...
# Check who holds these over high-value SAs (default compute/editor SAs!):
gcloud iam service-accounts get-iam-policy <sa-email> --flatten="bindings[].members"
```

### Family 2 — Key Creation
```bash
# iam.serviceAccountKeys.create on a privileged SA = durable takeover:
gcloud iam service-accounts keys create key.json --iam-account=<target-sa>
# Service Account Key Admin on the project = keys for every SA in it
```

### Family 3 — Policy Modification
```bash
# resourcemanager.projects.setIamPolicy (or folder/org levels — inherited DOWN):
gcloud projects add-iam-policy-binding <project> --member="serviceAccount:<your-sa>" --role="roles/owner"
# iam.serviceAccounts.setIamPolicy on an SA = grant yourself actAs/tokenCreator on it
# Custom-role manipulation (iam.roles.update/create) = sneak privileges past predefined-role review
```

### Family 4 — Execution with Stronger SAs
```text
actAs + Cloud Run deploy       → a service running as a privileged SA
actAs + Cloud Functions create
actAs + Compute instance create → instance with an attached privileged SA; then metadata-token
actAs + Cloud Build trigger      → build executes as the build SA (historically roles/editor)
```

## Inheritance Rule
Before claiming a grant: resolve org → folder → project → resource levels. A broad binding at the org level makes a "low-privilege-looking" project principal far more powerful than the project policy shows; conversely, org policies (constraints like disabling SA key creation) can silently block your primitive — check `gcloud resource-manager org-policies list` when a primitive fails unexpectedly.

## Evidence Contract

```text
escalation candidate (actAs/tokenCreator/setIamPolicy held)
→ inheritance + org-policy constraints resolved
→ impersonation/policy/deployment performed (within runtime policy)
→ higher-priv token obtained or binding active
→ previously unavailable action SUCCEEDS (object in another project, secret accessed, role assigned)
→ restore created state (delete created keys/bindings/functions)
→ report
```

**NOT evidence**: `roles/editor` observed on the default SA without a live impersonated action, tool output (CSPM/PMapper analogues) without verification, `TestIamPermissions` claims without a performed action, a binding added but never exercised

## Common Misses
- TokenCreator vs actAs confusion (different primitive, same impact class)
- Folder/org-level actAs grants (invisible at project policy level)
- Default compute SAs (`<project>-compute@developer.gserviceaccount.com`) as targets
- Org-policy constraints blocking key creation (treated as "no permission" instead of "blocked primitive")
- Cloud Build service accounts as the escalation vehicle
- signBlob/signJwt enabling service-to-service auth forgery (KMS/JWT signing chains)

## False Positives / Non-Findings
- actAs on SAs with no meaningful privileges
- Grants scoped to resources you already control
- Key creation disabled by org policy (hardening observation, not a finding)
- Expired/stale bindings from deleted principals

## Arsenal Tool Strategy
- `terminal_execute` with gcloud for every primitive; Policy Analyzer for effective-permission hypotheses
- Ledger: candidate impersonation chains with constraint state and verified proofs
- Restore: `gcloud iam service-accounts keys delete`, `remove-iam-policy-binding`, function/service deletion

## Specialist Handoffs
- Data reached via the new identity → `cloud-secrets-data-access`, `cloud-storage-exposure-testing`
- Cross-project trust → `cloud-cross-account-tenant-trust`
- Compute instance with attached SA → metadata-token chain via `cloud-metadata-workload-identity`

## Stopping Rule
Prioritize: direct impersonation (actAs/getAccessToken) > key creation > policy modification > deployment-with-SA. Depth-first on the highest-privilege SAs (editor/owner, default compute SAs). Stop when project-admin-equivalent access is proven or the top families are constraint-blocked.

Attribution

Is this your skill, or is something wrong with this listing? Request removal or report an issue. Author removals are honored within 72 hours.

Comments

Loading comments…

Newsletter

Get the weekly list of safe new skills, and the ones we pulled.