Skip to content

[Rule Tuning] Microsoft Graph Request Email Access by Unusual User and Client#6378

Open
terrancedejesus wants to merge 2 commits into
mainfrom
rule-tuning/graph-email-access-scopes-fp
Open

[Rule Tuning] Microsoft Graph Request Email Access by Unusual User and Client#6378
terrancedejesus wants to merge 2 commits into
mainfrom
rule-tuning/graph-email-access-scopes-fp

Conversation

@terrancedejesus

Copy link
Copy Markdown
Contributor

Pull Request

Issue link(s):

Summary - What I changed

Tunes the Microsoft Graph Request Email Access by Unusual User and Client rule to remove OAuth scopes from the OR condition which caused unexpected false-positives since it matches on any token with those scopes authorized for the client. Linted as well. Merging after #6335 is merged.

How To Test

Query can be used in TRADE stack or telemetry stack.

Checklist

  • Added a label for the type of pr: bug, enhancement, schema, maintenance, Rule: New, Rule: Deprecation, Rule: Tuning, Hunt: New, or Hunt: Tuning so guidelines can be generated
  • Added the meta:rapid-merge label if planning to merge within 24 hours
  • Secret and sensitive material has been managed correctly
  • Automated testing was updated or added to match the most common scenarios
  • Documentation and comments were added for features that require explanation

Contributor checklist

@terrancedejesus terrancedejesus self-assigned this Jul 2, 2026
@terrancedejesus terrancedejesus added Integration: Azure azure related rules Rule: Tuning tweaking or tuning an existing rule Domain: Cloud Domain: Web labels Jul 2, 2026
@github-actions

github-actions Bot commented Jul 2, 2026

Copy link
Copy Markdown
Contributor

Rule: Tuning - Guidelines

These guidelines serve as a reminder set of considerations when tuning an existing rule.

Documentation and Context

  • Detailed description of the suggested changes.
  • Provide example JSON data or screenshots.
  • Provide evidence of reducing benign events mistakenly identified as threats (False Positives).
  • Provide evidence of enhancing detection of true threats that were previously missed (False Negatives).
  • Provide evidence of optimizing resource consumption and execution time of detection rules (Performance).
  • Provide evidence of specific environment factors influencing customized rule tuning (Contextual Tuning).
  • Provide evidence of improvements made by modifying sensitivity by changing alert triggering thresholds (Threshold Adjustments).
  • Provide evidence of refining rules to better detect deviations from typical behavior (Behavioral Tuning).
  • Provide evidence of improvements of adjusting rules based on time-based patterns (Temporal Tuning).
  • Provide reasoning of adjusting priority or severity levels of alerts (Severity Tuning).
  • Provide evidence of improving quality integrity of our data used by detection rules (Data Quality).
  • Ensure the tuning includes necessary updates to the release documentation and versioning.

Rule Metadata Checks

  • updated_date matches the date of tuning PR merged.
  • min_stack_version should support the widest stack versions.
  • name and description should be descriptive and not include typos.
  • query should be inclusive, not overly exclusive. Review to ensure the original intent of the rule is maintained.

Testing and Validation

  • Validate that the tuned rule's performance is satisfactory and does not negatively impact the stack.
  • Ensure that the tuned rule has a low false positive rate.

@terrancedejesus terrancedejesus marked this pull request as ready for review July 2, 2026 19:55
Copilot AI review requested due to automatic review settings July 2, 2026 19:55

Copilot AI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

Tunes the Azure Microsoft Graph email-access New Terms rule to reduce false positives by narrowing the match conditions and keying first-seen detection on additional context.

Changes:

  • Removes the OAuth-scope-based OR matching so the rule no longer alerts solely on token scopes.
  • Constrains matching to Graph mail-related url.path patterns across /v1.0 and /beta for /me and /users.
  • Extends the New Terms key to include source.as.number (ASN) and updates rule metadata updated_date.

Comment on lines +14 to +15
object ID. This is a New Terms rule that only signals if the application ID, user principal object ID, and source ASN have not been
seen doing this activity historically.
### Investigating Microsoft Graph Request Email Access by Unusual User and Client

This rule detects instances where a previously unseen or rare Microsoft Graph application client ID accesses email-related APIs, such as `/me/messages`, `/sendMail`, or `/mailFolders/inbox/messages`. These accesses are performed via delegated user credentials using common OAuth scopes like `Mail.Read`, `Mail.ReadWrite`, `Mail.Send`, or `email`. This activity may indicate unauthorized use of a newly consented or compromised application to read or exfiltrate mail content. This is a New Terms rule that only signals if the application ID (`azure.graphactivitylogs.properties.app_id`) and user principal object ID (`azure.graphactivitylogs.properties.user_principal_object_id`) have not been seen doing this activity in the last 14 days.
This rule detects instances where a previously unseen or rare Microsoft Graph application client ID accesses email-related API paths, such as `/v1.0/me/messages`, `/v1.0/me/mailFolders/inbox/messages`, or `/v1.0/users/{id}/messages`. The access is performed with a delegated user token issued to a first-party public client (public client authentication, no client secret), which is the token shape produced by phished OAuth refresh tokens or Primary Refresh Tokens (PRTs). This activity may indicate unauthorized use of a newly consented or compromised application to read or exfiltrate mail content. This is a New Terms rule that only signals if the application ID (`azure.graphactivitylogs.properties.app_id`), user principal object ID (`azure.graphactivitylogs.properties.user_principal_object_id`), and source ASN (`azure.graphactivitylogs.properties.source_asn`) have not been seen doing this activity historically.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

backport: auto Domain: Cloud Domain: Web Integration: Azure azure related rules Rule: Tuning tweaking or tuning an existing rule

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants