AWS IAM Customer-Managed Policy Attached to Role by Rare User
Detects when an AWS Identity and Access Management (IAM) customer-managed policy is attached to a role by an unusual or unauthorized user. Customer-managed policies are policies created and controlled within an AWS account, granting specific permissions to roles or users when attached. This rule identifies potential privilege escalation by flagging cases where a customer-managed policy is attached to a role by an unexpected actor, which could signal unauthorized access or misuse. Attackers may attach policies to roles to expand permissions and elevate their privileges within the AWS environment. This is a New Terms rule that uses the "cloud.account.id", "user.name" and "target.entity.id" fields to check if the combination of the actor identity and target role name has not been seen before.
Elastic rule (View on GitHub)
1[metadata]
2creation_date = "2024/11/04"
3integration = ["aws"]
4maturity = "production"
5updated_date = "2025/09/10"
6
7[rule]
8author = ["Elastic"]
9description = """
10Detects when an AWS Identity and Access Management (IAM) customer-managed policy is attached to a role by an unusual or unauthorized user. Customer-managed policies are policies created and controlled within an AWS account, granting specific permissions to roles or users when attached. This rule identifies potential privilege escalation by flagging cases where a customer-managed policy is attached to a role by an unexpected actor, which could signal unauthorized access or misuse. Attackers may attach policies to roles to expand permissions and elevate their privileges within the AWS environment. This is a New Terms rule that uses the "cloud.account.id", "user.name" and "target.entity.id" fields to check if the combination of the actor identity and target role name has not been seen before.
11"""
12false_positives = [
13 """
14 Legitimate IAM administrators may attach customer-managed policies to roles for various reasons, such as granting temporary permissions or updating existing policies. Ensure that the user attaching the policy is authorized to do so and that the action is expected.
15 """,
16]
17from = "now-6m"
18index = ["logs-aws.cloudtrail-*"]
19language = "kuery"
20license = "Elastic License v2"
21name = "AWS IAM Customer-Managed Policy Attached to Role by Rare User"
22note = """## Triage and analysis
23
24### Investigating AWS IAM Customer-Managed Policy Attached to Role by Rare User
25
26This rule detects when a customer-managed IAM policy is attached to a role by an unusual or unauthorized user. This activity may indicate a potential privilege escalation attempt within the AWS environment. Adversaries could attach policies to roles to expand permissions, thereby increasing their capabilities and achieving elevated access.
27
28#### Possible Investigation Steps
29
30- **Identify the Initiating User and Target Role**:
31 - **User Identity**: Examine the `aws.cloudtrail.user_identity.arn` field to determine the user who initiated the policy attachment. Confirm if this user typically has permissions to modify IAM roles and if their activity is consistent with their usual responsibilities.
32 - **Target Role**: Review `target.entity.id` to identify the role to which the policy was attached. Assess whether modifying this role is expected for this user or if this action is unusual in your environment.
33
34- **Analyze the Attached Policy**:
35 - **Policy ARN**: Inspect the `aws.cloudtrail.request_parameters` field to identify the specific customer-managed policy attached to the role. Evaluate if this policy grants sensitive permissions, especially permissions that could enable privileged actions or data access.
36 - **Policy Permissions**: Examine the policy content to determine the scope of permissions granted. Policies enabling actions like `s3:*`, `ec2:*`, or `iam:*` could be leveraged for broader access, persistence, or lateral movement.
37
38- **Review Source and User Agent Details**:
39 - **Source IP and Location**: Analyze the `source.ip` and `source.geo` fields to confirm the IP address and geographic location where the policy attachment originated. Verify if this matches expected locations for the initiating user.
40 - **User Agent Analysis**: Examine `user_agent.original` to determine if AWS CLI, SDK, or other tooling was used to perform this action. Tool identifiers like `aws-cli` or `boto3` may indicate automation, while others may suggest interactive sessions.
41
42- **Evaluate Anomalous Behavior Patterns**:
43 - **User’s Historical Activity**: Check if the initiating user has a history of attaching policies to roles. An unusual pattern in policy attachments could indicate suspicious behavior, especially if the user lacks authorization.
44 - **Role Modification History**: Investigate if the targeted role is frequently modified by this or other users. Repeated, unauthorized modifications to a role could signal an attempt to maintain elevated access.
45
46- **Correlate with Related CloudTrail Events**:
47 - **Other IAM or CloudTrail Activities**: Look for recent actions associated with the same user or role by reviewing `event.action` and `event.provider` to identify which AWS services were accessed. This may provide context on the user’s intent or additional actions taken.
48 - **Broader Suspicious Patterns**: Identify if similar anomalous events have recently occurred, potentially suggesting a coordinated or escalating attack pattern within the AWS account.
49
50### False Positive Analysis
51
52- **Authorized Administrative Actions**: IAM administrators may legitimately attach policies to roles as part of routine role management. Verify if the user is authorized and if the activity aligns with expected administrative tasks.
53- **Role-Specific Modifications**: Roles that frequently undergo policy updates may trigger this rule during standard operations. Consider monitoring for patterns or establishing known exceptions for specific users or roles where appropriate.
54
55### Response and Remediation
56
57- **Immediate Access Review**: If the policy attachment is unauthorized, consider detaching the policy and reviewing the permissions granted to the initiating user.
58- **Restrict Role Modification Permissions**: Limit which users or roles can attach policies to critical IAM roles. Apply least privilege principles to reduce the risk of unauthorized policy changes.
59- **Enhance Monitoring and Alerts**: Enable real-time alerts and monitoring on IAM policy modifications to detect similar actions promptly.
60- **Regular Policy Audits**: Conduct periodic audits of IAM policies and role permissions to ensure that unauthorized changes are quickly identified and addressed.
61
62### Additional Information
63
64For more information on managing IAM policies and roles in AWS environments, refer to the [AWS IAM Documentation](https://docs.aws.amazon.com/IAM/latest/APIReference/API_AttachRolePolicy.html) and AWS security best practices.
65"""
66references = ["https://docs.aws.amazon.com/IAM/latest/APIReference/API_AttachRolePolicy.html"]
67risk_score = 21
68rule_id = "f6d07a70-9ad0-11ef-954f-f661ea17fbcd"
69severity = "low"
70tags = [
71 "Domain: Cloud",
72 "Data Source: AWS",
73 "Data Source: Amazon Web Services",
74 "Data Source: AWS IAM",
75 "Resources: Investigation Guide",
76 "Use Case: Identity and Access Audit",
77 "Tactic: Privilege Escalation",
78]
79timestamp_override = "event.ingested"
80type = "new_terms"
81
82query = '''
83event.dataset: "aws.cloudtrail"
84 and event.provider: "iam.amazonaws.com"
85 and event.action: "AttachRolePolicy"
86 and event.outcome: "success"
87 and not related.entity: arn\:aws\:iam\:\:aws\:policy*
88'''
89
90[rule.investigation_fields]
91field_names = [
92 "@timestamp",
93 "user.name",
94 "user_agent.original",
95 "source.ip",
96 "aws.cloudtrail.user_identity.arn",
97 "aws.cloudtrail.user_identity.type",
98 "target.entity.id",
99 "event.action",
100 "event.outcome",
101 "cloud.account.id",
102 "cloud.region",
103 "aws.cloudtrail.request_parameters"
104]
105
106[[rule.threat]]
107framework = "MITRE ATT&CK"
108[[rule.threat.technique]]
109id = "T1548"
110name = "Abuse Elevation Control Mechanism"
111reference = "https://attack.mitre.org/techniques/T1548/"
112[[rule.threat.technique.subtechnique]]
113id = "T1548.005"
114name = "Temporary Elevated Cloud Access"
115reference = "https://attack.mitre.org/techniques/T1548/005/"
116
117
118
119[rule.threat.tactic]
120id = "TA0004"
121name = "Privilege Escalation"
122reference = "https://attack.mitre.org/tactics/TA0004/"
123
124[rule.new_terms]
125field = "new_terms_fields"
126value = ["cloud.account.id", "user.name", "target.entity.id"]
127[[rule.new_terms.history_window_start]]
128field = "history_window_start"
129value = "now-14d"
Triage and analysis
Investigating AWS IAM Customer-Managed Policy Attached to Role by Rare User
This rule detects when a customer-managed IAM policy is attached to a role by an unusual or unauthorized user. This activity may indicate a potential privilege escalation attempt within the AWS environment. Adversaries could attach policies to roles to expand permissions, thereby increasing their capabilities and achieving elevated access.
Possible Investigation Steps
-
Identify the Initiating User and Target Role:
- User Identity: Examine the
aws.cloudtrail.user_identity.arn
field to determine the user who initiated the policy attachment. Confirm if this user typically has permissions to modify IAM roles and if their activity is consistent with their usual responsibilities. - Target Role: Review
target.entity.id
to identify the role to which the policy was attached. Assess whether modifying this role is expected for this user or if this action is unusual in your environment.
- User Identity: Examine the
-
Analyze the Attached Policy:
- Policy ARN: Inspect the
aws.cloudtrail.request_parameters
field to identify the specific customer-managed policy attached to the role. Evaluate if this policy grants sensitive permissions, especially permissions that could enable privileged actions or data access. - Policy Permissions: Examine the policy content to determine the scope of permissions granted. Policies enabling actions like
s3:*
,ec2:*
, oriam:*
could be leveraged for broader access, persistence, or lateral movement.
- Policy ARN: Inspect the
-
Review Source and User Agent Details:
- Source IP and Location: Analyze the
source.ip
andsource.geo
fields to confirm the IP address and geographic location where the policy attachment originated. Verify if this matches expected locations for the initiating user. - User Agent Analysis: Examine
user_agent.original
to determine if AWS CLI, SDK, or other tooling was used to perform this action. Tool identifiers likeaws-cli
orboto3
may indicate automation, while others may suggest interactive sessions.
- Source IP and Location: Analyze the
-
Evaluate Anomalous Behavior Patterns:
- User’s Historical Activity: Check if the initiating user has a history of attaching policies to roles. An unusual pattern in policy attachments could indicate suspicious behavior, especially if the user lacks authorization.
- Role Modification History: Investigate if the targeted role is frequently modified by this or other users. Repeated, unauthorized modifications to a role could signal an attempt to maintain elevated access.
-
Correlate with Related CloudTrail Events:
- Other IAM or CloudTrail Activities: Look for recent actions associated with the same user or role by reviewing
event.action
andevent.provider
to identify which AWS services were accessed. This may provide context on the user’s intent or additional actions taken. - Broader Suspicious Patterns: Identify if similar anomalous events have recently occurred, potentially suggesting a coordinated or escalating attack pattern within the AWS account.
- Other IAM or CloudTrail Activities: Look for recent actions associated with the same user or role by reviewing
False Positive Analysis
- Authorized Administrative Actions: IAM administrators may legitimately attach policies to roles as part of routine role management. Verify if the user is authorized and if the activity aligns with expected administrative tasks.
- Role-Specific Modifications: Roles that frequently undergo policy updates may trigger this rule during standard operations. Consider monitoring for patterns or establishing known exceptions for specific users or roles where appropriate.
Response and Remediation
- Immediate Access Review: If the policy attachment is unauthorized, consider detaching the policy and reviewing the permissions granted to the initiating user.
- Restrict Role Modification Permissions: Limit which users or roles can attach policies to critical IAM roles. Apply least privilege principles to reduce the risk of unauthorized policy changes.
- Enhance Monitoring and Alerts: Enable real-time alerts and monitoring on IAM policy modifications to detect similar actions promptly.
- Regular Policy Audits: Conduct periodic audits of IAM policies and role permissions to ensure that unauthorized changes are quickly identified and addressed.
Additional Information
For more information on managing IAM policies and roles in AWS environments, refer to the AWS IAM Documentation and AWS security best practices.
References
Related rules
- AWS IAM Assume Role Policy Update
- AWS IAM AdministratorAccess Policy Attached to Group
- AWS IAM AdministratorAccess Policy Attached to Role
- AWS IAM AdministratorAccess Policy Attached to User
- AWS IAM User Created Access Keys For Another User