Detection rules › Kusto
Copilot - Jailbreak Attempt Detected
'Detects jailbreak attempts in Copilot interactions where users are trying to bypass Copilot guardrails and security controls. This rule identifies prompt injection and LLM abuse scenarios that could lead to initial access, credential access, or system impact.'
MITRE ATT&CK coverage
| Tactic | Techniques |
|---|---|
| Initial Access | T1078 Valid Accounts |
| Credential Access | T1110 Brute Force |
| Impact | T1565 Data Manipulation |
Rule body kusto
id: e5f6a7b8-c9d0-41e2-f3a4-b5c6d7e8f9a0
name: Copilot - Jailbreak Attempt Detected
description: |
'Detects jailbreak attempts in Copilot interactions where users are trying to bypass Copilot guardrails and security controls.
This rule identifies prompt injection and LLM abuse scenarios that could lead to initial access, credential access, or system impact.'
severity: High
status: Available
requiredDataConnectors:
- connectorId: MicrosoftCopilot
dataTypes:
- CopilotActivity
queryFrequency: 5m
queryPeriod: 5m
triggerOperator: gt
triggerThreshold: 0
tactics:
- InitialAccess
- CredentialAccess
- Impact
relevantTechniques:
- T1078
- T1110
- T1565
query: |
CopilotActivity
| where RecordType == "CopilotInteraction"
| where LLMEventData has "JailbreakDetected"
| extend Data = parse_json(LLMEventData)
| extend Jailbreak = tostring(Data.Messages[0].JailbreakDetected)
| where Jailbreak == "true"
| project TimeGenerated, ActorName, AIModelName, Jailbreak
entityMappings:
- entityType: Account
fieldMappings:
- identifier: FullName
columnName: ActorName
version: 1.0.0
kind: Scheduled
Stages and Predicates
Stage 1: source
CopilotActivity
Stage 2: where
| where RecordType == "CopilotInteraction"
Stage 3: where
| where LLMEventData has "JailbreakDetected"
Stage 4: extend
| extend Data = parse_json(LLMEventData)
Stage 5: extend
| extend Jailbreak = tostring(Data.Messages[0].JailbreakDetected)
Stage 6: where
| where Jailbreak == "true"
Stage 7: project
| project TimeGenerated, ActorName, AIModelName, Jailbreak
Indicators
Each row is a field, operator, and value that the rule matches. The corpus column counts how many other rules in the catalog look for the same combination: high numbers point to widely-used, community-vetted indicators. Blank or 1 shows that the indicator is specific to this rule.
| Field | Kind | Values |
|---|---|---|
Jailbreak | eq |
|
LLMEventData | match |
|
RecordType | eq |
|
Output fields
Fields the rule emits when it matches. Chronicle authors list these in the outcome block; they appear on the detection and $risk_score drives alerting. Sentinel / Defender XDR rules build them up through project / summarize / extend stages. Sentinel maps these into alert fields via entityMappings and customDetails; Defender XDR custom detections surface them as alert fields directly.
| Field | Source |
|---|---|
AIModelName | project |
ActorName | project |
Jailbreak | project |
TimeGenerated | project |