Detection rules › Panther

Snowflake External Data Share

Severity
medium
Log types
Snowflake.DataTransferHistory
Tags
Snowflake, [MITRE] Exfiltration, [MITRE] Transfer Data to Cloud Account
Source
github.com/panther-labs/panther-analysis

Detect when an external share has been initiated from one source cloud to another target cloud.

MITRE ATT&CK coverage

TacticTechniques
ExfiltrationT1537 Transfer Data to Cloud Account

Rule body yaml

AnalysisType: rule
Filename: snowflake_stream_external_shares.py
RuleID: Snowflake.Stream.ExternalShares
DisplayName: Snowflake External Data Share
Enabled: true
LogTypes:
  - Snowflake.DataTransferHistory
Severity: Medium
Reports:
  MITRE ATT&CK:
    - TA0010:T1537
Description: Detect when an external share has been initiated from one source cloud
  to another target cloud.
Runbook: Determine if this occurred as a result of a valid business request.
Tags:
  - Snowflake
  - '[MITRE] Exfiltration'
  - '[MITRE] Transfer Data to Cloud Account'
Tests:
  - Name: Zero byte transfer
    ExpectedResult: false
    Log:
      {
        "REGION": "US-EAST-2",
        "SOURCE_CLOUD": "AWS",
        "SOURCE_REGION": "US-EAST-2",
        "TARGET_CLOUD": "AWS",
        "TARGET_REGION": "EU-WEST-1",
        "BYTES_TRANSFERRED": 0,
        "TRANSFER_TYPE": "COPY"
      }
  - Name: Disallowed Share
    ExpectedResult: true
    Log:
      {
        "REGION": "US-EAST-2",
        "SOURCE_CLOUD": "AWS",
        "SOURCE_REGION": "US-EAST-2",
        "TARGET_CLOUD": "AWS",
        "TARGET_REGION": "EU-WEST-1",
        "BYTES_TRANSFERRED": 61235879,
        "TRANSFER_TYPE": "COPY"
      }

Detection logic

Condition

SOURCE_CLOUD is_not_null
TARGET_CLOUD is_not_null
BYTES_TRANSFERRED gt "0"

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
BYTES_TRANSFERREDgt
  • 0
SOURCE_CLOUDis_not_null
  • (no value, null check)
TARGET_CLOUDis_not_null
  • (no value, null check)

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_CLOUD
SOURCE_REGION
TARGET_CLOUD
TARGET_REGION
TRANSFER_TYPE
BYTES_TRANSFERRED