Detection rules › Panther

Signal - Notion Account Changed

Severity
informational
Log types
Notion.AuditLogs
Tags
Notion, Identity & Access Management, Persistence
Reference
https://www.notion.so/help/account-settings
Source
github.com/panther-labs/panther-analysis

A Notion User changed their account information.

MITRE ATT&CK coverage

TacticTechniques
PersistenceNo specific technique

Rule body yaml

AnalysisType: rule
Filename: notion_account_changed.py
RuleID: "Notion.AccountChange"
DisplayName: "Signal - Notion Account Changed"
Enabled: true
CreateAlert: false
LogTypes:
  - Notion.AuditLogs
Tags:
  - Notion
  - Identity & Access Management
  - Persistence
Severity: Info
Description: A Notion User changed their account information.
DedupPeriodMinutes: 60
Threshold: 1
Reference: https://www.notion.so/help/account-settings
Tests:
  - Name: Login event
    ExpectedResult: false
    Log:
      {
        "event":
          {
            "actor":
              {
                "id": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx",
                "object": "user",
                "person": { "email": "aragorn.elessar@lotr.com" },
                "type": "person",
              },
            "details": { "authType": "email" },
            "id": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx",
            "ip_address": "192.168.100.100",
            "platform": "web",
            "timestamp": "2023-06-12 21:40:28.690000000",
            "type": "user.login",
            "workspace_id": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx",
          },
        "p_event_time": "2023-06-12 21:40:28.690000000",
        "p_log_type": "Notion.AuditLogs",
        "p_parse_time": "2023-06-12 22:53:51.602223297",
        "p_row_id": "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx",
        "p_schema_version": 0,
        "p_source_id": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx",
        "p_source_label": "Notion Logs",
      }
  - Name: Email Changed
    ExpectedResult: true
    Log:
      {
        "event":
          {
            "actor":
              {
                "id": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx",
                "object": "user",
                "person": { "email": "aragorn.elessar@lotr.com" },
                "type": "person",
              },
            "details": { "authType": "email" },
            "id": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx",
            "ip_address": "192.168.100.100",
            "platform": "web",
            "timestamp": "2023-06-12 21:40:28.690000000",
            "type": "user.settings.login_method.email_updated",
            "workspace_id": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx",
          },
        "p_event_time": "2023-06-12 21:40:28.690000000",
        "p_log_type": "Notion.AuditLogs",
        "p_parse_time": "2023-06-12 22:53:51.602223297",
        "p_row_id": "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx",
        "p_schema_version": 0,
        "p_source_id": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx",
        "p_source_label": "Notion Logs",
      }

Detection logic

Condition

event.type in ["user.settings.login_method.email_updated", "user.settings.login_method.password_updated", "user.settings.login_method.password_added", "user.settings.login_method.password_removed"]

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.

FieldKindValues
event.typein
  • user.settings.login_method.email_updated
  • user.settings.login_method.password_added
  • user.settings.login_method.password_removed
  • user.settings.login_method.password_updated

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.

FieldSource
emailevent.actor.person.email