Post

AI Blast Radius: Attack Chains Combined

AI Blast Radius: Attack Chains Combined

Identity Blast Radius: Attack Chains Combined

Identity Blast Radius2026-03-24XXXXXXXXXXXXSCP: UNKNOWN

Identities Assessed

ChainEntry PointTerminal IdentityTerminal Permissions
Attack Path 1svc-deploy-automation-productionsvc-data-processor-exec-production + stolen credsDynamoDB *, S3 *, RDS via plaintext creds
Attack Path 2platform-restricted-admin-productionsvc-platform-admin-productionAdministratorAccess (no boundary)
Attack Path 3svc-analytics-reader-productionsvc-platform-admin-productionAdministratorAccess (no boundary)

Access Summary (Combined — worst case from any chain)

CategoryAccess LevelResources ReachableKey Actions
DataRead/Write/Delete2 Lambda functions, 3 CloudWatch log groups, 27 KMS keys (23 PendingDeletion), external RDS via stolen credss3:*, dynamodb:*, lambda:GetFunction, kms:Decrypt, RDS direct connect
IdentityFull Admin1 IAM user, 28 IAM roles, 61 tracked policiesiam:*, sts:AssumeRole, iam:PassRole *, iam:CreateUser, iam:CreateAccessKey
DetectionFull Control (nothing to disable)0 CloudTrail trails, 0 GuardDuty detectors, 0 Security Hub, 0 Config recorders, 0 Access AnalyzersNo detection services exist — attacker operates with zero logging
ComputeExecute/Modify2 Lambda functions (us-east-1), 0 running EC2, can launch in 17 regionslambda:*, ec2:RunInstances, ecs:*
NetworkFull Modify1 VPC (default), 1 security group (default)ec2:AuthorizeSecurityGroupIngress, ec2:CreateSecurityGroup, ec2:ModifyVpcAttribute

Risk Level: CRITICAL

Why: The combined blast radius from the three attack chains reaches full AdministratorAccess (chains 2 and 3) with zero detection coverage. There are no CloudTrail trails, no GuardDuty detectors, no Security Hub, no AWS Config recorders, and no IAM Access Analyzers in any region. An attacker who compromises any of the three entry-point roles achieves admin access with no audit trail, no alerting, and no automated response. Chain 1 additionally exposes plaintext production database credentials and API keys that grant access to systems outside AWS.

Amplifying:

  • Zero detection services — complete absence of CloudTrail, GuardDuty, Security Hub, Config, Access Analyzer
  • Wildcarded resources on sensitive actions (iam:PassRole *, s3:*, dynamodb:*, lambda:*)
  • No permission boundary on terminal admin role (svc-platform-admin-production)
  • SCP coverage unknown — cannot confirm organizational guardrails exist
  • Plaintext secrets in Lambda env vars (external RDS + API access)
  • 23 customer-managed KMS keys in PendingDeletion — encryption controls being removed
  • Admin IAM user has no MFA

Mitigating:

  • Permission boundary on platform-restricted-admin-production (partially effective — bypassed via PassRole+Lambda but limits direct IAM actions)
  • BoolIfExists MFA condition on svc-data-ops-production S3 delete operations (correctly implemented)
  • No running EC2 instances currently (all terminated) — reduces immediate lateral movement surface
  • No S3 buckets, DynamoDB tables, or RDS instances exist in-account — reduces in-account data exfiltration scope
  • Cross-account roles require MFA (Bool condition — effective for human callers)

Detailed Access

Data Access

In-account data stores:

Resource TypeCountResourcesAccess Level
S3 Buckets0None existN/A (admin can create)
DynamoDB Tables0None existN/A (admin can create)
RDS Instances0None existN/A (admin can create)
Secrets Manager0None existN/A (admin can create)
Lambda Functions2svc-data-processor-production, svc-reporting-api-productionRead/Write/Delete code + config
CloudWatch Log Groups3/aws/lambda/blog-application (16 KB), /aws/lambda/blog-application-data (2.7 MB), /aws/lambda/svc-reporting-api-production (738 B)Read/Delete (no retention set)
KMS Keys274 AWS-managed (Enabled: EBS, FSx, Lambda, Secrets Manager), 23 customer-managed (all PendingDeletion)Admin can cancel deletion, decrypt, schedule deletion

External data (via stolen credentials from Chain 1):

ResourceCredentialAccess Level
prod-db-cluster.cluster-REDACTED.us-east-1.rds.amazonaws.comDB_USERNAME: REDACTED, DB_PASSWORD: REDACTEDFull database read/write/delete
External APIAPI_KEY: REDACTEDFull API access
Webhook endpointAPI_SECRET: REDACTEDWebhook signature forgery

Identity Access

Direct admin (via chains 2 or 3 → svc-platform-admin-production):

Full iam:* on all resources — can create, modify, or delete any IAM principal or policy.

ActionScopeImpact
iam:CreateUser + iam:CreateAccessKey*Create persistent backdoor user with long-lived credentials
iam:AttachRolePolicy + iam:PutRolePolicy*Attach AdministratorAccess to any role, inject inline policies
iam:UpdateAssumeRolePolicy*Modify trust policies to allow external account assumption
iam:PassRole*Pass any role to any compute service
iam:CreateServiceLinkedRole*Create SLRs for any service (recon + indirect escalation)
sts:AssumeRole*Assume any role in the account
iam:DeleteRolePolicy + iam:DetachRolePolicy*Remove permission boundaries and guardrails

PMapper escalation graph — principals reachable from admin:

All 30 nodes (6 admin, 24 non-admin) are reachable. The admin role can modify trust policies to assume any role, or create access keys for any user.

Assumable roles (all 28 — admin can modify any trust policy):

RoleCurrent TrustRisk if Compromised
AWSReservedSSO_AdministratorAccess_*SAML (SSO)SSO admin access
AWSReservedSSO_PowerUserAccess_*SAML (SSO)SSO power user
IdentityAccountAccessCross-account (MFA required)Cross-account access
IdentityAccountAdminAccessCross-account (MFA required)Cross-account admin
OrganizationAccountAccessRoleOrg management account (NO MFA)Org management access
infra-cross-account-sync-productionSame account (ExternalId)Same-account cross-role
platform-restricted-admin-productionec2.amazonaws.comBounded admin (bypassable)
svc-analytics-reader-productionec2.amazonaws.comCloudWatch read → chain to admin
svc-compute-operator-productionec2.amazonaws.comEC2 full (deny terminate)
svc-data-ops-productionec2.amazonaws.comS3 full (MFA delete protection)
svc-data-pipeline-productionsvc-analytics-reader-productionS3 ETL read → chain to admin
svc-data-processor-exec-productionlambda.amazonaws.comDynamoDB + S3 read (wildcarded)
svc-data-processor-secure-exec-productionlambda.amazonaws.comNo policies (empty)
svc-deploy-automation-productionec2.amazonaws.comPassRole + Lambda mgmt
svc-onboarding-automation-productionec2.amazonaws.comWildcarded SLR creation
svc-platform-admin-productionsvc-data-pipeline-productionFull admin (no boundary)
svc-reporting-api-exec-productionlambda.amazonaws.comS3 + DynamoDB read
svc-cognito-guest-productionCognito (unauthenticated)Guest access
platform-audit-secure-cloudwatch-productioncloudtrail.amazonaws.comCloudTrail service role
9x AWS Service-Linked RolesVarious AWS servicesService-managed

Detection Access

CRITICAL: No detection services are deployed.

ServiceStatusImpact
CloudTrailNot configured — 0 trailsNo API audit trail. All attacker actions are invisible.
GuardDutyNot enabled — 0 detectorsNo threat detection. Credential abuse, crypto mining, reconnaissance undetected.
Security HubNot subscribedNo aggregated security findings.
AWS ConfigNot configured — 0 recordersNo configuration change tracking. IAM policy changes invisible.
IAM Access AnalyzerNot configured — 0 analyzersNo external access detection. Public resources, cross-account sharing unmonitored.
CloudWatch Logs3 log groups (Lambda execution logs only)Minimal — only Lambda invocation logs. No retention policy set (infinite retention but no alerting).

An attacker with admin access can operate indefinitely with no detection, no alerting, and no forensic trail. There is nothing to disable because nothing exists — this is worse than having detection that could be turned off (which at least generates a CloudTrail event).

Compute Access

Resource TypeCountResourcesAccess Level
Lambda Functions2svc-data-processor-production (python3.12), svc-reporting-api-production (python3.12)Full — create, update code, invoke, delete
EC2 Instances0 running2 terminatedCan launch new instances in 17 regions
ECSUnknownNot enumerated (no running tasks observed)Full via AmazonECS_FullAccess

Compute weaponization potential: Admin can launch EC2 instances in any of 17 regions, create Lambda functions with any execution role, and deploy ECS tasks — all without detection (no CloudTrail).

Network Access

Resource TypeCountResourcesAccess Level
VPCs1Default VPC (172.31.0.0/16)Full modify
Security Groups1Default SGFull — authorize ingress/egress, create new
VPC Endpoints0NoneCan create
SubnetsDefault subnetsNot enumeratedFull modify

Network weaponization potential: Admin can open security group ingress from 0.0.0.0/0 on any port, create new VPCs with public subnets, establish VPC endpoints for data exfiltration, and create VPN connections — all without detection.


Recommendations

PriorityActionEffortRisk Reduction
P0Enable CloudTrail immediately — create a multi-region trail with log file validationLowProvides audit trail — every API call logged. Without this, no forensics possible.
P0Enable GuardDuty in all 17 regionsLowAutomated threat detection — credential abuse, recon, crypto mining
P0Rotate all exposed secrets from F3 — change DB password, revoke API keys, move to Secrets ManagerMedEliminates external access via stolen credentials
P0Enable MFA on admin IAM userLowSecond factor on admin user
P1Enable Security Hub + AWS Config in all regionsMedConfiguration tracking + aggregated findings
P1Scope PassRole on deploy-automation and boundary — restrict to specific role ARNsLowBreaks chains 1 and 2
P1Remove sts:AssumeRole to svc-platform-admin from pipeline policy or add boundary to svc-platform-adminMedBreaks chain 3
P1Enable IAM Access AnalyzerLowDetects external access grants
P2Set CloudWatch log retention — all 3 log groups have infinite retention with no alertingLowCost control + ensures logs are reviewed
P2Clean up 23 PendingDeletion KMS keys — cancel deletion for any still needed, or allow deletion to completeLowReduces confusion about encryption posture

Confidence: 5/5

All findings backed by deterministic CLI evidence and PMapper graph. Resource enumeration covers us-east-1 and ap-southeast-2 (SSO region). Lambda functions only found in us-east-1. No data plane resources (S3, DynamoDB, RDS, Secrets Manager) exist in-account — blast radius is primarily IAM control plane + Lambda + external credentials. SCP coverage unknown — org-level guardrails may reduce effective blast radius.Verdict: Accept as-is. Enable detection services as P0 — the complete absence of logging makes all other findings more dangerous because exploitation is invisible.
This post is licensed under CC BY 4.0 by the author.