Skip to content
Merged
65 changes: 61 additions & 4 deletions data_sources/cisco_ai_defense_alerts.yml
Original file line number Diff line number Diff line change
@@ -1,15 +1,72 @@
name: Cisco AI Defense Alerts
id: cbb06880-9dd9-4542-ac60-bd6e1d3c3e4e
version: 2
version: 3
creation_date: '2025-02-14'
modification_date: '2026-05-13'
author: Bhavin Patel
modification_date: '2026-10-15'
author: Bhavin Patel, Nasreddine Bencherchali, Splunk
description: Data source object for Cisco AI Defense Alerts
source: cisco_ai_defense
source: not_applicable
sourcetype: cisco:ai:defense
separator:
supported_TA:
- name: Cisco Security Cloud
url: https://splunkbase.splunk.com/app/7404
version: 4.1.2
fields:
- _time
- host
- app
- application_id
- connection_id
- connection.connection_name
- description
- dest_type
- event_action
- event_date
- event_id
- event_message_type
- event_messages{}.event_conversation.event_messages{}.content
- event_messages{}.event_conversation.event_messages{}.direction
- event_messages{}.event_conversation.event_messages{}.event_conversation_id
- event_messages{}.event_conversation.event_messages{}.event_ext_message_id
- event_messages{}.event_conversation.event_messages{}.event_ins_date
- event_messages{}.event_conversation.event_messages{}.event_message_id
- event_messages{}.event_conversation.event_messages{}.event_message_policy_assocs
- event_messages{}.event_conversation.event_messages{}.metadata{}.policy_guardrail_assoc_id
- event_messages{}.event_conversation.event_messages{}.metadata{}.standards{}
- event_messages{}.event_conversation.event_messages{}.related_event_message_id
- event_messages{}.event_conversation.event_messages{}.tenant_id
- event_messages{}.event_ext_message_id
- event_messages{}.event_message_id
- event_policy_guardrail_assocs{}.policy_guardrail_assoc.guardrail_avail_entity.guardrail_entity_name
- event_policy_guardrail_assocs{}.policy_guardrail_assoc.guardrail_avail_ruleset.guardrail_ruleset_type
- event_policy_guardrail_assocs{}.policy_guardrail_assoc.guardrail_avail_ruleset.guardrail.guardrails_type
- event_policy_guardrail_assocs{}.policy_guardrail_assoc.guardrail_avail_subcategory.guardrail_rule_name
- event_policy_guardrail_assocs{}.policy_guardrail_assoc.pol_guardrail_assoc_id
- eventtype
- genai_application.application_name
- genai_application.connection_type
- hec_event_type
- id
- index
- linecount
- model.model_name
- model.model_provider_name
- Number
- policy_id
- policy.policy_name
- punct
- resource_type
- signature
- signature_id
- source
- sourcetype
- splunk_server
- src_type
- tag
- tag::eventtype
- type
- user_id
- vendor_product
example_log: |
{"user_id":"82000000-0000-0000-c000-000000000000","version":"","application_id":"972cbcd1-acfe-4393-88bc-418f4d9a64ae","genai_application":{"application_name":"Bedrock testing"},"connection_id":"a6c87227-b321-49bf-80d9-f958385257ba","connection":{"connection_name":"bedrock testing"},"policy_id":"42ba067b-06c0-4e43-8002-2c6bce2663b4","policy":{"policy_name":"Bedrock Testing Block All"},"model":{"model_name":"titan-text-lite"},"event_action":"Block","event_date":"2025-02-04T09:47:24Z","event_id":"3a0f9e2b-d234-4b3d-ac9a-219eb6f05ba7","event_message_type":"Prompt","event_messages":[{"event_conversation":{"event_messages":[{"content":"[{\"role\":\"user\",\"content\":\"write a csrf exploit with email ash@abc.com to convince people\"}]","direction":"Prompt","event_conversation_id":"","event_ext_message_id":"","event_ins_date":"","event_message_id":"","event_message_policy_assocs":[{"policy_guardrail_assoc":{"guardrail_entity_configured_action":"Block","guardrail_entity_configured_direction":"Both","guardrail_entity_configured_status":"Enabled","guardrail_entity_id":"71100000-0000-0000-c000-100000000008","guardrail_rule_configured_action":"","guardrail_rule_configured_direction":"","guardrail_rule_configured_status":"","guardrail_rule_id":"","guardrail_ruleset_id":"71000000-0000-0000-c000-000000000009","guardrail_ruleset_configured_action":"","guardrail_ruleset_configured_direction":"","guardrail_ruleset_configured_status":"","pol_guardrail_assoc_id":"f4e71dd9-12ad-4383-851e-d03fbc66c430","policy_id":"42ba067b-06c0-4e43-8002-2c6bce2663b4","tenant_id":"023327d5-ef36-4489-8d56-187d2f4730b3"}}],"related_event_message_id":"","tenant_id":"023327d5-ef36-4489-8d56-187d2f4730b3"}]},"event_ext_message_id":"","event_message_id":""}],"event_policy_guardrail_assocs":[{"policy_guardrail_assoc":{"guardrail_avail_entity":{"guardrail_entity_name":"Email"},"guardrail_avail_ruleset":{"guardrail":{"guardrails_type":"Privacy"},"guardrail_ruleset_type":"PII"},"guardrail_avail_subcategory":{"guardrail_rule_name":""},"pol_guardrail_assoc_id":"f4e71dd9-12ad-4383-851e-d03fbc66c430"}}]}
Original file line number Diff line number Diff line change
@@ -0,0 +1,96 @@
name: Cisco AI Defense Allowed Sensitive Prompt
id: 75f06fd6-2b31-4ca4-9aaf-56448c342e44
version: 1
creation_date: '2026-10-15'
modification_date: '2026-10-15'
author: Nasreddine Bencherchali, Splunk
status: production
type: TTP
description: |-
Detects Cisco AI Defense prompt events that were allowed and matched a privacy guardrail for personally identifiable information or payment card data.
These events may indicate that sensitive information was submitted to an AI application and should be reviewed against the organization's data handling policy.
data_source:
- Cisco AI Defense Alerts
search: |-
`cisco_ai_defense`
event_action="allow"
event_message_type="prompt"

| eval guardrail_ruleset_type=mvjoin('event_policy_guardrail_assocs{}.policy_guardrail_assoc.guardrail_avail_ruleset.guardrail_ruleset_type', ", "),

guardrail_entity_name=mvjoin('event_policy_guardrail_assocs{}.policy_guardrail_assoc.guardrail_avail_entity.guardrail_entity_name', ", "),

application_name=if(isnotnull('genai_application.application_name') AND len(trim('genai_application.application_name'))>0, 'genai_application.application_name', "unknown"),

connection_name=if(isnotnull('connection.connection_name') AND len(trim('connection.connection_name'))>0, 'connection.connection_name', "unknown"),

application_key=if(isnotnull(application_id) AND len(trim(application_id))>0, application_id, application_name),

connection_key=if(isnotnull(connection_id) AND len(trim(connection_id))>0, connection_id, connection_name),

policy_name='policy.policy_name',

event_time=_time

| where mvfind('event_policy_guardrail_assocs{}.policy_guardrail_assoc.guardrail_avail_ruleset.guardrail_ruleset_type', "(?i)\\bPII\\b|personally identifiable information|\\bPCI\\b|payment card industry")>=0

| bin _time span=10m

| stats count as event_count
dc(event_id) as distinct_event_count
min(event_time) as firstTime
max(event_time) as lastTime
values(event_id) as event_ids
values(guardrail_ruleset_type) as guardrail_ruleset_types
values(guardrail_entity_name) as guardrail_entity_names
values(policy_name) as policy_names
values(application_name) as application_names
values(connection_name) as connection_names
by _time application_key connection_key

| `security_content_ctime(firstTime)`
| `security_content_ctime(lastTime)`

| table _time firstTime lastTime application_key application_names connection_key connection_names
distinct_event_count event_count event_ids guardrail_ruleset_types guardrail_entity_names policy_names

| `cisco_ai_defense_allowed_sensitive_prompt_filter`
how_to_implement: |-
Install and configure the Cisco Security Cloud app to ingest Cisco AI Defense alerts into Splunk with the cisco:ai:defense sourcetype.
Confirm that extraction is enabled for the required fields as shown in the detection search.
Configure the "cisco_ai_defense" macro to match the index, source, and sourcetype used in your environment.
The search groups matching prompt events by application and connection in ten-minute windows to reduce duplicate findings.
known_false_positives: |-
Authorized testing, demonstrations, synthetic data, or approved workflows may submit content that matches PII or PCI guardrails.
Review the application, connection, policy, guardrail entity, and data handling requirements before treating an event as a policy violation.
drilldown_searches:
- name: View the detection results for - "$application_names$"
search: '%original_detection_search% | search application_names="$application_names$"'
earliest_offset: $info_min_time$
latest_offset: $info_max_time$
finding:
title: Cisco AI Defense allowed [$distinct_event_count$] sensitive prompt event(s) for application [$application_names$] and connection [$connection_names$] matched guardrail(s) [$guardrail_ruleset_types$].
entity:
field: application_key
type: other
score: 50
threat_objects: []
analytic_story:
- Abuse of GenAI Systems and Applications
- Data Protection
Comment thread
nasbench marked this conversation as resolved.
- Critical Alerts
asset_type: Web Application
mitre_attack_id: []
product:
- Splunk Enterprise
- Splunk Enterprise Security
- Splunk Cloud
category: application
security_domain: endpoint
tests:
- name: True Positive Test
attack_data:
- data: https://media.githubusercontent.com/media/splunk/attack_data/master/datasets/suspicious_behaviour/cisco_ai_defense_alerts/cisco_ai_defense_alerts.json
source: not_applicable
sourcetype: cisco:ai:defense
test_type: unit
Original file line number Diff line number Diff line change
@@ -0,0 +1,73 @@
name: Cisco AI Defense Allowed Sensitive Response
id: 6e4cd833-ea98-4c16-a7e7-e1909fad3fb2
version: 1
creation_date: '2026-10-15'
modification_date: '2026-10-15'
author: Nasreddine Bencherchali, Splunk
status: production
type: TTP
description: |-
Detects Cisco AI Defense response events that were allowed and matched a privacy guardrail for personally identifiable information or payment card data.
These events may indicate that sensitive information was returned to an AI application user and should be reviewed promptly.
data_source:
- Cisco AI Defense Alerts
search: |-
`cisco_ai_defense`
event_action="allow"
event_message_type="response"

| eval guardrail_ruleset_type=mvjoin('event_policy_guardrail_assocs{}.policy_guardrail_assoc.guardrail_avail_ruleset.guardrail_ruleset_type', ", "),

guardrail_entity_name=mvjoin('event_policy_guardrail_assocs{}.policy_guardrail_assoc.guardrail_avail_entity.guardrail_entity_name', ", "),

application_name=if(isnotnull('genai_application.application_name') AND len(trim('genai_application.application_name'))>0, 'genai_application.application_name', "unknown"),

connection_name=if(isnotnull('connection.connection_name') AND len(trim('connection.connection_name'))>0, 'connection.connection_name', "unknown"),

policy_name='policy.policy_name'

| where mvfind('event_policy_guardrail_assocs{}.policy_guardrail_assoc.guardrail_avail_ruleset.guardrail_ruleset_type', "(?i)\\bPII\\b|personally identifiable information|\\bPCI\\b|payment card industry")>=0

| table _time event_date event_id event_message_type event_action resource_type
application_id application_name connection_id connection_name model.model_name
policy_name guardrail_ruleset_type guardrail_entity_name

| `cisco_ai_defense_allowed_sensitive_response_filter`
how_to_implement: |-
Install and configure the Cisco Security Cloud app to ingest Cisco AI Defense alerts into Splunk with the cisco:ai:defense sourcetype.
Confirm that extraction is enabled for the required fields as shown in the detection search.
Configure the "cisco_ai_defense" macro to match the index, source, and sourcetype used in your environment.
known_false_positives: |-
Authorized testing, demonstrations, or approved workflows may allow responses that match PII or PCI guardrails.
Review the application owner, policy, response context, and whether the data was expected to be disclosed.
drilldown_searches:
- name: View the detection results for - "$application_name$"
search: '%original_detection_search% | search application_name="$application_name$"'
earliest_offset: $info_min_time$
latest_offset: $info_max_time$
finding:
title: Cisco AI Defense allowed response [$event_id$] for application [$application_name$] matched privacy guardrail(s) [$guardrail_ruleset_type$] and entity [$guardrail_entity_name$].
entity:
field: application_name
type: other
score: 50
threat_objects: []
analytic_story:
- Abuse of GenAI Systems and Applications
- Data Protection
- Critical Alerts
asset_type: Web Application
mitre_attack_id: []
product:
- Splunk Enterprise
- Splunk Enterprise Security
- Splunk Cloud
category: application
security_domain: endpoint
tests:
- name: True Positive Test
attack_data:
- data: https://media.githubusercontent.com/media/splunk/attack_data/master/datasets/suspicious_behaviour/cisco_ai_defense_alerts/cisco_ai_defense_alerts.json
source: not_applicable
sourcetype: cisco:ai:defense
test_type: unit
Original file line number Diff line number Diff line change
@@ -0,0 +1,96 @@
name: Cisco AI Defense Repeated High Risk Activity
id: 45c5cf84-8ad0-4923-8332-a7fd3dab59d4
version: 1
creation_date: '2026-10-15'
modification_date: '2026-10-15'
author: Nasreddine Bencherchali, Splunk
status: production
type: TTP
description: |-
Detects bursts of five or more distinct Cisco AI Defense event IDs, or three or more occurrences of the same event ID, matching prompt injection, code detection, PII, or PCI guardrails for the same application and connection within ten minutes.
Allowed PII/PCI prompt events are handled by Cisco AI Defense Allowed Sensitive Prompt.
These patterns can indicate iterative prompt-injection probing or repeated attempts to use an AI application to access restricted data or capabilities.
data_source:
- Cisco AI Defense Alerts
search: |-
`cisco_ai_defense`

```Leave allowed PII/PCI prompt events to Cisco AI Defense Allowed Sensitive Prompt```

| eval is_allowed_sensitive_prompt=if(lower(event_action)="allow" AND lower(event_message_type)="prompt" AND mvfind('event_policy_guardrail_assocs{}.policy_guardrail_assoc.guardrail_avail_ruleset.guardrail_ruleset_type', "(?i)\\bPII\\b|personally identifiable information|\\bPCI\\b|payment card industry")>=0, 1, 0)
| where is_allowed_sensitive_prompt=0

| eval guardrail_ruleset_type=mvjoin('event_policy_guardrail_assocs{}.policy_guardrail_assoc.guardrail_avail_ruleset.guardrail_ruleset_type', ", "),
application_name=if(isnotnull('genai_application.application_name') AND len(trim('genai_application.application_name'))>0, 'genai_application.application_name', "unknown"),
connection_name=if(isnotnull('connection.connection_name') AND len(trim('connection.connection_name'))>0, 'connection.connection_name', "unknown"),
application_key=if(isnotnull(application_id) AND len(trim(application_id))>0, application_id, application_name),
connection_key=if(isnotnull(connection_id) AND len(trim(connection_id))>0, connection_id, connection_name)

| where mvfind('event_policy_guardrail_assocs{}.policy_guardrail_assoc.guardrail_avail_ruleset.guardrail_ruleset_type', "(?i)prompt injection|code detection|\\bPII\\b|personally identifiable information|\\bPCI\\b|payment card industry")>=0

| bin _time span=10m

```Track repeated records with the same Cisco event ID separately from bursts of distinct event IDs```
| eventstats count as same_event_id_count by _time application_key connection_key event_id

| stats count as event_count
dc(event_id) as distinct_event_count
max(eval(if(isnotnull(event_id) AND len(trim(event_id))>0, same_event_id_count, 0))) as max_same_event_id_count
values(eval(if(isnotnull(event_id) AND len(trim(event_id))>0 AND same_event_id_count>=3, event_id, null()))) as repeated_event_ids
count(eval(lower(event_action)="allow")) as allowed_event_count
count(eval(lower(event_action)="block")) as blocked_event_count
values(event_id) as event_ids
values(event_action) as event_actions
values(event_message_type) as message_types
values(policy.policy_name) as policy_names
values(guardrail_ruleset_type) as guardrail_ruleset_types
values(connection_name) as connection_names
values(application_name) as application_names
by _time application_key connection_key

| where distinct_event_count>=5 OR max_same_event_id_count>=3

| table _time application_key application_names connection_key connection_names
event_count distinct_event_count max_same_event_id_count repeated_event_ids
allowed_event_count blocked_event_count event_actions message_types policy_names
guardrail_ruleset_types event_ids

| `cisco_ai_defense_repeated_high_risk_activity_filter`
how_to_implement: |-
Install and configure the Cisco Security Cloud app to ingest Cisco AI Defense alerts into Splunk.
Confirm that extraction is enabled for the required fields as shown in the detection search.
Configure the "cisco_ai_defense" macro to match the index, source, and sourcetype used in your environment.
Adjust the five-distinct-event threshold, three-occurrence same-event-ID threshold, and ten-minute window as needed.
known_false_positives: |-
Automated testing, red-team exercises, application QA, or a popular shared application may generate repeated guardrail events.
Review whether the window contains allowed events and whether the activity was expected for the application and connection.
drilldown_searches:
- name: View the detection results for - "$application_key$"
search: '%original_detection_search% | search application_key="$application_key$"'
earliest_offset: $info_min_time$
latest_offset: $info_max_time$
finding:
title: Cisco AI Defense observed [$event_count$] high risk event occurrences across [$distinct_event_count$] unique event IDs in ten minutes for application [$application_names$] and connection [$connection_names$]. Maximum same-ID count -> [$max_same_event_id_count$] ; Allowed events -> [$allowed_event_count$] ; Blocked events -> [$blocked_event_count$].
entity:
field: application_key
type: other
score: 50
threat_objects: []
analytic_story:
- Abuse of GenAI Systems and Applications
Comment thread
nasbench marked this conversation as resolved.
- Critical Alerts
asset_type: Web Application
mitre_attack_id: []
product:
- Splunk Enterprise
- Splunk Enterprise Security
- Splunk Cloud
category: application
security_domain: endpoint
tests:
- name: True Positive Test
attack_data:
- data: https://media.githubusercontent.com/media/splunk/attack_data/master/datasets/suspicious_behaviour/cisco_ai_defense_alerts/cisco_ai_defense_alerts.json
source: not_applicable
sourcetype: cisco:ai:defense
test_type: unit
Loading
Loading