ApplicationPlatform
PaaS app host (App Runner/App Service/App Engine).
class: Compute
Realizing resources
aws aws
| resource | scope | enumerate | required permissions |
|---|---|---|---|
aws:amplify:app |
regional | amplify:ListApps |
amplify:ListApps |
aws:apprunner:service |
regional | apprunner:ListServices |
apprunner:ListServices |
aws:beanstalk:environment |
regional | beanstalk:DescribeEnvironments |
elasticbeanstalk:DescribeEnvironments |
gcp gcp
| resource | scope | enumerate | required permissions |
|---|---|---|---|
gcp:appengine:service |
global | appengine.apps.services.list |
appengine.services.list |
azure azure
| resource | scope | enumerate | required permissions |
|---|---|---|---|
azure:web:site |
global | arg:microsoft.web/sites |
Microsoft.Web/sites/read |
azure:web:staticsite |
global | arg:microsoft.web/staticsites |
Microsoft.Web/staticsites/read |
As edge source
CanDecryptCanDeleteDataCanExfiltrateCanNetworkReachCanReachPortCanReadCredentialCanReadDataCanReadSecretCanRetrieveTokenCanWriteDataContainsCredentialContainsResourceReferenceContainsSecretExecutesAsExposedToAccountExposedToInternetExposedToTenantExposesCredentialHasPolicyLocatedInPrivateReachabilityAs edge target
AttachedToAuthenticatesToCanAdministerCanAttachIdentityCanControlCanCreateCanDeleteCanDeployCanExecuteCommandCanExecuteOnCanModifyCanModifyCodeCanModifyConfigurationCanModifyPolicyCanNetworkReachCanReachPortCanReadCanReadDataCanReadSecretCanReplaceCanStartCanTakeOwnershipCanTriggerCanWriteContainsContainsResourceReferenceControlsHasPermissionPrivateReachabilityExposure sites
aws-accessanalyzer-finding-details-metadataaws-appflow-flow-data-destinationaws-athena-query-result-rowsaws-backup-recovery-point-restored-contentaws-bedrock-runtime-prompt-response-payloadaws-cloudfront-key-value-store-valueaws-cloudtrail-event-data-store-query-resultsaws-cloudtrail-event-request-response-payload
Rules that touch ApplicationPlatform 31
Retarget InstanceRoleArn to a more-privileged role via UpdateService + PassRole.
aws
CanExecuteAsModify code/image of a service that already has an instance role -> run as that role.
aws
CanExecuteAsBeanstalk EC2 instances leak the instance profile creds via IMDS (169.254.169.254).
Code on a Beanstalk instance (or SSRF against the app) reads the instance profile creds from IMDS.
aws
CanRetrieveTokenPrincipal with codepipeline:CreatePipeline can deploy new pipelines to the CodePipeline platform.
aws
CanDeployopsworks:UpdateStack lets a principal change the custom cookbook source URL, enabling cookbook supply-chain injection.
aws
CanModifyCodeOpsWorks App secure environment variables are credentials accessible to all deployment code on the stack.
aws
ContainsSecretopsworks:CreateDeployment lets a principal run arbitrary Chef recipes or commands on stack instances as the instance profile role.
aws
CanModifyCodeopsworks:CreateDeployment (non-execute_recipes flavors) triggers a deployment with the stack's current cookbook definition - CanTrigger into the instance for cicd-chains rule 2.
aws
CanTriggerOpsWorks Stack's control plane operates as the stack's service role.
aws
ExecutesAsopsworks:SetPermission lets a principal grant any OpsWorks user admin or deploy rights on a stack, enabling self-escalation to deployment capability.
opsworks:UpdateStack can redirect the custom cookbook source to an attacker-controlled repo, making all future cookbook deployments run attacker code as the instance profile role.
aws
CanModifyCodes3:PutObject on a bucket that is a verified code-artifact deployment source (Lambda, CodePipeline, CloudFormation) for a compute workload equals modifying that workload's code.
aws
CanModifyCodeAn MLflow Tracking Server executes as its RoleArn.
aws
ExecutesAsSageMaker compute surfaces (notebook/training/processing job/pipeline/Studio app) expose execution-role credentials to all code running inside them via IMDS or the container credentials endpoint.
A compute resource is internet-exposed when its security group has an inbound rule allowing 0.0.0.0/0 (or ::/0) on a port, the resource has a public IP, and the subnet has a route to an Internet Gateway. All three conditions must be observed facts.
Attach a privileged user-assigned MI to a site the attacker can already run code on, then execute as that MI. This is an existing-site chain (CanExecuteAs), NOT a create-new-workload chain.
azure
CanExecuteAsConfig modification (startup command / app settings) on a site + the site runs as an MI => execute as that MI.
azure
CanExecuteAsCode/config modification on a site + the site runs as an MI => execute as that MI (via the MSI token endpoint).
azure
CanExecuteAsCode modification on a Function app + the app runs as an MI => execute as that MI (via the identity endpoint).
azure
CanExecuteAsConfig modification (run-from-package / image / startup) + ExecutesAs => execute as the MI.
azure
CanExecuteAsA Standard Logic App with a bound MI exposes that MI's credential to any code/action running in the app.
azure
ExposesCredentialCode/actions in a Standard Logic App can mint a bearer token for each bound MI via the App Service identity endpoint.
azure
CanRetrieveTokenAn MI-enabled SF application leaks a usable credential for its managed identity via the per-node localhost token service environment.
azure
ExposesCredentialCode in a managed-identity-enabled SF service can mint a bearer token for the app's MI from the per-node localhost token service.
azure
CanRetrieveTokenDeploy/upgrade an SF app with attacker code + the app runs as an MI => execute as that MI via the localhost token service.
azure
CanExecuteAsA Static Web App exposes its deployment token as a credential for the CI/CD pipeline identity.
azure
ExposesCredentialRepoint SWA's source repository to an attacker-controlled repo, modifying build code.
azure
CanModifyCodeA holder of the SWA deployment token can modify the build runner's deployment when a runner with a service identity exists.
azure
CanModifyCodeA serving App Engine version is reachable at its appspot.com URL (modeled as a PublicEndpoint node) unless ingress-restricted.
A Cloud Scheduler App Engine HTTP job triggers an App Engine service on schedule. App Engine targets are always same-project. OIDC/OAuth2 auth model applies identically to HTTP targets.
gcp
CanTrigger