Detection rules › Panther

Anthropic SSO Disabled

Severity
high
Group by
actor.email_address
Log types
Anthropic.Activity
Tags
Anthropic, Authentication, Defense Evasion
Source
github.com/panther-labs/panther-analysis

Detects when SSO is disabled or an SSO connection is deactivated for the organization. Disabling SSO allows users to bypass the identity provider and use weaker authentication methods. This is a critical security posture change that could indicate an attacker attempting to maintain access without IdP visibility.

MITRE ATT&CK coverage

Rule body yaml

AnalysisType: rule
RuleID: Anthropic.Activity.SSO.Disabled
DisplayName: "Anthropic SSO Disabled"
Enabled: true
Filename: anthropic_sso_disabled.py
LogTypes:
  - Anthropic.Activity
Severity: High
Description: >
  Detects when SSO is disabled or an SSO connection is deactivated for the
  organization. Disabling SSO allows users to bypass the identity provider
  and use weaker authentication methods. This is a critical security posture
  change that could indicate an attacker attempting to maintain access
  without IdP visibility.
Runbook: |
  1. Find all Anthropic.Activity events by actor:email_address in the 24 hours before the alert to identify any suspicious activity leading up to the SSO change
  2. Check if actor:ip_address matches previously seen IP addresses for this actor in the past 30 days to detect potential account compromise
  3. Find all SSO-related events (sso_login_failed, sso_login_initiated, sso_login_succeeded) in the 1 hour before and after the alert to understand the authentication context
Tags:
  - Anthropic
  - Authentication
  - Defense Evasion
Reports:
  MITRE ATT&CK:
    - TA0005:T1562.001  # Impair Defenses: Disable or Modify Tools
Tests:
  - Name: SSO toggled off
    ExpectedResult: true
    Log:
      {
        "id": "activity_01ABC123",
        "created_at": "2026-05-07T10:00:00Z",
        "organization_id": "org_01XYZ",
        "type": "org_sso_toggled",
        "is_enabled": false,
        "actor": {
          "type": "user_actor",
          "email_address": "admin@example.com",
          "user_id": "user_01ABC",
          "ip_address": "10.0.0.1",
          "user_agent": "Mozilla/5.0"
        }
      }
  - Name: SSO toggled on - not a match
    ExpectedResult: false
    Log:
      {
        "id": "activity_01DEF456",
        "created_at": "2026-05-07T10:00:00Z",
        "organization_id": "org_01XYZ",
        "type": "org_sso_toggled",
        "is_enabled": true,
        "actor": {
          "type": "user_actor",
          "email_address": "admin@example.com",
          "user_id": "user_01ABC",
          "ip_address": "10.0.0.1"
        }
      }
  - Name: SSO connection deactivated
    ExpectedResult: true
    Log:
      {
        "id": "activity_01GHI789",
        "created_at": "2026-05-07T10:00:00Z",
        "organization_id": "org_01XYZ",
        "type": "org_sso_connection_deactivated",
        "actor": {
          "type": "user_actor",
          "email_address": "admin@example.com",
          "user_id": "user_01GHI",
          "ip_address": "10.0.0.3",
          "user_agent": "Mozilla/5.0"
        }
      }
  - Name: Non-matching event type
    ExpectedResult: false
    Log:
      {
        "id": "activity_01JKL012",
        "created_at": "2026-05-07T10:00:00Z",
        "organization_id": "org_01XYZ",
        "type": "sso_login_succeeded",
        "actor": {
          "type": "user_actor",
          "email_address": "user@example.com",
          "user_id": "user_01JKL",
          "ip_address": "10.0.0.4"
        }
      }

Detection logic

Condition

(type eq "org_sso_toggled" and is_enabled in ["False", "false"]) or type eq "org_sso_connection_deactivated"

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
is_enabledin
  • False
  • false
typeeq
  • org_sso_connection_deactivated
  • org_sso_toggled

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
event_typetype
actor_typeactor.type
actor_emailactor.email_address
actor_user_idactor.user_id
ip_addressactor.ip_address
user_agentactor.user_agent
api_key_idactor.api_key_id
organization_id
ipsp_any_ip_addresses