Skip to content

Commit fa712eb

Browse files
committed
[Rule Tuning] AWS Access Token Used from Multiple Addresses
This rule is extremely loud in telemetry ~2612 alerts in last 24 hours. There have also been a couple community requests for changes. - reduced the scope of the alerts to only surface the "high" fidelity_score cases for `"multiple_ip_network_city"` or `"multiple_ip_network_city_user_agent"` criteria. This reduced telemetry by ~90% - excluded 2 more benign service providers `support` which reduced volume by another 6%. - added the `data_stream.namespace` field as requested. - kept the rest of the rule logic visible so that if customers would like to broaden the scope of this rule again, they can duplicate the rules and revert back to the broader condition `Esql.activity_type != "normal_activity"`. This has been included as a comment in the rule query. I will keep an eye on this rule in telemetry to determine it's value moving forward.
1 parent 166da45 commit fa712eb

File tree

1 file changed

+11
-6
lines changed

1 file changed

+11
-6
lines changed

rules/integrations/aws/initial_access_iam_session_token_used_from_multiple_addresses.toml

Lines changed: 11 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22
creation_date = "2025/04/11"
33
integration = ["aws"]
44
maturity = "production"
5-
updated_date = "2025/09/02"
5+
updated_date = "2025/12/04"
66

77
[rule]
88
author = ["Elastic"]
@@ -99,7 +99,8 @@ from logs-aws.cloudtrail* metadata _id, _version, _index
9999
"health.amazonaws.com", "monitoring.amazonaws.com", "notifications.amazonaws.com",
100100
"ce.amazonaws.com", "cost-optimization-hub.amazonaws.com",
101101
"servicecatalog-appregistry.amazonaws.com", "securityhub.amazonaws.com",
102-
"account.amazonaws.com", "budgets.amazonaws.com", "freetier.amazonaws.com"
102+
"account.amazonaws.com", "budgets.amazonaws.com", "freetier.amazonaws.com", "support.amazonaws.com",
103+
"support-console.amazonaws.com"
103104
)
104105
105106
| eval
@@ -114,7 +115,8 @@ from logs-aws.cloudtrail* metadata _id, _version, _index
114115
Esql.source_geo_city_name = source.geo.city_name,
115116
Esql.source_network_org_name = `source.as.organization.name`,
116117
Esql.source_ip_network_pair = concat(Esql.source_ip_string, "-", `source.as.organization.name`),
117-
Esql.event_timestamp = @timestamp
118+
Esql.event_timestamp = @timestamp,
119+
Esql.data_stream_namespace = data_stream.namespace
118120
119121
| stats
120122
Esql.event_action_values = values(event.action),
@@ -132,6 +134,7 @@ from logs-aws.cloudtrail* metadata _id, _version, _index
132134
Esql.user_agent_original_count_distinct = count_distinct(Esql.user_agent_original),
133135
Esql.source_geo_city_name_count_distinct = count_distinct(Esql.source_geo_city_name),
134136
Esql.source_network_org_name_count_distinct = count_distinct(Esql.source_network_org_name),
137+
Esql.data_stream_namespace_values = values(Esql.data_stream_namespace),
135138
Esql.timestamp_first_seen = min(Esql.event_timestamp),
136139
Esql.timestamp_last_seen = max(Esql.event_timestamp),
137140
Esql.event_count = count()
@@ -175,9 +178,10 @@ from logs-aws.cloudtrail* metadata _id, _version, _index
175178
Esql.source_ip_count_distinct,
176179
Esql.user_agent_original_count_distinct,
177180
Esql.source_geo_city_name_count_distinct,
178-
Esql.source_network_org_name_count_distinct
181+
Esql.source_network_org_name_count_distinct,
182+
Esql.data_stream_namespace_values
179183
180-
| where Esql.activity_type != "normal_activity"
184+
| where Esql.activity_fidelity_score == "high"
181185
'''
182186

183187
[rule.investigation_fields]
@@ -201,7 +205,8 @@ field_names = [
201205
"Esql.source_ip_count_distinct",
202206
"Esql.user_agent_original_count_distinct",
203207
"Esql.source_geo_city_name_count_distinct",
204-
"Esql.source_network_org_name_count_distinct"
208+
"Esql.source_network_org_name_count_distinct",
209+
"Esql.data_stream_namespace_values"
205210
]
206211

207212

0 commit comments

Comments
 (0)