Derivation rules

2,433 declarative match → where → emit rules (1,787 derived, 646 explicit). Filter by cloud, emitted edge, node type, or text.

2,433 rule(s) · page 16 of 49

route53:ChangeResourceRecordSets on a public hosted zone enables DNS record mutation - traffic redirection, MX/SPF override, and subdomain NS delegation (DNS hijacking primitive).
route53:ChangeResourceRecordSets on a private hosted zone enables internal DNS hijacking within associated VPCs - traffic redirection for VPC-resident workloads only.
A dangling alias or CNAME record pointing to a deprovisioned AWS resource enables subdomain takeover - an attacker (unauthenticated, from the internet) claims the deprovisioned resource and serves content on the hijacked name without any AWS IAM permission required.
aws ExposedToInternet derived
route53:ChangeResourceRecordSets enables adding NS records for a subdomain, delegating full authority for that subtree to an attacker-controlled nameserver (broader than a single A-record redirect).
route53:CreateHostedZone with --vpc or route53:AssociateVPCWithHostedZone enables creating a shadow private zone or extending an existing zone's resolution scope across VPCs - DNS MITM for all workloads in the associated VPC.
route53domains:UpdateDomainNameservers replaces the authoritative NS servers at the domain registry - full domain takeover, redirecting ALL DNS resolution for the domain to attacker-controlled infrastructure.
route53domains:TransferDomainToAnotherAwsAccount transfers domain registration ownership to another AWS account - complete loss of domain registration control, enabling the attacker to modify registrar settings and potentially lock out the legitimate owner.
s3:CreateJob + iam:PassRole for a privileged IAM role creates an S3 Batch Operations job that runs as that role - a CanCreateWorkloadAs pattern for S3 Batch.
aws CanCreateWorkloadAs derived
s3:PutBucketPublicAccessBlock + s3:PutBucketPolicy enables a two-step escalation to expose the bucket - attacker CAN expose the bucket but it is NOT currently exposed.
aws ExposedToInternet derived
s3:ListBucket + s3:GetObject on a bucket enables enumeration and download of all objects - a complete bucket exfiltration.
aws CanExfiltrate derived
s3:PutReplicationConfiguration sets up continuous S3 Replication to an external/attacker-controlled destination bucket, establishing a persistent data exfiltration channel.
aws CanExfiltrate derived
s3:PutBucketNotification lets a principal reconfigure event notification targets (Lambda/SQS/SNS/EventBridge) for a bucket, redirecting all S3 events to attacker-controlled destinations.
s3: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 CanModifyCode derived
s3:PutBucketPolicy lets a principal rewrite the bucket policy in full, self-granting any S3 permission including making the bucket public.
aws CanModifyPolicy derived
S3 bucket with a Principal:* bucket policy allowing s3:GetObject and Block Public Access disabled (RestrictPublicBuckets=false) is readable by any internet client.
aws ExposedToInternet derived
s3:PutBucketAcl on a bucket with ObjectOwnership != BucketOwnerEnforced and Block Public Access IgnorePublicAcls=false enables ACL-based public exposure.
aws ExposedToInternet derived
A principal that can read a bucket's data (CanReadData) and the bucket contains secrets (ContainsSecret) can read those secrets via s3:GetObject.
aws CanReadSecret derived
s3:GetObject on a bucket grants full data-plane read of stored objects (SSE-S3/no-encryption path - AWS-managed decryption, no caller kms:Decrypt needed).
aws CanReadData derived
s3:GetObject on a SSE-KMS bucket: read is CONDITIONAL on kms:Decrypt for the wrapping CMK. Cite credential-chains:decrypt-gates-secret-read to upgrade to ACTIVE.
aws CanReadData derived
S3 static website hosting publishes a public HTTP endpoint serving bucket objects, independent of the bucket policy's API access controls.
aws ExposedToInternet derived
s3:PutObject on a bucket grants data-plane write, enabling object creation/overwrite - including code artifact poisoning.
aws CanWriteData derived
Create a new SageMaker compute resource (training/processing job, notebook, pipeline) bound to a passed privileged role - the canonical SageMaker PassRole privesc pattern.
aws CanCreateWorkloadAs derived
An MLflow Tracking Server executes as its RoleArn.
aws ExecutesAs explicit
A SageMaker Model executes as its ExecutionRoleArn at serving (endpoint) and batch-transform time.
aws ExecutesAs explicit
A SageMaker notebook instance executes kernel code as its RoleArn (execution role).
aws ExecutesAs explicit
A SageMaker Pipeline execution runs steps as its RoleArn.
aws ExecutesAs explicit
A SageMaker processing job container executes as its RoleArn.
aws ExecutesAs explicit
A SageMaker Studio App (JupyterServer/KernelGateway) executes as the UserProfile's ExecutionRole.
aws ExecutesAs explicit
A SageMaker training job container executes as its RoleArn.
aws ExecutesAs explicit
SageMaker 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.
aws ExposesCredential derived
GetRecord / BatchGetRecord reads ML feature data from a SageMaker Feature Store online store.
aws CanReadData explicit
StartPipelineExecution directly invokes a SageMaker Pipeline, running its steps as the pipeline's execution role.
aws CanInvoke derived
iam:PassRole to sagemaker.amazonaws.com for model creation, binding a role to be used at serving/transform time.
aws CanPassIdentity explicit
iam:PassRole to sagemaker.amazonaws.com for notebook instance creation.
aws CanPassIdentity explicit
iam:PassRole to sagemaker.amazonaws.com for pipeline creation, giving attacker-controlled pipeline steps the passed role's credentials.
aws CanPassIdentity explicit
iam:PassRole to sagemaker.amazonaws.com for training/processing/hyperparameter-tuning/compilation job creation.
aws CanPassIdentity explicit
iam:PassRole to sagemaker.amazonaws.com for MLflow tracking server role updates.
aws CanPassIdentity explicit
CreatePresignedDomainUrl opens a Studio session as the specified user profile's execution role - no iam:PassRole required.
aws CanExecuteAs derived
CreatePresignedNotebookInstanceUrl opens a browser-based Jupyter shell on a running notebook, giving the caller immediate code execution as the notebook's execution role - no iam:PassRole required.
aws CanExecuteAs derived
UpdateDomain changes the default execution role for all new Studio apps in the domain.
UpdateNotebookInstance changes notebook configuration including RoleArn (with PassRole), instance type, subnet, and security groups.
UpdateNotebookInstance changing the lifecycle config injects a shell script that runs as root on next start, within the notebook's execution role context.
aws CanModifyCode derived
UpdatePipeline can also change the pipeline's RoleArn (with PassRole), swapping the execution identity for all future pipeline executions.
UpdatePipeline replacing the pipeline definition injects attacker-controlled step code that runs as the pipeline's execution role.
aws CanModifyCode derived
UpdateUserProfile changes the execution role for a specific Studio user profile.
servicecatalog:CreateProvisioningArtifact adds a new product version carrying an attacker-controlled CFN template. The next ProvisionProduct or UpdateProvisionedProduct using that version executes the attacker's template as the launch role bound to the product. cicd-chains propagates this CanModifyCode + ExecutesAs into CanExecuteAs.
aws CanModifyCode derived
servicecatalog:CreateConstraint + iam:PassRole(servicecatalog.amazonaws.com): add a LaunchRole constraint to a product in a portfolio, binding a chosen privileged role. All subsequent ProvisionProduct calls then execute as that launch role. can-execute-as execute-as-via-config-identity-swap propagates with CanPassIdentity to derive CanExecuteAs.
A principal in account B provisioning a product from a portfolio shared by account A (servicecatalog:ProvisionProduct) causes resources to be deployed in account A as the account-A launch role. The receiving-account principal effectively gains a foothold in account A via the launch role's permissions.
aws CanEnterAccount derived
servicecatalog:ProvisionProduct or UpdateProvisionedProduct on a product bound to a LaunchRole constraint executes the product's CFN template as the launch role, even when the provisioning principal holds no CloudFormation or IAM permissions of their own. Any parameter-driven custom resource or UserData the user controls runs as the launch role.
aws CanExecuteAs derived
move · open · esc close