Detection rules › Sublime MQL

Sublime MQL rules: dlp

RuleSeverity
DLP - PCI: American Express Credit Card Numberhigh
DLP - PCI: Discover Credit Card Numberhigh
DLP - PCI: Mastercard Credit Card Numberhigh
DLP - PCI: US Credit Card Number (Any Network)high
DLP - PCI: Visa Credit Card Numberhigh
DLP: Argentina DNI Numberhigh
DLP: Australia Bank Account Numbermedium
DLP: Australia Credit Card Numberhigh
DLP: Australia Driver's License Numbermedium
DLP: Australia Medical Account Numberhigh
DLP: Australia Passport Numberhigh
DLP: Australia SWIFT Codemedium
DLP: Australia Tax File Numbermedium
DLP: Austria Identity Cardhigh
DLP: Austria Social Security Numberhigh
DLP: Austria Tax Identification Numbermedium
DLP: AWS Credentialshigh
DLP: Azure Authentication Tokenhigh
DLP: Basic Authentication Headermedium
DLP: Belgium National Numberhigh
DLP: Brazil CPF Numberhigh
DLP: Brazil RG Numberhigh
DLP: Bulgaria Uniform Civil Numberhigh
DLP: Canada Bank Account Numbermedium
DLP: Canada Credit Card Numberhigh
DLP: Canada Driver's License Numbermedium
DLP: Canada Health Service Numberhigh
DLP: Canada Passport Numberhigh
DLP: Canada Personal Health Identification Number (PHIN)high
DLP: Canada Social Insurance Number (SIN)high
DLP: Chile Identity Card Numberhigh
DLP: China Resident ID Numberhigh
DLP: Colombia Citizenship Card Numberhigh
DLP: Croatia Personal Identification (OIB)high
DLP: Cyprus Identity Cardhigh
DLP: Czech Personal Identity Numberhigh
DLP: Denmark Personal Identification Numberhigh
DLP: Estonia Personal Identification Codehigh
DLP: EU Debit Card Numberhigh
DLP: Finland National IDhigh
DLP: France Bank Account Numbermedium
DLP: France Credit Card Numberhigh
DLP: France Debit Card Numberhigh
DLP: France Driver's License Numbermedium
DLP: France National ID Card (CNI)high
DLP: France Passport Numberhigh
DLP: France Social Security Number (INSEE)high
DLP: France Tax Identification Number (SPI)medium
DLP: GCP API Keyhigh
DLP: Germany Bank Account Number (IBAN)medium
DLP: Germany Driver's License Numbermedium
DLP: Germany Identity Card Number (Personalausweisnummer)high
DLP: Germany Passport Numberhigh
DLP: Germany Tax Identification Numbermedium
DLP: GitHub Tokenhigh
DLP: Greece National ID Cardhigh
DLP: Greece Social Security Number (AMKA)high
DLP: Greece Tax Identification Numbermedium
DLP: Hungary Personal Identification Numberhigh
DLP: Hungary Social Security Number (TAJ)high
DLP: Hungary Tax Identification Numbermedium
DLP: IMEI Numbermedium
DLP: IMSI Numbermedium
DLP: India Aadhaar Numberhigh
DLP: India Bank Account Numbermedium
DLP: India PAN Numberhigh
DLP: India Passport Numberhigh
DLP: IP Addresslow
DLP: Ireland Personal Public Service (PPS) Numberhigh
DLP: Israel Bank Account Numbermedium
DLP: Israel Credit Card Numberhigh
DLP: Israel National IDhigh
DLP: Israel SWIFT Codemedium
DLP: Italy Fiscal Codehigh
DLP: Japan Bank Account Numbermedium
DLP: Japan Credit Card Numberhigh
DLP: Japan Driver's License Numbermedium
DLP: Japan MyNumber IDhigh
DLP: Japan Passport Numberhigh
DLP: Japan Social Insurance Numberhigh
DLP: JSON Web Token (JWT)medium
DLP: Latvia Personal Codehigh
DLP: Lithuania Personal Codehigh
DLP: Luxembourg National ID (Natural Persons)high
DLP: Luxembourg National ID (Non-Natural Persons)medium
DLP: MAC Addresslow
DLP: Malta Identity Card Numberhigh
DLP: Malta Tax ID Numbermedium
DLP: Mexico CURP Numberhigh
DLP: Mexico Passport Numberhigh
DLP: Netherlands Citizen's Service (BSN) Numberhigh
DLP: Netherlands Tax Identification Numbermedium
DLP: OAuth Client Secrethigh
DLP: Poland Identity Cardhigh
DLP: Poland Tax Identification Numbermedium
DLP: Portugal Citizen Card Numberhigh
DLP: Portugal Tax Identification Numbermedium
DLP: Private Keyhigh
DLP: Romania Personal Numerical Codehigh
DLP: Saudi Arabia IBANmedium
DLP: Saudi Arabia National IDhigh
DLP: Saudi Arabia SWIFT Codemedium
DLP: Slack Tokenhigh
DLP: Slovakia Personal Numberhigh
DLP: Slovenia Tax Identification Numbermedium
DLP: Slovenia Unique Master Citizen Numberhigh
DLP: South Korea Resident Registration Number (RRN)high
DLP: Spain Bank Account Numbermedium
DLP: Spain DNI/NIEhigh
DLP: Spain Passport Numberhigh
DLP: Spain Social Security Numberhigh
DLP: Spain Tax Identification Numbermedium
DLP: SSL Certificatemedium
DLP: Sweden National IDhigh
DLP: Sweden Tax Identification Numbermedium
DLP: Taiwan ID Numberhigh
DLP: Turkey ID Numberhigh
DLP: UK National Health Service Numberhigh
DLP: UK National Insurance Number (NINO)high
DLP: UK Passport Numberhigh
DLP: UK SWIFT Codemedium
DLP: US Bank Account Numbermedium
DLP: US Driver's License Numbermedium
DLP: US ICD-10-CM Codemedium
DLP: US ICD-9-CM Codemedium
DLP: US Individual Taxpayer Identification Number (ITIN)high
DLP: US Insurance Claim Numbermedium
DLP: US Passport Numberhigh
DLP: US Social Security Number (SSN)high
DLP: Vehicle Identification Number (VIN)medium

DLP - PCI: American Express Credit Card Number

#
Severity
high
Type
rule
Source
github.com/sublime-security/sublime-rules

Detects outbound emails containing American Express (Amex) credit card numbers in the message body or text-parseable attachments. Amex PANs are 15 digits and start with 34 or 37. The standard human-readable format groups digits as XXXX XXXXXX XXXXX (e.g. 3782 822463 10005), though undelimited and dash-separated variants are also matched. Deploy this rule with the "Block Delivery" action to prevent PCI data exfiltration, or in passive mode to monitor and audit outbound mail containing card numbers. Regex engine: RE2 (Golang). No PCRE lookbehind — word boundaries (\b) are used instead. Attachment content is extracted via file.explode() / .scan.strings.strings.

Telemetry coverage

PlatformRecord / event type
SublimeInbound email message

Message attributes

  • attachments
  • body
  • body.current_thread
  • type

Rule body

type.outbound
and (
  // Body: Amex 15-digit with standard 4-6-5 grouping (spaces or dashes)
  regex.contains(body.current_thread.text,
    '\b3[47]\d{2}[\s-]?\d{6}[\s-]?\d{5}\b'
  )

  // Attachments: scan extracted strings from PDFs, Office docs, CSVs, etc.
  or any(attachments,
    .file_extension in~ ('pdf', 'doc', 'docx', 'xls', 'xlsx', 'txt', 'csv', 'eml', 'msg')
    and any(file.explode(.),
      any(.scan.strings.strings,
        regex.contains(., '\b3[47]\d{2}[\s-]?\d{6}[\s-]?\d{5}\b')
      )
    )
  )
)

Detection logic

Scope: outbound message.

Detects outbound emails containing American Express (Amex) credit card numbers in the message body or text-parseable attachments. Amex PANs are 15 digits and start with 34 or 37. The standard human-readable format groups digits as XXXX XXXXXX XXXXX (e.g. 3782 822463 10005), though undelimited and dash-separated variants are also matched. Deploy this rule with the "Block Delivery" action to prevent PCI data exfiltration, or in passive mode to monitor and audit outbound mail containing card numbers. Regex engine: RE2 (Golang). No PCRE lookbehind — word boundaries (\b) are used instead. Attachment content is extracted via file.explode() / .scan.strings.strings.

  1. outbound message
  2. any of:
    • body.current_thread.text matches '\\b3[47]\\d{2}[\\s-]?\\d{6}[\\s-]?\\d{5}\\b'
    • any of attachments where all hold:
      • .file_extension in ('pdf', 'doc', 'docx', 'xls', 'xlsx', 'txt', 'csv', 'eml', 'msg')
      • any of file.explode(.) where:
        • any of .scan.strings.strings where:
          • . matches '\\b3[47]\\d{2}[\\s-]?\\d{6}[\\s-]?\\d{5}\\b'

Inspects: attachments[].file_extension, body.current_thread.text, type.outbound. Sensors: file.explode, regex.contains.

Indicators matched (10)

FieldMatchValue
regex.containsregex\b3[47]\d{2}[\s-]?\d{6}[\s-]?\d{5}\b
attachments[].file_extensionmemberpdf
attachments[].file_extensionmemberdoc
attachments[].file_extensionmemberdocx
attachments[].file_extensionmemberxls
attachments[].file_extensionmemberxlsx
attachments[].file_extensionmembertxt
attachments[].file_extensionmembercsv
attachments[].file_extensionmembereml
attachments[].file_extensionmembermsg

Stages and Predicates

Stage 1: mql_rule

and
  or
    any(attachments)
      and
        any(file.explode(attachments))
          any(file.explode(attachments).scan.strings.strings)
            file.explode(attachments).scan.strings.strings regex_match "\\b3[47]\\d{2}[\\s-]?\\d{6}[\\s-]?\\d{5}\\b"
        attachments.file_extension in ["csv", "doc", "docx", "eml", "msg", "pdf", "txt", "xls", "xlsx"]
    body.current_thread.text regex_match "\\b3[47]\\d{2}[\\s-]?\\d{6}[\\s-]?\\d{5}\\b"
  type.outbound eq "true"

Indicators

These rows show field, operator, and value matches.

DLP - PCI: Discover Credit Card Number

#
Severity
high
Type
rule
Source
github.com/sublime-security/sublime-rules

Detects outbound emails containing Discover credit card numbers in the message body or text-parseable attachments. Discover PANs are 16 digits and start with one of the following BIN ranges: 6011, 622126–622925 (UnionPay co-branded), 644–649, or 65. Optional space or dash separators between digit groups are matched (e.g. 6011 1111 1111 1117 or 6011-1111-1111-1117). Deploy this rule with the "Block Delivery" action to prevent PCI data exfiltration, or in passive mode to monitor and audit outbound mail containing card numbers. Regex engine: RE2 (Golang). No PCRE lookbehind — word boundaries (\b) are used instead. Attachment content is extracted via file.explode() / .scan.strings.strings.

Telemetry coverage

PlatformRecord / event type
SublimeInbound email message

Message attributes

  • attachments
  • body
  • body.current_thread
  • type

Rule body

type.outbound
and (
  // Body: Discover 6011 prefix
  regex.contains(body.current_thread.text,
    '\b6011[\s-]?\d{4}[\s-]?\d{4}[\s-]?\d{4}\b'
  )

  // Body: Discover 65xx prefix
  or regex.contains(body.current_thread.text,
    '\b65\d{2}[\s-]?\d{4}[\s-]?\d{4}[\s-]?\d{4}\b'
  )

  // Body: Discover 644–649 prefix
  or regex.contains(body.current_thread.text,
    '\b64[4-9]\d[\s-]?\d{4}[\s-]?\d{4}[\s-]?\d{4}\b'
  )

  // Body: Discover/UnionPay co-branded 622126–622925
  or regex.contains(body.current_thread.text,
    '\b622(?:1(?:2[6-9]|[3-9]\d)|[2-8]\d{2}|9(?:[01]\d|2[0-5]))\d{2}[\s-]?\d{4}[\s-]?\d{4}\b'
  )

  // Attachments: scan extracted strings from PDFs, Office docs, CSVs, etc.
  or any(attachments,
    .file_extension in~ ('pdf', 'doc', 'docx', 'xls', 'xlsx', 'txt', 'csv', 'eml', 'msg')
    and any(file.explode(.),
      any(.scan.strings.strings,
        regex.contains(., '\b6011[\s-]?\d{4}[\s-]?\d{4}[\s-]?\d{4}\b')
        or regex.contains(., '\b65\d{2}[\s-]?\d{4}[\s-]?\d{4}[\s-]?\d{4}\b')
        or regex.contains(., '\b64[4-9]\d[\s-]?\d{4}[\s-]?\d{4}[\s-]?\d{4}\b')
        or regex.contains(.,
          '\b622(?:1(?:2[6-9]|[3-9]\d)|[2-8]\d{2}|9(?:[01]\d|2[0-5]))\d{2}[\s-]?\d{4}[\s-]?\d{4}\b'
        )
      )
    )
  )
)

Detection logic

Scope: outbound message.

Detects outbound emails containing Discover credit card numbers in the message body or text-parseable attachments. Discover PANs are 16 digits and start with one of the following BIN ranges: 6011, 622126–622925 (UnionPay co-branded), 644–649, or 65. Optional space or dash separators between digit groups are matched (e.g. 6011 1111 1111 1117 or 6011-1111-1111-1117). Deploy this rule with the "Block Delivery" action to prevent PCI data exfiltration, or in passive mode to monitor and audit outbound mail containing card numbers. Regex engine: RE2 (Golang). No PCRE lookbehind — word boundaries (\b) are used instead. Attachment content is extracted via file.explode() / .scan.strings.strings.

  1. outbound message
  2. any of:
    • body.current_thread.text matches '\\b6011[\\s-]?\\d{4}[\\s-]?\\d{4}[\\s-]?\\d{4}\\b'
    • body.current_thread.text matches '\\b65\\d{2}[\\s-]?\\d{4}[\\s-]?\\d{4}[\\s-]?\\d{4}\\b'
    • body.current_thread.text matches '\\b64[4-9]\\d[\\s-]?\\d{4}[\\s-]?\\d{4}[\\s-]?\\d{4}\\b'
    • body.current_thread.text matches '\\b622(?:1(?:2[6-9]|[3-9]\\d)|[2-8]\\d{2}|9(?:[01]\\d|2[0-5]))\\d{2}[\\s-]?\\d{4}[\\s-]?\\d{4}\\b'
    • any of attachments where all hold:
      • .file_extension in ('pdf', 'doc', 'docx', 'xls', 'xlsx', 'txt', 'csv', 'eml', 'msg')
      • any of file.explode(.) where:
        • any of .scan.strings.strings where any holds:
          • . matches '\\b6011[\\s-]?\\d{4}[\\s-]?\\d{4}[\\s-]?\\d{4}\\b'
          • . matches '\\b65\\d{2}[\\s-]?\\d{4}[\\s-]?\\d{4}[\\s-]?\\d{4}\\b'
          • . matches '\\b64[4-9]\\d[\\s-]?\\d{4}[\\s-]?\\d{4}[\\s-]?\\d{4}\\b'
          • . matches '\\b622(?:1(?:2[6-9]|[3-9]\\d)|[2-8]\\d{2}|9(?:[01]\\d|2[0-5]))\\d{2}[\\s-]?\\d{4}[\\s-]?\\d{4}\\b'

Inspects: attachments[].file_extension, body.current_thread.text, type.outbound. Sensors: file.explode, regex.contains.

Indicators matched (13)

FieldMatchValue
regex.containsregex\b6011[\s-]?\d{4}[\s-]?\d{4}[\s-]?\d{4}\b
regex.containsregex\b65\d{2}[\s-]?\d{4}[\s-]?\d{4}[\s-]?\d{4}\b
regex.containsregex\b64[4-9]\d[\s-]?\d{4}[\s-]?\d{4}[\s-]?\d{4}\b
regex.containsregex\b622(?:1(?:2[6-9]|[3-9]\d)|[2-8]\d{2}|9(?:[01]\d|2[0-5]))\d{2}[\s-]?\d{4}[\s-]?\d{4}\b
attachments[].file_extensionmemberpdf
attachments[].file_extensionmemberdoc
attachments[].file_extensionmemberdocx
attachments[].file_extensionmemberxls
attachments[].file_extensionmemberxlsx
attachments[].file_extensionmembertxt
attachments[].file_extensionmembercsv
attachments[].file_extensionmembereml
1 more
attachments[].file_extensionmembermsg

Stages and Predicates

Stage 1: mql_rule

and
  or
    any(attachments)
      and
        any(file.explode(attachments))
          any(file.explode(attachments).scan.strings.strings)
            or
              file.explode(attachments[])[].scan.strings.strings[] regex_match "\\b6011[\\s-]?\\d{4}[\\s-]?\\d{4}[\\s-]?\\d{4}\\b"
              file.explode(attachments[])[].scan.strings.strings[] regex_match "\\b622(?:1(?:2[6-9]|[3-9]\\d)|[2-8]\\d{2}|9(?:[01]\\d|2[0-5]))\\d{2}[\\s-]?\\d{4}[\\s-]?\\d{4}\\b"
              file.explode(attachments[])[].scan.strings.strings[] regex_match "\\b64[4-9]\\d[\\s-]?\\d{4}[\\s-]?\\d{4}[\\s-]?\\d{4}\\b"
              file.explode(attachments[])[].scan.strings.strings[] regex_match "\\b65\\d{2}[\\s-]?\\d{4}[\\s-]?\\d{4}[\\s-]?\\d{4}\\b"
        attachments.file_extension in ["csv", "doc", "docx", "eml", "msg", "pdf", "txt", "xls", "xlsx"]
    body.current_thread.text regex_match "\\b6011[\\s-]?\\d{4}[\\s-]?\\d{4}[\\s-]?\\d{4}\\b"
    body.current_thread.text regex_match "\\b622(?:1(?:2[6-9]|[3-9]\\d)|[2-8]\\d{2}|9(?:[01]\\d|2[0-5]))\\d{2}[\\s-]?\\d{4}[\\s-]?\\d{4}\\b"
    body.current_thread.text regex_match "\\b64[4-9]\\d[\\s-]?\\d{4}[\\s-]?\\d{4}[\\s-]?\\d{4}\\b"
    body.current_thread.text regex_match "\\b65\\d{2}[\\s-]?\\d{4}[\\s-]?\\d{4}[\\s-]?\\d{4}\\b"
  type.outbound eq "true"

Indicators

These rows show field, operator, and value matches.

FieldKindValuesSearch
body.current_thread.textregex_match
  • \b6011[\s-]?\d{4}[\s-]?\d{4}[\s-]?\d{4}\b
  • \b622(?:1(?:2[6-9]|[3-9]\d)|[2-8]\d{2}|9(?:[01]\d|2[0-5]))\d{2}[\s-]?\d{4}[\s-]?\d{4}\b
  • \b64[4-9]\d[\s-]?\d{4}[\s-]?\d{4}[\s-]?\d{4}\b
  • \b65\d{2}[\s-]?\d{4}[\s-]?\d{4}[\s-]?\d{4}\b
field:"body.current_thread.text" kind:regex_match
type.outboundeq
  • true transforms: boolean
field:"type.outbound" kind:eq value:"true"

DLP - PCI: Mastercard Credit Card Number

#
Severity
high
Type
rule
Source
github.com/sublime-security/sublime-rules

Detects outbound emails containing Mastercard credit card numbers in the message body or text-parseable attachments. Covers both the traditional 5-series BINs (51–55) and the expanded 2-series BINs (2221–2720) introduced in 2017. All Mastercard PANs are 16 digits, optionally separated by spaces or dashes (e.g. 5500 0000 0000 0004 or 2221-0000-0000-0000). Deploy this rule with the "Block Delivery" action to prevent PCI data exfiltration, or in passive mode to monitor and audit outbound mail containing card numbers. Regex engine: RE2 (Golang). No PCRE lookbehind — word boundaries (\b) are used instead. Attachment content is extracted via file.explode() / .scan.strings.strings.

Telemetry coverage

PlatformRecord / event type
SublimeInbound email message

Message attributes

  • attachments
  • body
  • body.current_thread
  • type

Rule body

type.outbound
and (
  // Body: Mastercard 5-series (51–55 prefix, 16 digits)
  regex.contains(body.current_thread.text,
    '\b5[1-5]\d{2}[\s-]?\d{4}[\s-]?\d{4}[\s-]?\d{4}\b'
  )

  // Body: Mastercard 2-series BINs (2221–2720, 16 digits)
  // Range breakdown: 2221-2229, 2230-2299, 2300-2699, 2700-2719, 2720
  or regex.contains(body.current_thread.text,
    '\b(?:222[1-9]|22[3-9]\d|2[3-6]\d{2}|27[01]\d|2720)[\s-]?\d{4}[\s-]?\d{4}[\s-]?\d{4}\b'
  )

  // Attachments: scan extracted strings from PDFs, Office docs, CSVs, etc.
  or any(attachments,
    .file_extension in~ ('pdf', 'doc', 'docx', 'xls', 'xlsx', 'txt', 'csv', 'eml', 'msg')
    and any(file.explode(.),
      any(.scan.strings.strings,
        regex.contains(., '\b5[1-5]\d{2}[\s-]?\d{4}[\s-]?\d{4}[\s-]?\d{4}\b')
        or regex.contains(.,
          '\b(?:222[1-9]|22[3-9]\d|2[3-6]\d{2}|27[01]\d|2720)[\s-]?\d{4}[\s-]?\d{4}[\s-]?\d{4}\b'
        )
      )
    )
  )
)

Detection logic

Scope: outbound message.

Detects outbound emails containing Mastercard credit card numbers in the message body or text-parseable attachments. Covers both the traditional 5-series BINs (51–55) and the expanded 2-series BINs (2221–2720) introduced in 2017. All Mastercard PANs are 16 digits, optionally separated by spaces or dashes (e.g. 5500 0000 0000 0004 or 2221-0000-0000-0000). Deploy this rule with the "Block Delivery" action to prevent PCI data exfiltration, or in passive mode to monitor and audit outbound mail containing card numbers. Regex engine: RE2 (Golang). No PCRE lookbehind — word boundaries (\b) are used instead. Attachment content is extracted via file.explode() / .scan.strings.strings.

  1. outbound message
  2. any of:
    • body.current_thread.text matches '\\b5[1-5]\\d{2}[\\s-]?\\d{4}[\\s-]?\\d{4}[\\s-]?\\d{4}\\b'
    • body.current_thread.text matches '\\b(?:222[1-9]|22[3-9]\\d|2[3-6]\\d{2}|27[01]\\d|2720)[\\s-]?\\d{4}[\\s-]?\\d{4}[\\s-]?\\d{4}\\b'
    • any of attachments where all hold:
      • .file_extension in ('pdf', 'doc', 'docx', 'xls', 'xlsx', 'txt', 'csv', 'eml', 'msg')
      • any of file.explode(.) where:
        • any of .scan.strings.strings where any holds:
          • . matches '\\b5[1-5]\\d{2}[\\s-]?\\d{4}[\\s-]?\\d{4}[\\s-]?\\d{4}\\b'
          • . matches '\\b(?:222[1-9]|22[3-9]\\d|2[3-6]\\d{2}|27[01]\\d|2720)[\\s-]?\\d{4}[\\s-]?\\d{4}[\\s-]?\\d{4}\\b'

Inspects: attachments[].file_extension, body.current_thread.text, type.outbound. Sensors: file.explode, regex.contains.

Indicators matched (11)

FieldMatchValue
regex.containsregex\b5[1-5]\d{2}[\s-]?\d{4}[\s-]?\d{4}[\s-]?\d{4}\b
regex.containsregex\b(?:222[1-9]|22[3-9]\d|2[3-6]\d{2}|27[01]\d|2720)[\s-]?\d{4}[\s-]?\d{4}[\s-]?\d{4}\b
attachments[].file_extensionmemberpdf
attachments[].file_extensionmemberdoc
attachments[].file_extensionmemberdocx
attachments[].file_extensionmemberxls
attachments[].file_extensionmemberxlsx
attachments[].file_extensionmembertxt
attachments[].file_extensionmembercsv
attachments[].file_extensionmembereml
attachments[].file_extensionmembermsg

Stages and Predicates

Stage 1: mql_rule

and
  or
    any(attachments)
      and
        any(file.explode(attachments))
          any(file.explode(attachments).scan.strings.strings)
            or
              file.explode(attachments[])[].scan.strings.strings[] regex_match "\\b(?:222[1-9]|22[3-9]\\d|2[3-6]\\d{2}|27[01]\\d|2720)[\\s-]?\\d{4}[\\s-]?\\d{4}[\\s-]?\\d{4}\\b"
              file.explode(attachments[])[].scan.strings.strings[] regex_match "\\b5[1-5]\\d{2}[\\s-]?\\d{4}[\\s-]?\\d{4}[\\s-]?\\d{4}\\b"
        attachments.file_extension in ["csv", "doc", "docx", "eml", "msg", "pdf", "txt", "xls", "xlsx"]
    body.current_thread.text regex_match "\\b(?:222[1-9]|22[3-9]\\d|2[3-6]\\d{2}|27[01]\\d|2720)[\\s-]?\\d{4}[\\s-]?\\d{4}[\\s-]?\\d{4}\\b"
    body.current_thread.text regex_match "\\b5[1-5]\\d{2}[\\s-]?\\d{4}[\\s-]?\\d{4}[\\s-]?\\d{4}\\b"
  type.outbound eq "true"

Indicators

These rows show field, operator, and value matches.

FieldKindValuesSearch
body.current_thread.textregex_match
  • \b(?:222[1-9]|22[3-9]\d|2[3-6]\d{2}|27[01]\d|2720)[\s-]?\d{4}[\s-]?\d{4}[\s-]?\d{4}\b
  • \b5[1-5]\d{2}[\s-]?\d{4}[\s-]?\d{4}[\s-]?\d{4}\b
field:"body.current_thread.text" kind:regex_match
type.outboundeq
  • true transforms: boolean
field:"type.outbound" kind:eq value:"true"

DLP - PCI: US Credit Card Number (Any Network)

#
Severity
high
Type
rule
Source
github.com/sublime-security/sublime-rules

Detects outbound emails containing credit card numbers from any of the four major US payment networks — Visa, Mastercard (5-series and 2-series BINs), American Express, and Discover — in the message body or text-parseable attachments. This combined rule is suitable for broad PCI DLP coverage. For granular per-network alerting or tuning, use the individual network-specific rules instead: - dlp_pci_visa_credit_card.yml - dlp_pci_mastercard_credit_card.yml - dlp_pci_amex_credit_card.yml - dlp_pci_discover_credit_card.yml Card number formats matched (spaces and dashes as separators are supported): - Visa: 4XXX XXXX XXXX XXXX (16-digit) or 4XXX XXXX XXXXX (13-digit legacy) - Mastercard: 5[1-5]XX XXXX XXXX XXXX | 2[221-720]X XXXX XXXX XXXX - Amex: 3[47]XX XXXXXX XXXXX (15-digit, standard 4-6-5 grouping) - Discover: 6011 / 65XX / 64[4-9]X / 622126-622925 XXXX XXXX XXXX Regex engine: RE2 (Golang). No PCRE lookbehind — word boundaries (\b) are used instead. Attachment content is extracted via file.explode() / .scan.strings.strings. Deploy with the "Block Delivery" action to prevent PCI data exfiltration, or run passively for monitoring and audit logging.

Telemetry coverage

PlatformRecord / event type
SublimeInbound email message

Message attributes

  • attachments
  • body
  • body.current_thread
  • type

Rule body

type.outbound
and (
  // ── Body scanning ─────────────────────────────────────────────────────────

  // Visa 16-digit
  regex.contains(body.current_thread.text, '\b4\d{3}[\s-]?\d{4}[\s-]?\d{4}[\s-]?\d{4}\b')

  // Visa 13-digit (legacy)
  or regex.contains(body.current_thread.text, '\b4\d{3}[\s-]?\d{4}[\s-]?\d{5}\b')

  // Mastercard 5-series (51–55)
  or regex.contains(body.current_thread.text, '\b5[1-5]\d{2}[\s-]?\d{4}[\s-]?\d{4}[\s-]?\d{4}\b')

  // Mastercard 2-series BINs (2221–2720)
  or regex.contains(body.current_thread.text,
    '\b(?:222[1-9]|22[3-9]\d|2[3-6]\d{2}|27[01]\d|2720)[\s-]?\d{4}[\s-]?\d{4}[\s-]?\d{4}\b'
  )

  // Amex 15-digit (34 or 37 prefix, 4-6-5 grouping)
  or regex.contains(body.current_thread.text, '\b3[47]\d{2}[\s-]?\d{6}[\s-]?\d{5}\b')

  // Discover 6011
  or regex.contains(body.current_thread.text, '\b6011[\s-]?\d{4}[\s-]?\d{4}[\s-]?\d{4}\b')

  // Discover 65xx
  or regex.contains(body.current_thread.text, '\b65\d{2}[\s-]?\d{4}[\s-]?\d{4}[\s-]?\d{4}\b')

  // Discover 644–649
  or regex.contains(body.current_thread.text, '\b64[4-9]\d[\s-]?\d{4}[\s-]?\d{4}[\s-]?\d{4}\b')

  // Discover/UnionPay co-branded 622126–622925
  or regex.contains(body.current_thread.text,
    '\b622(?:1(?:2[6-9]|[3-9]\d)|[2-8]\d{2}|9(?:[01]\d|2[0-5]))\d{2}[\s-]?\d{4}[\s-]?\d{4}\b'
  )

  // ── Attachment scanning ────────────────────────────────────────────────────

  or any(attachments,
    .file_extension in~ ('pdf', 'doc', 'docx', 'xls', 'xlsx', 'txt', 'csv', 'eml', 'msg')
    and any(file.explode(.),
      any(.scan.strings.strings,
        // Visa 16-digit
        regex.contains(., '\b4\d{3}[\s-]?\d{4}[\s-]?\d{4}[\s-]?\d{4}\b')
        // Visa 13-digit
        or regex.contains(., '\b4\d{3}[\s-]?\d{4}[\s-]?\d{5}\b')
        // Mastercard 5-series
        or regex.contains(., '\b5[1-5]\d{2}[\s-]?\d{4}[\s-]?\d{4}[\s-]?\d{4}\b')
        // Mastercard 2-series
        or regex.contains(.,
          '\b(?:222[1-9]|22[3-9]\d|2[3-6]\d{2}|27[01]\d|2720)[\s-]?\d{4}[\s-]?\d{4}[\s-]?\d{4}\b'
        )
        // Amex
        or regex.contains(., '\b3[47]\d{2}[\s-]?\d{6}[\s-]?\d{5}\b')
        // Discover 6011
        or regex.contains(., '\b6011[\s-]?\d{4}[\s-]?\d{4}[\s-]?\d{4}\b')
        // Discover 65xx
        or regex.contains(., '\b65\d{2}[\s-]?\d{4}[\s-]?\d{4}[\s-]?\d{4}\b')
        // Discover 644-649
        or regex.contains(., '\b64[4-9]\d[\s-]?\d{4}[\s-]?\d{4}[\s-]?\d{4}\b')
        // Discover/UnionPay 622126-622925
        or regex.contains(.,
          '\b622(?:1(?:2[6-9]|[3-9]\d)|[2-8]\d{2}|9(?:[01]\d|2[0-5]))\d{2}[\s-]?\d{4}[\s-]?\d{4}\b'
        )
      )
    )
  )
)

Detection logic

Scope: outbound message.

Detects outbound emails containing credit card numbers from any of the four major US payment networks — Visa, Mastercard (5-series and 2-series BINs), American Express, and Discover — in the message body or text-parseable attachments. This combined rule is suitable for broad PCI DLP coverage. For granular per-network alerting or tuning, use the individual network-specific rules instead: - dlp_pci_visa_credit_card.yml - dlp_pci_mastercard_credit_card.yml - dlp_pci_amex_credit_card.yml - dlp_pci_discover_credit_card.yml Card number formats matched (spaces and dashes as separators are supported): - Visa: 4XXX XXXX XXXX XXXX (16-digit) or 4XXX XXXX XXXXX (13-digit legacy) - Mastercard: 5[1-5]XX XXXX XXXX XXXX | 2[221-720]X XXXX XXXX XXXX - Amex: 3[47]XX XXXXXX XXXXX (15-digit, standard 4-6-5 grouping) - Discover: 6011 / 65XX / 64[4-9]X / 622126-622925 XXXX XXXX XXXX Regex engine: RE2 (Golang). No PCRE lookbehind — word boundaries (\b) are used instead. Attachment content is extracted via file.explode() / .scan.strings.strings. Deploy with the "Block Delivery" action to prevent PCI data exfiltration, or run passively for monitoring and audit logging.

  1. outbound message
  2. any of:
    • body.current_thread.text matches '\\b4\\d{3}[\\s-]?\\d{4}[\\s-]?\\d{4}[\\s-]?\\d{4}\\b'
    • body.current_thread.text matches '\\b4\\d{3}[\\s-]?\\d{4}[\\s-]?\\d{5}\\b'
    • body.current_thread.text matches '\\b5[1-5]\\d{2}[\\s-]?\\d{4}[\\s-]?\\d{4}[\\s-]?\\d{4}\\b'
    • body.current_thread.text matches '\\b(?:222[1-9]|22[3-9]\\d|2[3-6]\\d{2}|27[01]\\d|2720)[\\s-]?\\d{4}[\\s-]?\\d{4}[\\s-]?\\d{4}\\b'
    • body.current_thread.text matches '\\b3[47]\\d{2}[\\s-]?\\d{6}[\\s-]?\\d{5}\\b'
    • body.current_thread.text matches '\\b6011[\\s-]?\\d{4}[\\s-]?\\d{4}[\\s-]?\\d{4}\\b'
    • body.current_thread.text matches '\\b65\\d{2}[\\s-]?\\d{4}[\\s-]?\\d{4}[\\s-]?\\d{4}\\b'
    • body.current_thread.text matches '\\b64[4-9]\\d[\\s-]?\\d{4}[\\s-]?\\d{4}[\\s-]?\\d{4}\\b'
    • body.current_thread.text matches '\\b622(?:1(?:2[6-9]|[3-9]\\d)|[2-8]\\d{2}|9(?:[01]\\d|2[0-5]))\\d{2}[\\s-]?\\d{4}[\\s-]?\\d{4}\\b'
    • any of attachments where all hold:
      • .file_extension in ('pdf', 'doc', 'docx', 'xls', 'xlsx', 'txt', 'csv', 'eml', 'msg')
      • any of file.explode(.) where:
        • any of .scan.strings.strings where any holds:
          • . matches '\\b4\\d{3}[\\s-]?\\d{4}[\\s-]?\\d{4}[\\s-]?\\d{4}\\b'
          • . matches '\\b4\\d{3}[\\s-]?\\d{4}[\\s-]?\\d{5}\\b'
          • . matches '\\b5[1-5]\\d{2}[\\s-]?\\d{4}[\\s-]?\\d{4}[\\s-]?\\d{4}\\b'
          • . matches '\\b(?:222[1-9]|22[3-9]\\d|2[3-6]\\d{2}|27[01]\\d|2720)[\\s-]?\\d{4}[\\s-]?\\d{4}[\\s-]?\\d{4}\\b'
          • . matches '\\b3[47]\\d{2}[\\s-]?\\d{6}[\\s-]?\\d{5}\\b'
          • . matches '\\b6011[\\s-]?\\d{4}[\\s-]?\\d{4}[\\s-]?\\d{4}\\b'
          • . matches '\\b65\\d{2}[\\s-]?\\d{4}[\\s-]?\\d{4}[\\s-]?\\d{4}\\b'
          • . matches '\\b64[4-9]\\d[\\s-]?\\d{4}[\\s-]?\\d{4}[\\s-]?\\d{4}\\b'
          • . matches '\\b622(?:1(?:2[6-9]|[3-9]\\d)|[2-8]\\d{2}|9(?:[01]\\d|2[0-5]))\\d{2}[\\s-]?\\d{4}[\\s-]?\\d{4}\\b'

Inspects: attachments[].file_extension, body.current_thread.text, type.outbound. Sensors: file.explode, regex.contains.

Indicators matched (18)

FieldMatchValue
regex.containsregex\b4\d{3}[\s-]?\d{4}[\s-]?\d{4}[\s-]?\d{4}\b
regex.containsregex\b4\d{3}[\s-]?\d{4}[\s-]?\d{5}\b
regex.containsregex\b5[1-5]\d{2}[\s-]?\d{4}[\s-]?\d{4}[\s-]?\d{4}\b
regex.containsregex\b(?:222[1-9]|22[3-9]\d|2[3-6]\d{2}|27[01]\d|2720)[\s-]?\d{4}[\s-]?\d{4}[\s-]?\d{4}\b
regex.containsregex\b3[47]\d{2}[\s-]?\d{6}[\s-]?\d{5}\b
regex.containsregex\b6011[\s-]?\d{4}[\s-]?\d{4}[\s-]?\d{4}\b
regex.containsregex\b65\d{2}[\s-]?\d{4}[\s-]?\d{4}[\s-]?\d{4}\b
regex.containsregex\b64[4-9]\d[\s-]?\d{4}[\s-]?\d{4}[\s-]?\d{4}\b
regex.containsregex\b622(?:1(?:2[6-9]|[3-9]\d)|[2-8]\d{2}|9(?:[01]\d|2[0-5]))\d{2}[\s-]?\d{4}[\s-]?\d{4}\b
attachments[].file_extensionmemberpdf
attachments[].file_extensionmemberdoc
attachments[].file_extensionmemberdocx
6 more
attachments[].file_extensionmemberxls
attachments[].file_extensionmemberxlsx
attachments[].file_extensionmembertxt
attachments[].file_extensionmembercsv
attachments[].file_extensionmembereml
attachments[].file_extensionmembermsg

Stages and Predicates

Stage 1: mql_rule

and
  or
    any(attachments)
      and
        any(file.explode(attachments))
          any(file.explode(attachments).scan.strings.strings)
            or
              file.explode(attachments[])[].scan.strings.strings[] regex_match "\\b(?:222[1-9]|22[3-9]\\d|2[3-6]\\d{2}|27[01]\\d|2720)[\\s-]?\\d{4}[\\s-]?\\d{4}[\\s-]?\\d{4}\\b"
              file.explode(attachments[])[].scan.strings.strings[] regex_match "\\b3[47]\\d{2}[\\s-]?\\d{6}[\\s-]?\\d{5}\\b"
              file.explode(attachments[])[].scan.strings.strings[] regex_match "\\b4\\d{3}[\\s-]?\\d{4}[\\s-]?\\d{4}[\\s-]?\\d{4}\\b"
              file.explode(attachments[])[].scan.strings.strings[] regex_match "\\b4\\d{3}[\\s-]?\\d{4}[\\s-]?\\d{5}\\b"
              file.explode(attachments[])[].scan.strings.strings[] regex_match "\\b5[1-5]\\d{2}[\\s-]?\\d{4}[\\s-]?\\d{4}[\\s-]?\\d{4}\\b"
              file.explode(attachments[])[].scan.strings.strings[] regex_match "\\b6011[\\s-]?\\d{4}[\\s-]?\\d{4}[\\s-]?\\d{4}\\b"
              file.explode(attachments[])[].scan.strings.strings[] regex_match "\\b622(?:1(?:2[6-9]|[3-9]\\d)|[2-8]\\d{2}|9(?:[01]\\d|2[0-5]))\\d{2}[\\s-]?\\d{4}[\\s-]?\\d{4}\\b"
              file.explode(attachments[])[].scan.strings.strings[] regex_match "\\b64[4-9]\\d[\\s-]?\\d{4}[\\s-]?\\d{4}[\\s-]?\\d{4}\\b"
              file.explode(attachments[])[].scan.strings.strings[] regex_match "\\b65\\d{2}[\\s-]?\\d{4}[\\s-]?\\d{4}[\\s-]?\\d{4}\\b"
        attachments.file_extension in ["csv", "doc", "docx", "eml", "msg", "pdf", "txt", "xls", "xlsx"]
    body.current_thread.text regex_match "\\b(?:222[1-9]|22[3-9]\\d|2[3-6]\\d{2}|27[01]\\d|2720)[\\s-]?\\d{4}[\\s-]?\\d{4}[\\s-]?\\d{4}\\b"
    body.current_thread.text regex_match "\\b3[47]\\d{2}[\\s-]?\\d{6}[\\s-]?\\d{5}\\b"
    body.current_thread.text regex_match "\\b4\\d{3}[\\s-]?\\d{4}[\\s-]?\\d{4}[\\s-]?\\d{4}\\b"
    body.current_thread.text regex_match "\\b4\\d{3}[\\s-]?\\d{4}[\\s-]?\\d{5}\\b"
    body.current_thread.text regex_match "\\b5[1-5]\\d{2}[\\s-]?\\d{4}[\\s-]?\\d{4}[\\s-]?\\d{4}\\b"
    body.current_thread.text regex_match "\\b6011[\\s-]?\\d{4}[\\s-]?\\d{4}[\\s-]?\\d{4}\\b"
    body.current_thread.text regex_match "\\b622(?:1(?:2[6-9]|[3-9]\\d)|[2-8]\\d{2}|9(?:[01]\\d|2[0-5]))\\d{2}[\\s-]?\\d{4}[\\s-]?\\d{4}\\b"
    body.current_thread.text regex_match "\\b64[4-9]\\d[\\s-]?\\d{4}[\\s-]?\\d{4}[\\s-]?\\d{4}\\b"
    body.current_thread.text regex_match "\\b65\\d{2}[\\s-]?\\d{4}[\\s-]?\\d{4}[\\s-]?\\d{4}\\b"
  type.outbound eq "true"

Indicators

These rows show field, operator, and value matches.

FieldKindValuesSearch
body.current_thread.textregex_match
  • \b(?:222[1-9]|22[3-9]\d|2[3-6]\d{2}|27[01]\d|2720)[\s-]?\d{4}[\s-]?\d{4}[\s-]?\d{4}\b
  • \b3[47]\d{2}[\s-]?\d{6}[\s-]?\d{5}\b
  • \b4\d{3}[\s-]?\d{4}[\s-]?\d{4}[\s-]?\d{4}\b
  • \b4\d{3}[\s-]?\d{4}[\s-]?\d{5}\b
  • \b5[1-5]\d{2}[\s-]?\d{4}[\s-]?\d{4}[\s-]?\d{4}\b
  • \b6011[\s-]?\d{4}[\s-]?\d{4}[\s-]?\d{4}\b
  • \b622(?:1(?:2[6-9]|[3-9]\d)|[2-8]\d{2}|9(?:[01]\d|2[0-5]))\d{2}[\s-]?\d{4}[\s-]?\d{4}\b
  • \b64[4-9]\d[\s-]?\d{4}[\s-]?\d{4}[\s-]?\d{4}\b
  • \b65\d{2}[\s-]?\d{4}[\s-]?\d{4}[\s-]?\d{4}\b
field:"body.current_thread.text" kind:regex_match
type.outboundeq
  • true transforms: boolean
field:"type.outbound" kind:eq value:"true"

DLP - PCI: Visa Credit Card Number

#
Severity
high
Type
rule
Source
github.com/sublime-security/sublime-rules

Detects outbound emails containing Visa credit card numbers in the message body or text-parseable attachments. Visa card numbers begin with 4 and are 13 or 16 digits long, optionally separated by spaces or dashes (e.g. 4111 1111 1111 1111 or 4111-1111-1111-1111). Deploy this rule with the "Block Delivery" action to prevent PCI data exfiltration, or in passive mode to monitor and audit outbound mail containing card numbers. Regex engine: RE2 (Golang). No PCRE lookbehind — word boundaries (\b) are used instead. Attachment content is extracted via file.explode() / .scan.strings.strings.

Telemetry coverage

PlatformRecord / event type
SublimeInbound email message

Message attributes

  • attachments
  • body
  • body.current_thread
  • type

Rule body

type.outbound
and (
  // Body: Visa 16-digit (4XXX XXXX XXXX XXXX or 4XXX-XXXX-XXXX-XXXX)
  regex.contains(body.current_thread.text,
    '\b4\d{3}[\s-]?\d{4}[\s-]?\d{4}[\s-]?\d{4}\b'
  )

  // Body: Visa 13-digit legacy (4XXX XXXX XXXXX)
  or regex.contains(body.current_thread.text,
    '\b4\d{3}[\s-]?\d{4}[\s-]?\d{5}\b'
  )

  // Attachments: scan extracted strings from PDFs, Office docs, CSVs, etc.
  or any(attachments,
    .file_extension in~ ('pdf', 'doc', 'docx', 'xls', 'xlsx', 'txt', 'csv', 'eml', 'msg')
    and any(file.explode(.),
      any(.scan.strings.strings,
        regex.contains(., '\b4\d{3}[\s-]?\d{4}[\s-]?\d{4}[\s-]?\d{4}\b')
        or regex.contains(., '\b4\d{3}[\s-]?\d{4}[\s-]?\d{5}\b')
      )
    )
  )
)

Detection logic

Scope: outbound message.

Detects outbound emails containing Visa credit card numbers in the message body or text-parseable attachments. Visa card numbers begin with 4 and are 13 or 16 digits long, optionally separated by spaces or dashes (e.g. 4111 1111 1111 1111 or 4111-1111-1111-1111). Deploy this rule with the "Block Delivery" action to prevent PCI data exfiltration, or in passive mode to monitor and audit outbound mail containing card numbers. Regex engine: RE2 (Golang). No PCRE lookbehind — word boundaries (\b) are used instead. Attachment content is extracted via file.explode() / .scan.strings.strings.

  1. outbound message
  2. any of:
    • body.current_thread.text matches '\\b4\\d{3}[\\s-]?\\d{4}[\\s-]?\\d{4}[\\s-]?\\d{4}\\b'
    • body.current_thread.text matches '\\b4\\d{3}[\\s-]?\\d{4}[\\s-]?\\d{5}\\b'
    • any of attachments where all hold:
      • .file_extension in ('pdf', 'doc', 'docx', 'xls', 'xlsx', 'txt', 'csv', 'eml', 'msg')
      • any of file.explode(.) where:
        • any of .scan.strings.strings where any holds:
          • . matches '\\b4\\d{3}[\\s-]?\\d{4}[\\s-]?\\d{4}[\\s-]?\\d{4}\\b'
          • . matches '\\b4\\d{3}[\\s-]?\\d{4}[\\s-]?\\d{5}\\b'

Inspects: attachments[].file_extension, body.current_thread.text, type.outbound. Sensors: file.explode, regex.contains.

Indicators matched (11)

FieldMatchValue
regex.containsregex\b4\d{3}[\s-]?\d{4}[\s-]?\d{4}[\s-]?\d{4}\b
regex.containsregex\b4\d{3}[\s-]?\d{4}[\s-]?\d{5}\b
attachments[].file_extensionmemberpdf
attachments[].file_extensionmemberdoc
attachments[].file_extensionmemberdocx
attachments[].file_extensionmemberxls
attachments[].file_extensionmemberxlsx
attachments[].file_extensionmembertxt
attachments[].file_extensionmembercsv
attachments[].file_extensionmembereml
attachments[].file_extensionmembermsg

Stages and Predicates

Stage 1: mql_rule

and
  or
    any(attachments)
      and
        any(file.explode(attachments))
          any(file.explode(attachments).scan.strings.strings)
            or
              file.explode(attachments[])[].scan.strings.strings[] regex_match "\\b4\\d{3}[\\s-]?\\d{4}[\\s-]?\\d{4}[\\s-]?\\d{4}\\b"
              file.explode(attachments[])[].scan.strings.strings[] regex_match "\\b4\\d{3}[\\s-]?\\d{4}[\\s-]?\\d{5}\\b"
        attachments.file_extension in ["csv", "doc", "docx", "eml", "msg", "pdf", "txt", "xls", "xlsx"]
    body.current_thread.text regex_match "\\b4\\d{3}[\\s-]?\\d{4}[\\s-]?\\d{4}[\\s-]?\\d{4}\\b"
    body.current_thread.text regex_match "\\b4\\d{3}[\\s-]?\\d{4}[\\s-]?\\d{5}\\b"
  type.outbound eq "true"

Indicators

These rows show field, operator, and value matches.

FieldKindValuesSearch
body.current_thread.textregex_match
  • \b4\d{3}[\s-]?\d{4}[\s-]?\d{4}[\s-]?\d{4}\b
  • \b4\d{3}[\s-]?\d{4}[\s-]?\d{5}\b
field:"body.current_thread.text" kind:regex_match
type.outboundeq
  • true transforms: boolean
field:"type.outbound" kind:eq value:"true"

DLP: Argentina DNI Number

#
Severity
high
Type
dlp
Source
github.com/sublime-security/sublime-rules

Detects messages containing Argentine National Identity Card (DNI) numbers.

Telemetry coverage

PlatformRecord / event type
SublimeInbound email message

Message attributes

  • body
  • body.current_thread
  • sender.email
  • subject
  • type

Rule body

type.outbound
and any([body.current_thread.text, subject.subject],
        // DNI: 7-8 digits
        regex.contains(., '\b\d{7,8}\b')
)
and any([body.current_thread.text, subject.subject],
        regex.icontains(., 'DNI|documento\s+nacional|identity\s+card')
)
and (
  strings.icontains(sender.email.domain.tld, "ar")
  or strings.icontains(body.current_thread.text, "argentina")
)

Detection logic

Scope: outbound message.

Detects messages containing Argentine National Identity Card (DNI) numbers.

  1. outbound message
  2. any of [body.current_thread.text, subject.subject] where:
    • . matches '\\b\\d{7,8}\\b'
  3. any of [body.current_thread.text, subject.subject] where:
    • . matches 'DNI|documento\\s+nacional|identity\\s+card'
  4. any of:
    • sender.email.domain.tld contains 'ar'
    • body.current_thread.text contains 'argentina'

Inspects: body.current_thread.text, sender.email.domain.tld, subject.subject, type.outbound. Sensors: regex.contains, regex.icontains, strings.icontains.

Indicators matched (4)

FieldMatchValue
regex.containsregex\b\d{7,8}\b
regex.icontainsregexDNI|documento\s+nacional|identity\s+card
strings.icontainssubstringar
strings.icontainssubstringargentina

Stages and Predicates

Stage 1: mql_rule

and
  any([body.current_thread.text, subject.subject])
    [body.current_thread.text, subject.subject] regex_match "DNI|documento\\s+nacional|identity\\s+card"
  any([body.current_thread.text, subject.subject])
    [body.current_thread.text, subject.subject] regex_match "\\b\\d{7,8}\\b"
  or
    body.current_thread.text contains "argentina"
    sender.email.domain.tld contains "ar"
  type.outbound eq "true"

Indicators

These rows show field, operator, and value matches.

DLP: Australia Bank Account Number

#
Severity
medium
Type
dlp
Source
github.com/sublime-security/sublime-rules

Detects messages containing Australian bank account numbers with BSB codes.

Telemetry coverage

PlatformRecord / event type
SublimeInbound email message

Message attributes

  • body
  • body.current_thread
  • subject
  • type

Rule body

type.outbound
and any([body.current_thread.text, subject.subject],
        // BSB: 6 digits (XXX-XXX format)
        // Account: 6-10 digits
        regex.contains(., '\b\d{3}-\d{3}\b')
)
and any([body.current_thread.text, subject.subject],
        regex.icontains(., 'BSB|bank\s+account|account\s+number')
)

Detection logic

Scope: outbound message.

Detects messages containing Australian bank account numbers with BSB codes.

  1. outbound message
  2. any of [body.current_thread.text, subject.subject] where:
    • . matches '\\b\\d{3}-\\d{3}\\b'
  3. any of [body.current_thread.text, subject.subject] where:
    • . matches 'BSB|bank\\s+account|account\\s+number'

Inspects: body.current_thread.text, subject.subject, type.outbound. Sensors: regex.contains, regex.icontains.

Indicators matched (2)

FieldMatchValue
regex.containsregex\b\d{3}-\d{3}\b
regex.icontainsregexBSB|bank\s+account|account\s+number

Stages and Predicates

Stage 1: mql_rule

and
  any([body.current_thread.text, subject.subject])
    [body.current_thread.text, subject.subject] regex_match "BSB|bank\\s+account|account\\s+number"
  any([body.current_thread.text, subject.subject])
    [body.current_thread.text, subject.subject] regex_match "\\b\\d{3}-\\d{3}\\b"
  type.outbound eq "true"

Indicators

These rows show field, operator, and value matches.

FieldKindValuesSearch
type.outboundeq
  • true transforms: boolean
field:"type.outbound" kind:eq value:"true"

DLP: Australia Credit Card Number

#
Severity
high
Type
dlp
Source
github.com/sublime-security/sublime-rules

Detects messages containing credit card numbers.

Telemetry coverage

PlatformRecord / event type
SublimeInbound email message

Message attributes

  • attachments
  • type

Rule body

type.outbound
and any(attachments,
        (
          .file_extension in~ $file_extensions_common_archives
          or .file_extension in~ ('.csv', '.txt', '.xlsx', '.xls')
        )
        and any(file.explode(.),
                // Credit card: 13-19 digits with optional spaces/hyphens
                regex.contains(.scan.ocr.raw, '\b(?:\d{4}[\s\-]?){3}\d{1,7}\b')
        )
)

Detection logic

Scope: outbound message.

Detects messages containing credit card numbers.

  1. outbound message
  2. any of attachments where all hold:
    • any of:
      • .file_extension in $file_extensions_common_archives
      • .file_extension in ('.csv', '.txt', '.xlsx', '.xls')
    • any of file.explode(.) where:
      • .scan.ocr.raw matches '\\b(?:\\d{4}[\\s\\-]?){3}\\d{1,7}\\b'

Inspects: attachments[].file_extension, type.outbound. Sensors: file.explode, regex.contains. Reference lists: $file_extensions_common_archives.

Indicators matched (5)

FieldMatchValue
attachments[].file_extensionmember.csv
attachments[].file_extensionmember.txt
attachments[].file_extensionmember.xlsx
attachments[].file_extensionmember.xls
regex.containsregex\b(?:\d{4}[\s\-]?){3}\d{1,7}\b

Stages and Predicates

Stage 1: mql_rule

and
  any(attachments)
    and
      or
        attachments.file_extension in [".csv", ".txt", ".xls", ".xlsx"]
         macro "attachments[].file_extension in file_extensions_common_archives"
      any(file.explode(attachments))
        file.explode(attachments).scan.ocr.raw regex_match "\\b(?:\\d{4}[\\s\\-]?){3}\\d{1,7}\\b"
  type.outbound eq "true"

Indicators

These rows show field, operator, and value matches.

FieldKindValuesSearch
type.outboundeq
  • true transforms: boolean
field:"type.outbound" kind:eq value:"true"

DLP: Australia Driver's License Number

#
Severity
medium
Type
dlp
Source
github.com/sublime-security/sublime-rules

Detects messages containing Australian driver's license numbers.

Telemetry coverage

PlatformRecord / event type
SublimeInbound email message

Message attributes

  • body
  • body.current_thread
  • subject
  • type

Rule body

type.outbound
and any([body.current_thread.text, subject.subject],
        // Driver's license varies by state, generally 6-10 alphanumeric
        regex.contains(., '\b[A-Z0-9]{6,10}\b')
)
and any([body.current_thread.text, subject.subject],
        regex.icontains(., 'driver.?s?\s+licen[cs]e|DL\s+number')
)

Detection logic

Scope: outbound message.

Detects messages containing Australian driver's license numbers.

  1. outbound message
  2. any of [body.current_thread.text, subject.subject] where:
    • . matches '\\b[A-Z0-9]{6,10}\\b'
  3. any of [body.current_thread.text, subject.subject] where:
    • . matches 'driver.?s?\\s+licen[cs]e|DL\\s+number'

Inspects: body.current_thread.text, subject.subject, type.outbound. Sensors: regex.contains, regex.icontains.

Indicators matched (2)

FieldMatchValue
regex.containsregex\b[A-Z0-9]{6,10}\b
regex.icontainsregexdriver.?s?\s+licen[cs]e|DL\s+number

Stages and Predicates

Stage 1: mql_rule

and
  any([body.current_thread.text, subject.subject])
    [body.current_thread.text, subject.subject] regex_match "\\b[A-Z0-9]{6,10}\\b"
  any([body.current_thread.text, subject.subject])
    [body.current_thread.text, subject.subject] regex_match "driver.?s?\\s+licen[cs]e|DL\\s+number"
  type.outbound eq "true"

Indicators

These rows show field, operator, and value matches.

FieldKindValuesSearch
type.outboundeq
  • true transforms: boolean
field:"type.outbound" kind:eq value:"true"

DLP: Australia Medical Account Number

#
Severity
high
Type
dlp
Source
github.com/sublime-security/sublime-rules

Detects messages containing Australian Medicare numbers.

Telemetry coverage

PlatformRecord / event type
SublimeInbound email message

Message attributes

  • body
  • body.current_thread
  • subject
  • type

Rule body

type.outbound
and any([body.current_thread.text, subject.subject],
        // Medicare: 10 digits (XXXX XXXXX X format)
        regex.contains(., '\b\d{4}\s?\d{5}\s?\d\b')
)
and any([body.current_thread.text, subject.subject],
        regex.icontains(., 'medicare|medical\s+account')
)

Detection logic

Scope: outbound message.

Detects messages containing Australian Medicare numbers.

  1. outbound message
  2. any of [body.current_thread.text, subject.subject] where:
    • . matches '\\b\\d{4}\\s?\\d{5}\\s?\\d\\b'
  3. any of [body.current_thread.text, subject.subject] where:
    • . matches 'medicare|medical\\s+account'

Inspects: body.current_thread.text, subject.subject, type.outbound. Sensors: regex.contains, regex.icontains.

Indicators matched (2)

FieldMatchValue
regex.containsregex\b\d{4}\s?\d{5}\s?\d\b
regex.icontainsregexmedicare|medical\s+account

Stages and Predicates

Stage 1: mql_rule

and
  any([body.current_thread.text, subject.subject])
    [body.current_thread.text, subject.subject] regex_match "\\b\\d{4}\\s?\\d{5}\\s?\\d\\b"
  any([body.current_thread.text, subject.subject])
    [body.current_thread.text, subject.subject] regex_match "medicare|medical\\s+account"
  type.outbound eq "true"

Indicators

These rows show field, operator, and value matches.

FieldKindValuesSearch
type.outboundeq
  • true transforms: boolean
field:"type.outbound" kind:eq value:"true"

DLP: Australia Passport Number

#
Severity
high
Type
dlp
Source
github.com/sublime-security/sublime-rules

Detects messages containing Australian passport numbers.

Telemetry coverage

PlatformRecord / event type
SublimeInbound email message

Message attributes

  • body
  • body.current_thread
  • sender.email
  • subject
  • type

Rule body

type.outbound
and any([body.current_thread.text, subject.subject],
        // Australian passport: 1 letter + 7 digits
        regex.contains(., '\b[A-Z]\d{7}\b')
)
and any([body.current_thread.text, subject.subject],
        regex.icontains(., 'passport|travel\s+document')
)
and (
  strings.icontains(sender.email.domain.tld, "au")
  or strings.icontains(body.current_thread.text, "australia")
)

Detection logic

Scope: outbound message.

Detects messages containing Australian passport numbers.

  1. outbound message
  2. any of [body.current_thread.text, subject.subject] where:
    • . matches '\\b[A-Z]\\d{7}\\b'
  3. any of [body.current_thread.text, subject.subject] where:
    • . matches 'passport|travel\\s+document'
  4. any of:
    • sender.email.domain.tld contains 'au'
    • body.current_thread.text contains 'australia'

Inspects: body.current_thread.text, sender.email.domain.tld, subject.subject, type.outbound. Sensors: regex.contains, regex.icontains, strings.icontains.

Indicators matched (4)

FieldMatchValue
regex.containsregex\b[A-Z]\d{7}\b
regex.icontainsregexpassport|travel\s+document
strings.icontainssubstringau
strings.icontainssubstringaustralia

Stages and Predicates

Stage 1: mql_rule

and
  any([body.current_thread.text, subject.subject])
    [body.current_thread.text, subject.subject] regex_match "\\b[A-Z]\\d{7}\\b"
  any([body.current_thread.text, subject.subject])
    [body.current_thread.text, subject.subject] regex_match "passport|travel\\s+document"
  or
    body.current_thread.text contains "australia"
    sender.email.domain.tld contains "au"
  type.outbound eq "true"

Indicators

These rows show field, operator, and value matches.

DLP: Australia SWIFT Code

#
Severity
medium
Type
dlp
Source
github.com/sublime-security/sublime-rules

Detects messages containing Australian SWIFT/BIC codes for financial institutions.

Telemetry coverage

PlatformRecord / event type
SublimeInbound email message

Message attributes

  • body
  • body.current_thread
  • subject
  • type

Rule body

type.outbound
and any(ml.logo_detect(beta.message_screenshot()).brands, strings.ilike(.name, "*bank*", "*financial*"))
and any([body.current_thread.text, subject.subject],
        // SWIFT code: 4 letters (bank) + 2 letters (AU) + 2 chars (location) + optional 3 chars (branch)
        regex.contains(., '\b[A-Z]{4}AU[A-Z0-9]{2}(?:[A-Z0-9]{3})?\b')
)

Detection logic

Scope: outbound message.

Detects messages containing Australian SWIFT/BIC codes for financial institutions.

  1. outbound message
  2. any of ml.logo_detect(beta.message_screenshot()).brands where:
    • .name matches any of 2 patterns
      • *bank*
      • *financial*
  3. any of [body.current_thread.text, subject.subject] where:
    • . matches '\\b[A-Z]{4}AU[A-Z0-9]{2}(?:[A-Z0-9]{3})?\\b'

Inspects: body.current_thread.text, subject.subject, type.outbound. Sensors: beta.message_screenshot, ml.logo_detect, regex.contains, strings.ilike.

Indicators matched (3)

FieldMatchValue
strings.ilikesubstring*bank*
strings.ilikesubstring*financial*
regex.containsregex\b[A-Z]{4}AU[A-Z0-9]{2}(?:[A-Z0-9]{3})?\b

Stages and Predicates

Stage 1: mql_rule

and
  any(ml.logo_detect(beta.message_screenshot()).brands)
    or
      ml.logo_detect(beta.message_screenshot()).brands.name match "bank"
      ml.logo_detect(beta.message_screenshot()).brands.name match "financial"
  any([body.current_thread.text, subject.subject])
    [body.current_thread.text, subject.subject] regex_match "\\b[A-Z]{4}AU[A-Z0-9]{2}(?:[A-Z0-9]{3})?\\b"
  type.outbound eq "true"

Indicators

These rows show field, operator, and value matches.

FieldKindValuesSearch
type.outboundeq
  • true transforms: boolean
field:"type.outbound" kind:eq value:"true"

DLP: Australia Tax File Number

#
Severity
medium
Type
dlp
Source
github.com/sublime-security/sublime-rules

Detects messages containing Australian Tax File Numbers (TFN).

Telemetry coverage

PlatformRecord / event type
SublimeInbound email message

Message attributes

  • body
  • body.current_thread
  • subject
  • type

Rule body

type.outbound
and any([body.current_thread.text, subject.subject],
        // TFN: 8 or 9 digits, sometimes with spaces or hyphens
        regex.contains(., '\b\d{3}[\s\-]?\d{3}[\s\-]?\d{3}\b')
)
and any([body.current_thread.text, subject.subject],
        regex.icontains(., 'tax\s+file\s+number|TFN')
)

Detection logic

Scope: outbound message.

Detects messages containing Australian Tax File Numbers (TFN).

  1. outbound message
  2. any of [body.current_thread.text, subject.subject] where:
    • . matches '\\b\\d{3}[\\s\\-]?\\d{3}[\\s\\-]?\\d{3}\\b'
  3. any of [body.current_thread.text, subject.subject] where:
    • . matches 'tax\\s+file\\s+number|TFN'

Inspects: body.current_thread.text, subject.subject, type.outbound. Sensors: regex.contains, regex.icontains.

Indicators matched (2)

FieldMatchValue
regex.containsregex\b\d{3}[\s\-]?\d{3}[\s\-]?\d{3}\b
regex.icontainsregextax\s+file\s+number|TFN

Stages and Predicates

Stage 1: mql_rule

and
  any([body.current_thread.text, subject.subject])
    [body.current_thread.text, subject.subject] regex_match "\\b\\d{3}[\\s\\-]?\\d{3}[\\s\\-]?\\d{3}\\b"
  any([body.current_thread.text, subject.subject])
    [body.current_thread.text, subject.subject] regex_match "tax\\s+file\\s+number|TFN"
  type.outbound eq "true"

Indicators

These rows show field, operator, and value matches.

FieldKindValuesSearch
type.outboundeq
  • true transforms: boolean
field:"type.outbound" kind:eq value:"true"

DLP: Austria Identity Card

#
Severity
high
Type
dlp
Source
github.com/sublime-security/sublime-rules

Detects messages containing Austrian Identity Card numbers (Personalausweis).

Telemetry coverage

PlatformRecord / event type
SublimeInbound email message

Message attributes

  • body
  • body.current_thread
  • sender.email
  • subject
  • type

Rule body

type.outbound
and any([body.current_thread.text, subject.subject],
        // Austrian ID card: 7-8 digits
        regex.contains(., '\b\d{7,8}\b')
)
and any([body.current_thread.text, subject.subject],
        regex.icontains(., 'personalausweis|identity\s+card|Ausweis')
)
and (
  strings.icontains(sender.email.domain.tld, "at")
  or strings.icontains(body.current_thread.text, "austria")
)

Detection logic

Scope: outbound message.

Detects messages containing Austrian Identity Card numbers (Personalausweis).

  1. outbound message
  2. any of [body.current_thread.text, subject.subject] where:
    • . matches '\\b\\d{7,8}\\b'
  3. any of [body.current_thread.text, subject.subject] where:
    • . matches 'personalausweis|identity\\s+card|Ausweis'
  4. any of:
    • sender.email.domain.tld contains 'at'
    • body.current_thread.text contains 'austria'

Inspects: body.current_thread.text, sender.email.domain.tld, subject.subject, type.outbound. Sensors: regex.contains, regex.icontains, strings.icontains.

Indicators matched (4)

FieldMatchValue
regex.containsregex\b\d{7,8}\b
regex.icontainsregexpersonalausweis|identity\s+card|Ausweis
strings.icontainssubstringat
strings.icontainssubstringaustria

Stages and Predicates

Stage 1: mql_rule

and
  any([body.current_thread.text, subject.subject])
    [body.current_thread.text, subject.subject] regex_match "\\b\\d{7,8}\\b"
  any([body.current_thread.text, subject.subject])
    [body.current_thread.text, subject.subject] regex_match "personalausweis|identity\\s+card|Ausweis"
  or
    body.current_thread.text contains "austria"
    sender.email.domain.tld contains "at"
  type.outbound eq "true"

Indicators

These rows show field, operator, and value matches.

DLP: Austria Social Security Number

#
Severity
high
Type
dlp
Source
github.com/sublime-security/sublime-rules

Detects messages containing Austrian Social Security Numbers (Sozialversicherungsnummer).

Telemetry coverage

PlatformRecord / event type
SublimeInbound email message

Message attributes

  • body
  • body.current_thread
  • subject
  • type

Rule body

type.outbound
and any([body.current_thread.text, subject.subject],
        // Austrian SSN: 10 digits (XXXX XXXXXX format)
        regex.contains(., '\b\d{4}[\s]?\d{6}\b')
)
and any([body.current_thread.text, subject.subject],
        regex.icontains(., 'sozialversicherung|social\s+security|SVNR')
)

Detection logic

Scope: outbound message.

Detects messages containing Austrian Social Security Numbers (Sozialversicherungsnummer).

  1. outbound message
  2. any of [body.current_thread.text, subject.subject] where:
    • . matches '\\b\\d{4}[\\s]?\\d{6}\\b'
  3. any of [body.current_thread.text, subject.subject] where:
    • . matches 'sozialversicherung|social\\s+security|SVNR'

Inspects: body.current_thread.text, subject.subject, type.outbound. Sensors: regex.contains, regex.icontains.

Indicators matched (2)

FieldMatchValue
regex.containsregex\b\d{4}[\s]?\d{6}\b
regex.icontainsregexsozialversicherung|social\s+security|SVNR

Stages and Predicates

Stage 1: mql_rule

and
  any([body.current_thread.text, subject.subject])
    [body.current_thread.text, subject.subject] regex_match "\\b\\d{4}[\\s]?\\d{6}\\b"
  any([body.current_thread.text, subject.subject])
    [body.current_thread.text, subject.subject] regex_match "sozialversicherung|social\\s+security|SVNR"
  type.outbound eq "true"

Indicators

These rows show field, operator, and value matches.

FieldKindValuesSearch
type.outboundeq
  • true transforms: boolean
field:"type.outbound" kind:eq value:"true"

DLP: Austria Tax Identification Number

#
Severity
medium
Type
dlp
Source
github.com/sublime-security/sublime-rules

Detects messages containing Austrian Tax Identification Numbers (Steuernummer).

Telemetry coverage

PlatformRecord / event type
SublimeInbound email message

Message attributes

  • body
  • body.current_thread
  • subject
  • type

Rule body

type.outbound
and any([body.current_thread.text, subject.subject],
        // Austrian Tax ID: 9 digits
        regex.contains(., '\b\d{2}[\s\-]?\d{3}[\s\-]?\d{4}\b')
)
and any([body.current_thread.text, subject.subject],
        regex.icontains(., 'steuernummer|tax\s+ID|FinanzOnline')
)

Detection logic

Scope: outbound message.

Detects messages containing Austrian Tax Identification Numbers (Steuernummer).

  1. outbound message
  2. any of [body.current_thread.text, subject.subject] where:
    • . matches '\\b\\d{2}[\\s\\-]?\\d{3}[\\s\\-]?\\d{4}\\b'
  3. any of [body.current_thread.text, subject.subject] where:
    • . matches 'steuernummer|tax\\s+ID|FinanzOnline'

Inspects: body.current_thread.text, subject.subject, type.outbound. Sensors: regex.contains, regex.icontains.

Indicators matched (2)

FieldMatchValue
regex.containsregex\b\d{2}[\s\-]?\d{3}[\s\-]?\d{4}\b
regex.icontainsregexsteuernummer|tax\s+ID|FinanzOnline

Stages and Predicates

Stage 1: mql_rule

and
  any([body.current_thread.text, subject.subject])
    [body.current_thread.text, subject.subject] regex_match "\\b\\d{2}[\\s\\-]?\\d{3}[\\s\\-]?\\d{4}\\b"
  any([body.current_thread.text, subject.subject])
    [body.current_thread.text, subject.subject] regex_match "steuernummer|tax\\s+ID|FinanzOnline"
  type.outbound eq "true"

Indicators

These rows show field, operator, and value matches.

FieldKindValuesSearch
type.outboundeq
  • true transforms: boolean
field:"type.outbound" kind:eq value:"true"

DLP: AWS Credentials

#
Severity
high
Type
dlp
Source
github.com/sublime-security/sublime-rules

Detects messages containing AWS access keys and secret keys.

Telemetry coverage

PlatformRecord / event type
SublimeInbound email message

Message attributes

  • body
  • body.current_thread
  • subject
  • type

Rule body

type.outbound
and any([body.current_thread.text, subject.subject],
        // AWS Access Key ID: AKIA followed by 16 alphanumeric characters
        regex.contains(., '\bAKIA[0-9A-Z]{16}\b')
)
and (
  any([body.current_thread.text, subject.subject],
          regex.icontains(., 'aws|amazon|access\s+key|secret\s+key')
  )
  or any([body.current_thread.text, subject.subject],
          // AWS Secret Access Key: 40-character base64 string
          regex.contains(., '\b[A-Za-z0-9/+=]{40}\b')
  )
)

Detection logic

Scope: outbound message.

Detects messages containing AWS access keys and secret keys.

  1. outbound message
  2. any of [body.current_thread.text, subject.subject] where:
    • . matches '\\bAKIA[0-9A-Z]{16}\\b'
  3. any of:
    • any of [body.current_thread.text, subject.subject] where:
      • . matches 'aws|amazon|access\\s+key|secret\\s+key'
    • any of [body.current_thread.text, subject.subject] where:
      • . matches '\\b[A-Za-z0-9/+=]{40}\\b'

Inspects: body.current_thread.text, subject.subject, type.outbound. Sensors: regex.contains, regex.icontains.

Indicators matched (3)

FieldMatchValue
regex.containsregex\bAKIA[0-9A-Z]{16}\b
regex.icontainsregexaws|amazon|access\s+key|secret\s+key
regex.containsregex\b[A-Za-z0-9/+=]{40}\b

Stages and Predicates

Stage 1: mql_rule

and
  or
    any([body.current_thread.text, subject.subject])
      [body.current_thread.text, subject.subject] regex_match "\\b[A-Za-z0-9/+=]{40}\\b"
    any([body.current_thread.text, subject.subject])
      [body.current_thread.text, subject.subject] regex_match "aws|amazon|access\\s+key|secret\\s+key"
  any([body.current_thread.text, subject.subject])
    [body.current_thread.text, subject.subject] regex_match "\\bAKIA[0-9A-Z]{16}\\b"
  type.outbound eq "true"

Indicators

These rows show field, operator, and value matches.

FieldKindValuesSearch
type.outboundeq
  • true transforms: boolean
field:"type.outbound" kind:eq value:"true"

DLP: Azure Authentication Token

#
Severity
high
Type
dlp
Source
github.com/sublime-security/sublime-rules

Detects messages containing Azure authentication tokens and credentials.

Telemetry coverage

PlatformRecord / event type
SublimeInbound email message

Message attributes

  • body
  • body.current_thread
  • subject
  • type

Rule body

type.outbound
and any([body.current_thread.text, subject.subject],
        regex.icontains(., 'azure|microsoft\s+cloud')
)
and any([body.current_thread.text, subject.subject],
        regex.icontains(., 'auth|token|credential|secret|key')
)
and any([body.current_thread.text, subject.subject],
        // Long alphanumeric tokens
        regex.contains(., '\b[A-Za-z0-9_-]{40,}\b')
)

Detection logic

Scope: outbound message.

Detects messages containing Azure authentication tokens and credentials.

  1. outbound message
  2. any of [body.current_thread.text, subject.subject] where:
    • . matches 'azure|microsoft\\s+cloud'
  3. any of [body.current_thread.text, subject.subject] where:
    • . matches 'auth|token|credential|secret|key'
  4. any of [body.current_thread.text, subject.subject] where:
    • . matches '\\b[A-Za-z0-9_-]{40,}\\b'

Inspects: body.current_thread.text, subject.subject, type.outbound. Sensors: regex.contains, regex.icontains.

Indicators matched (3)

FieldMatchValue
regex.icontainsregexazure|microsoft\s+cloud
regex.icontainsregexauth|token|credential|secret|key
regex.containsregex\b[A-Za-z0-9_-]{40,}\b

Stages and Predicates

Stage 1: mql_rule

and
  any([body.current_thread.text, subject.subject])
    [body.current_thread.text, subject.subject] regex_match "\\b[A-Za-z0-9_-]{40,}\\b"
  any([body.current_thread.text, subject.subject])
    [body.current_thread.text, subject.subject] regex_match "auth|token|credential|secret|key"
  any([body.current_thread.text, subject.subject])
    [body.current_thread.text, subject.subject] regex_match "azure|microsoft\\s+cloud"
  type.outbound eq "true"

Indicators

These rows show field, operator, and value matches.

FieldKindValuesSearch
type.outboundeq
  • true transforms: boolean
field:"type.outbound" kind:eq value:"true"

DLP: Basic Authentication Header

#
Severity
medium
Type
dlp
Source
github.com/sublime-security/sublime-rules

Detects messages containing HTTP Basic Authentication headers.

Telemetry coverage

PlatformRecord / event type
SublimeInbound email message

Message attributes

  • body
  • body.current_thread
  • subject
  • type

Rule body

type.outbound
and any([body.current_thread.text, subject.subject],
        // Basic auth format: "Basic " followed by base64
        regex.contains(., '\bBasic\s+[A-Za-z0-9+/]+=*\b')
)

Detection logic

Scope: outbound message.

Detects messages containing HTTP Basic Authentication headers.

  1. outbound message
  2. any of [body.current_thread.text, subject.subject] where:
    • . matches '\\bBasic\\s+[A-Za-z0-9+/]+=*\\b'

Inspects: body.current_thread.text, subject.subject, type.outbound. Sensors: regex.contains.

Indicators matched (1)

FieldMatchValue
regex.containsregex\bBasic\s+[A-Za-z0-9+/]+=*\b

Stages and Predicates

Stage 1: mql_rule

and
  any([body.current_thread.text, subject.subject])
    [body.current_thread.text, subject.subject] regex_match "\\bBasic\\s+[A-Za-z0-9+/]+=*\\b"
  type.outbound eq "true"

Indicators

These rows show field, operator, and value matches.

FieldKindValuesSearch
type.outboundeq
  • true transforms: boolean
field:"type.outbound" kind:eq value:"true"

DLP: Belgium National Number

#
Severity
high
Type
dlp
Source
github.com/sublime-security/sublime-rules

Detects messages containing Belgian National Numbers (Rijksregisternummer).

Telemetry coverage

PlatformRecord / event type
SublimeInbound email message

Message attributes

  • body
  • body.current_thread
  • subject
  • type

Rule body

type.outbound
and any([body.current_thread.text, subject.subject],
        // Belgian National Number: YY.MM.DD-XXX.XX format (11 digits)
        regex.contains(., '\b\d{2}\.?\d{2}\.?\d{2}[\s\-]?\d{3}\.?\d{2}\b')
)
and any([body.current_thread.text, subject.subject],
        regex.icontains(., 'rijksregister|national\s+number|numéro\s+national')
)

Detection logic

Scope: outbound message.

Detects messages containing Belgian National Numbers (Rijksregisternummer).

  1. outbound message
  2. any of [body.current_thread.text, subject.subject] where:
    • . matches '\\b\\d{2}\\.?\\d{2}\\.?\\d{2}[\\s\\-]?\\d{3}\\.?\\d{2}\\b'
  3. any of [body.current_thread.text, subject.subject] where:
    • . matches 'rijksregister|national\\s+number|numéro\\s+national'

Inspects: body.current_thread.text, subject.subject, type.outbound. Sensors: regex.contains, regex.icontains.

Indicators matched (2)

FieldMatchValue
regex.containsregex\b\d{2}\.?\d{2}\.?\d{2}[\s\-]?\d{3}\.?\d{2}\b
regex.icontainsregexrijksregister|national\s+number|numéro\s+national

Stages and Predicates

Stage 1: mql_rule

and
  any([body.current_thread.text, subject.subject])
    [body.current_thread.text, subject.subject] regex_match "\\b\\d{2}\\.?\\d{2}\\.?\\d{2}[\\s\\-]?\\d{3}\\.?\\d{2}\\b"
  any([body.current_thread.text, subject.subject])
    [body.current_thread.text, subject.subject] regex_match "rijksregister|national\\s+number|numéro\\s+national"
  type.outbound eq "true"

Indicators

These rows show field, operator, and value matches.

FieldKindValuesSearch
type.outboundeq
  • true transforms: boolean
field:"type.outbound" kind:eq value:"true"

DLP: Brazil CPF Number

#
Severity
high
Type
dlp
Source
github.com/sublime-security/sublime-rules

Detects messages containing Brazilian Natural Persons Register (CPF) numbers.

Telemetry coverage

PlatformRecord / event type
SublimeInbound email message

Message attributes

  • body
  • body.current_thread
  • sender.email
  • subject
  • type

Rule body

type.outbound
and any([body.current_thread.text, subject.subject],
        // CPF: 11 digits in XXX.XXX.XXX-XX format
        regex.contains(., '\b\d{3}\.?\d{3}\.?\d{3}-?\d{2}\b')
)
and any([body.current_thread.text, subject.subject],
        regex.icontains(., 'CPF|cadastro\s+de\s+pessoas|tax\s+ID')
)
and (
  strings.icontains(sender.email.domain.tld, "br")
  or strings.icontains(body.current_thread.text, "brazil")
  or strings.icontains(body.current_thread.text, "brasil")
)

Detection logic

Scope: outbound message.

Detects messages containing Brazilian Natural Persons Register (CPF) numbers.

  1. outbound message
  2. any of [body.current_thread.text, subject.subject] where:
    • . matches '\\b\\d{3}\\.?\\d{3}\\.?\\d{3}-?\\d{2}\\b'
  3. any of [body.current_thread.text, subject.subject] where:
    • . matches 'CPF|cadastro\\s+de\\s+pessoas|tax\\s+ID'
  4. any of:
    • sender.email.domain.tld contains 'br'
    • body.current_thread.text contains 'brazil'
    • body.current_thread.text contains 'brasil'

Inspects: body.current_thread.text, sender.email.domain.tld, subject.subject, type.outbound. Sensors: regex.contains, regex.icontains, strings.icontains.

Indicators matched (5)

FieldMatchValue
regex.containsregex\b\d{3}\.?\d{3}\.?\d{3}-?\d{2}\b
regex.icontainsregexCPF|cadastro\s+de\s+pessoas|tax\s+ID
strings.icontainssubstringbr
strings.icontainssubstringbrazil
strings.icontainssubstringbrasil

Stages and Predicates

Stage 1: mql_rule

and
  any([body.current_thread.text, subject.subject])
    [body.current_thread.text, subject.subject] regex_match "CPF|cadastro\\s+de\\s+pessoas|tax\\s+ID"
  any([body.current_thread.text, subject.subject])
    [body.current_thread.text, subject.subject] regex_match "\\b\\d{3}\\.?\\d{3}\\.?\\d{3}-?\\d{2}\\b"
  or
    body.current_thread.text contains "brasil"
    body.current_thread.text contains "brazil"
    sender.email.domain.tld contains "br"
  type.outbound eq "true"

Indicators

These rows show field, operator, and value matches.

DLP: Brazil RG Number

#
Severity
high
Type
dlp
Source
github.com/sublime-security/sublime-rules

Detects messages containing Brazilian General Registry (RG) numbers.

Telemetry coverage

PlatformRecord / event type
SublimeInbound email message

Message attributes

  • body
  • body.current_thread
  • sender.email
  • subject
  • type

Rule body

type.outbound
and any([body.current_thread.text, subject.subject],
        // RG: 7-9 digits
        regex.contains(., '\b\d{1,2}\.?\d{3}\.?\d{3}-?[0-9X]\b')
)
and any([body.current_thread.text, subject.subject],
        regex.icontains(., 'RG|registro\s+geral|identity\s+card')
)
and (
  strings.icontains(sender.email.domain.tld, "br")
  or strings.icontains(body.current_thread.text, "brazil")
  or strings.icontains(body.current_thread.text, "brasil")
)

Detection logic

Scope: outbound message.

Detects messages containing Brazilian General Registry (RG) numbers.

  1. outbound message
  2. any of [body.current_thread.text, subject.subject] where:
    • . matches '\\b\\d{1,2}\\.?\\d{3}\\.?\\d{3}-?[0-9X]\\b'
  3. any of [body.current_thread.text, subject.subject] where:
    • . matches 'RG|registro\\s+geral|identity\\s+card'
  4. any of:
    • sender.email.domain.tld contains 'br'
    • body.current_thread.text contains 'brazil'
    • body.current_thread.text contains 'brasil'

Inspects: body.current_thread.text, sender.email.domain.tld, subject.subject, type.outbound. Sensors: regex.contains, regex.icontains, strings.icontains.

Indicators matched (5)

FieldMatchValue
regex.containsregex\b\d{1,2}\.?\d{3}\.?\d{3}-?[0-9X]\b
regex.icontainsregexRG|registro\s+geral|identity\s+card
strings.icontainssubstringbr
strings.icontainssubstringbrazil
strings.icontainssubstringbrasil

Stages and Predicates

Stage 1: mql_rule

and
  any([body.current_thread.text, subject.subject])
    [body.current_thread.text, subject.subject] regex_match "RG|registro\\s+geral|identity\\s+card"
  any([body.current_thread.text, subject.subject])
    [body.current_thread.text, subject.subject] regex_match "\\b\\d{1,2}\\.?\\d{3}\\.?\\d{3}-?[0-9X]\\b"
  or
    body.current_thread.text contains "brasil"
    body.current_thread.text contains "brazil"
    sender.email.domain.tld contains "br"
  type.outbound eq "true"

Indicators

These rows show field, operator, and value matches.

DLP: Bulgaria Uniform Civil Number

#
Severity
high
Type
dlp
Source
github.com/sublime-security/sublime-rules

Detects messages containing Bulgarian Uniform Civil Numbers (ЕГН).

Telemetry coverage

PlatformRecord / event type
SublimeInbound email message

Message attributes

  • body
  • body.current_thread
  • subject
  • type

Rule body

type.outbound
and any([body.current_thread.text, subject.subject],
        // Bulgarian UCN: 10 digits
        regex.contains(., '\b\d{10}\b')
)
and any([body.current_thread.text, subject.subject],
        regex.icontains(., 'ЕГН|uniform\s+civil|personal\s+number')
)

Detection logic

Scope: outbound message.

Detects messages containing Bulgarian Uniform Civil Numbers (ЕГН).

  1. outbound message
  2. any of [body.current_thread.text, subject.subject] where:
    • . matches '\\b\\d{10}\\b'
  3. any of [body.current_thread.text, subject.subject] where:
    • . matches 'ЕГН|uniform\\s+civil|personal\\s+number'

Inspects: body.current_thread.text, subject.subject, type.outbound. Sensors: regex.contains, regex.icontains.

Indicators matched (2)

FieldMatchValue
regex.containsregex\b\d{10}\b
regex.icontainsregexЕГН|uniform\s+civil|personal\s+number

Stages and Predicates

Stage 1: mql_rule

and
  any([body.current_thread.text, subject.subject])
    [body.current_thread.text, subject.subject] regex_match "\\b\\d{10}\\b"
  any([body.current_thread.text, subject.subject])
    [body.current_thread.text, subject.subject] regex_match "ЕГН|uniform\\s+civil|personal\\s+number"
  type.outbound eq "true"

Indicators

These rows show field, operator, and value matches.

FieldKindValuesSearch
type.outboundeq
  • true transforms: boolean
field:"type.outbound" kind:eq value:"true"

DLP: Canada Bank Account Number

#
Severity
medium
Type
dlp
Source
github.com/sublime-security/sublime-rules

Detects messages containing Canadian bank account numbers with institution and transit numbers.

Telemetry coverage

PlatformRecord / event type
SublimeInbound email message

Message attributes

  • body
  • body.current_thread
  • subject
  • type

Rule body

type.outbound
and any([body.current_thread.text, subject.subject],
        // Institution number: 3 digits, Transit: 5 digits, Account: 7-12 digits
        regex.contains(., '\b\d{3}[\s\-]?\d{5}[\s\-]?\d{7,12}\b')
)
and any([body.current_thread.text, subject.subject],
        regex.icontains(., 'bank\s+account|transit|institution\s+number')
)

Detection logic

Scope: outbound message.

Detects messages containing Canadian bank account numbers with institution and transit numbers.

  1. outbound message
  2. any of [body.current_thread.text, subject.subject] where:
    • . matches '\\b\\d{3}[\\s\\-]?\\d{5}[\\s\\-]?\\d{7,12}\\b'
  3. any of [body.current_thread.text, subject.subject] where:
    • . matches 'bank\\s+account|transit|institution\\s+number'

Inspects: body.current_thread.text, subject.subject, type.outbound. Sensors: regex.contains, regex.icontains.

Indicators matched (2)

FieldMatchValue
regex.containsregex\b\d{3}[\s\-]?\d{5}[\s\-]?\d{7,12}\b
regex.icontainsregexbank\s+account|transit|institution\s+number

Stages and Predicates

Stage 1: mql_rule

and
  any([body.current_thread.text, subject.subject])
    [body.current_thread.text, subject.subject] regex_match "\\b\\d{3}[\\s\\-]?\\d{5}[\\s\\-]?\\d{7,12}\\b"
  any([body.current_thread.text, subject.subject])
    [body.current_thread.text, subject.subject] regex_match "bank\\s+account|transit|institution\\s+number"
  type.outbound eq "true"

Indicators

These rows show field, operator, and value matches.

FieldKindValuesSearch
type.outboundeq
  • true transforms: boolean
field:"type.outbound" kind:eq value:"true"

DLP: Canada Credit Card Number

#
Severity
high
Type
dlp
Source
github.com/sublime-security/sublime-rules

Detects messages containing credit card numbers.

Telemetry coverage

PlatformRecord / event type
SublimeInbound email message

Message attributes

  • attachments
  • body
  • body.current_thread
  • sender.email
  • type

Rule body

type.outbound
and any(attachments,
        (
          .file_extension in~ $file_extensions_common_archives
          or .file_extension in~ ('.csv', '.txt', '.xlsx', '.xls')
        )
        and any(file.explode(.),
                regex.contains(.scan.ocr.raw, '\b(?:\d{4}[\s\-]?){3}\d{1,7}\b')
        )
)
and (
  strings.icontains(sender.email.domain.tld, "ca")
  or strings.icontains(body.current_thread.text, "canada")
)

Detection logic

Scope: outbound message.

Detects messages containing credit card numbers.

  1. outbound message
  2. any of attachments where all hold:
    • any of:
      • .file_extension in $file_extensions_common_archives
      • .file_extension in ('.csv', '.txt', '.xlsx', '.xls')
    • any of file.explode(.) where:
      • .scan.ocr.raw matches '\\b(?:\\d{4}[\\s\\-]?){3}\\d{1,7}\\b'
  3. any of:
    • sender.email.domain.tld contains 'ca'
    • body.current_thread.text contains 'canada'

Inspects: attachments[].file_extension, body.current_thread.text, sender.email.domain.tld, type.outbound. Sensors: file.explode, regex.contains, strings.icontains. Reference lists: $file_extensions_common_archives.

Indicators matched (7)

FieldMatchValue
attachments[].file_extensionmember.csv
attachments[].file_extensionmember.txt
attachments[].file_extensionmember.xlsx
attachments[].file_extensionmember.xls
regex.containsregex\b(?:\d{4}[\s\-]?){3}\d{1,7}\b
strings.icontainssubstringca
strings.icontainssubstringcanada

Stages and Predicates

Stage 1: mql_rule

and
  any(attachments)
    and
      or
        attachments.file_extension in [".csv", ".txt", ".xls", ".xlsx"]
         macro "attachments[].file_extension in file_extensions_common_archives"
      any(file.explode(attachments))
        file.explode(attachments).scan.ocr.raw regex_match "\\b(?:\\d{4}[\\s\\-]?){3}\\d{1,7}\\b"
  or
    body.current_thread.text contains "canada"
    sender.email.domain.tld contains "ca"
  type.outbound eq "true"

Indicators

These rows show field, operator, and value matches.

DLP: Canada Driver's License Number

#
Severity
medium
Type
dlp
Source
github.com/sublime-security/sublime-rules

Detects messages containing Canadian driver's license numbers.

Telemetry coverage

PlatformRecord / event type
SublimeInbound email message

Message attributes

  • body
  • body.current_thread
  • subject
  • type

Rule body

type.outbound
and any([body.current_thread.text, subject.subject],
        // Driver's license varies by province, typically 15-16 alphanumeric characters
        regex.contains(., '\b[A-Z0-9]{15,16}\b')
)
and any([body.current_thread.text, subject.subject],
        regex.icontains(., 'driver.?s?\s+licen[cs]e|DL\s+number|permis\s+de\s+conduire')
)

Detection logic

Scope: outbound message.

Detects messages containing Canadian driver's license numbers.

  1. outbound message
  2. any of [body.current_thread.text, subject.subject] where:
    • . matches '\\b[A-Z0-9]{15,16}\\b'
  3. any of [body.current_thread.text, subject.subject] where:
    • . matches 'driver.?s?\\s+licen[cs]e|DL\\s+number|permis\\s+de\\s+conduire'

Inspects: body.current_thread.text, subject.subject, type.outbound. Sensors: regex.contains, regex.icontains.

Indicators matched (2)

FieldMatchValue
regex.containsregex\b[A-Z0-9]{15,16}\b
regex.icontainsregexdriver.?s?\s+licen[cs]e|DL\s+number|permis\s+de\s+conduire

Stages and Predicates

Stage 1: mql_rule

and
  any([body.current_thread.text, subject.subject])
    [body.current_thread.text, subject.subject] regex_match "\\b[A-Z0-9]{15,16}\\b"
  any([body.current_thread.text, subject.subject])
    [body.current_thread.text, subject.subject] regex_match "driver.?s?\\s+licen[cs]e|DL\\s+number|permis\\s+de\\s+conduire"
  type.outbound eq "true"

Indicators

These rows show field, operator, and value matches.

FieldKindValuesSearch
type.outboundeq
  • true transforms: boolean
field:"type.outbound" kind:eq value:"true"

DLP: Canada Health Service Number

#
Severity
high
Type
dlp
Source
github.com/sublime-security/sublime-rules

Detects messages containing Canadian provincial health service numbers.

Telemetry coverage

PlatformRecord / event type
SublimeInbound email message

Message attributes

  • body
  • body.current_thread
  • subject
  • type

Rule body

type.outbound
and any([body.current_thread.text, subject.subject],
        // Health card numbers vary by province, generally 10-12 digits
        regex.contains(., '\b\d{10,12}\b')
)
and any([body.current_thread.text, subject.subject],
        regex.icontains(., 'health\s+card|health\s+service|OHIP|RAMQ|MSP|AHCIP')
)

Detection logic

Scope: outbound message.

Detects messages containing Canadian provincial health service numbers.

  1. outbound message
  2. any of [body.current_thread.text, subject.subject] where:
    • . matches '\\b\\d{10,12}\\b'
  3. any of [body.current_thread.text, subject.subject] where:
    • . matches 'health\\s+card|health\\s+service|OHIP|RAMQ|MSP|AHCIP'

Inspects: body.current_thread.text, subject.subject, type.outbound. Sensors: regex.contains, regex.icontains.

Indicators matched (2)

FieldMatchValue
regex.containsregex\b\d{10,12}\b
regex.icontainsregexhealth\s+card|health\s+service|OHIP|RAMQ|MSP|AHCIP

Stages and Predicates

Stage 1: mql_rule

and
  any([body.current_thread.text, subject.subject])
    [body.current_thread.text, subject.subject] regex_match "\\b\\d{10,12}\\b"
  any([body.current_thread.text, subject.subject])
    [body.current_thread.text, subject.subject] regex_match "health\\s+card|health\\s+service|OHIP|RAMQ|MSP|AHCIP"
  type.outbound eq "true"

Indicators

These rows show field, operator, and value matches.

FieldKindValuesSearch
type.outboundeq
  • true transforms: boolean
field:"type.outbound" kind:eq value:"true"

DLP: Canada Passport Number

#
Severity
high
Type
dlp
Source
github.com/sublime-security/sublime-rules

Detects messages containing Canadian passport numbers.

Telemetry coverage

PlatformRecord / event type
SublimeInbound email message

Message attributes

  • body
  • body.current_thread
  • sender.email
  • subject
  • type

Rule body

type.outbound
and any([body.current_thread.text, subject.subject],
        // Canadian passport: 2 letters + 6 digits
        regex.contains(., '\b[A-Z]{2}\d{6}\b')
)
and any([body.current_thread.text, subject.subject],
        regex.icontains(., 'passport|travel\s+document')
)
and (
  strings.icontains(sender.email.domain.tld, "ca")
  or strings.icontains(body.current_thread.text, "canada")
)

Detection logic

Scope: outbound message.

Detects messages containing Canadian passport numbers.

  1. outbound message
  2. any of [body.current_thread.text, subject.subject] where:
    • . matches '\\b[A-Z]{2}\\d{6}\\b'
  3. any of [body.current_thread.text, subject.subject] where:
    • . matches 'passport|travel\\s+document'
  4. any of:
    • sender.email.domain.tld contains 'ca'
    • body.current_thread.text contains 'canada'

Inspects: body.current_thread.text, sender.email.domain.tld, subject.subject, type.outbound. Sensors: regex.contains, regex.icontains, strings.icontains.

Indicators matched (4)

FieldMatchValue
regex.containsregex\b[A-Z]{2}\d{6}\b
regex.icontainsregexpassport|travel\s+document
strings.icontainssubstringca
strings.icontainssubstringcanada

Stages and Predicates

Stage 1: mql_rule

and
  any([body.current_thread.text, subject.subject])
    [body.current_thread.text, subject.subject] regex_match "\\b[A-Z]{2}\\d{6}\\b"
  any([body.current_thread.text, subject.subject])
    [body.current_thread.text, subject.subject] regex_match "passport|travel\\s+document"
  or
    body.current_thread.text contains "canada"
    sender.email.domain.tld contains "ca"
  type.outbound eq "true"

Indicators

These rows show field, operator, and value matches.

DLP: Canada Personal Health Identification Number (PHIN)

#
Severity
high
Type
dlp
Source
github.com/sublime-security/sublime-rules

Detects messages containing Canadian Personal Health Identification Numbers.

Telemetry coverage

PlatformRecord / event type
SublimeInbound email message

Message attributes

  • body
  • body.current_thread
  • subject
  • type

Rule body

type.outbound
and any([body.current_thread.text, subject.subject],
        // PHIN varies by province but generally alphanumeric
        regex.contains(., '\b[A-Z0-9]{9,12}\b')
)
and any([body.current_thread.text, subject.subject],
        regex.icontains(., 'PHIN|personal\s+health\s+identification|health\s+ID')
)

Detection logic

Scope: outbound message.

Detects messages containing Canadian Personal Health Identification Numbers.

  1. outbound message
  2. any of [body.current_thread.text, subject.subject] where:
    • . matches '\\b[A-Z0-9]{9,12}\\b'
  3. any of [body.current_thread.text, subject.subject] where:
    • . matches 'PHIN|personal\\s+health\\s+identification|health\\s+ID'

Inspects: body.current_thread.text, subject.subject, type.outbound. Sensors: regex.contains, regex.icontains.

Indicators matched (2)

FieldMatchValue
regex.containsregex\b[A-Z0-9]{9,12}\b
regex.icontainsregexPHIN|personal\s+health\s+identification|health\s+ID

Stages and Predicates

Stage 1: mql_rule

and
  any([body.current_thread.text, subject.subject])
    [body.current_thread.text, subject.subject] regex_match "PHIN|personal\\s+health\\s+identification|health\\s+ID"
  any([body.current_thread.text, subject.subject])
    [body.current_thread.text, subject.subject] regex_match "\\b[A-Z0-9]{9,12}\\b"
  type.outbound eq "true"

Indicators

These rows show field, operator, and value matches.

FieldKindValuesSearch
type.outboundeq
  • true transforms: boolean
field:"type.outbound" kind:eq value:"true"

DLP: Canada Social Insurance Number (SIN)

#
Severity
high
Type
dlp
Source
github.com/sublime-security/sublime-rules

Detects messages containing Canadian Social Insurance Numbers.

Telemetry coverage

PlatformRecord / event type
SublimeInbound email message

Message attributes

  • body
  • body.current_thread
  • subject
  • type

Rule body

type.outbound
and any([body.current_thread.text, subject.subject],
        // SIN: 9 digits in XXX-XXX-XXX format
        regex.contains(., '\b\d{3}[\s\-]?\d{3}[\s\-]?\d{3}\b')
)
and any([body.current_thread.text, subject.subject],
        regex.icontains(., 'social\s+insurance|SIN|NAS')
)

Detection logic

Scope: outbound message.

Detects messages containing Canadian Social Insurance Numbers.

  1. outbound message
  2. any of [body.current_thread.text, subject.subject] where:
    • . matches '\\b\\d{3}[\\s\\-]?\\d{3}[\\s\\-]?\\d{3}\\b'
  3. any of [body.current_thread.text, subject.subject] where:
    • . matches 'social\\s+insurance|SIN|NAS'

Inspects: body.current_thread.text, subject.subject, type.outbound. Sensors: regex.contains, regex.icontains.

Indicators matched (2)

FieldMatchValue
regex.containsregex\b\d{3}[\s\-]?\d{3}[\s\-]?\d{3}\b
regex.icontainsregexsocial\s+insurance|SIN|NAS

Stages and Predicates

Stage 1: mql_rule

and
  any([body.current_thread.text, subject.subject])
    [body.current_thread.text, subject.subject] regex_match "\\b\\d{3}[\\s\\-]?\\d{3}[\\s\\-]?\\d{3}\\b"
  any([body.current_thread.text, subject.subject])
    [body.current_thread.text, subject.subject] regex_match "social\\s+insurance|SIN|NAS"
  type.outbound eq "true"

Indicators

These rows show field, operator, and value matches.

FieldKindValuesSearch
type.outboundeq
  • true transforms: boolean
field:"type.outbound" kind:eq value:"true"

DLP: Chile Identity Card Number

#
Severity
high
Type
dlp
Source
github.com/sublime-security/sublime-rules

Detects messages containing Chilean Identity Card (CDI) numbers.

Telemetry coverage

PlatformRecord / event type
SublimeInbound email message

Message attributes

  • body
  • body.current_thread
  • sender.email
  • subject
  • type

Rule body

type.outbound
and any([body.current_thread.text, subject.subject],
        // Chilean RUT: 7-8 digits with verification digit
        regex.contains(., '\b\d{1,2}\.\d{3}\.\d{3}-[0-9Kk]\b')
)
and any([body.current_thread.text, subject.subject],
        regex.icontains(., 'RUT|cédula|identity\s+card|CDI')
)
and (
  strings.icontains(sender.email.domain.tld, "cl")
  or strings.icontains(body.current_thread.text, "chile")
)

Detection logic

Scope: outbound message.

Detects messages containing Chilean Identity Card (CDI) numbers.

  1. outbound message
  2. any of [body.current_thread.text, subject.subject] where:
    • . matches '\\b\\d{1,2}\\.\\d{3}\\.\\d{3}-[0-9Kk]\\b'
  3. any of [body.current_thread.text, subject.subject] where:
    • . matches 'RUT|cédula|identity\\s+card|CDI'
  4. any of:
    • sender.email.domain.tld contains 'cl'
    • body.current_thread.text contains 'chile'

Inspects: body.current_thread.text, sender.email.domain.tld, subject.subject, type.outbound. Sensors: regex.contains, regex.icontains, strings.icontains.

Indicators matched (4)

FieldMatchValue
regex.containsregex\b\d{1,2}\.\d{3}\.\d{3}-[0-9Kk]\b
regex.icontainsregexRUT|cédula|identity\s+card|CDI
strings.icontainssubstringcl
strings.icontainssubstringchile

Stages and Predicates

Stage 1: mql_rule

and
  any([body.current_thread.text, subject.subject])
    [body.current_thread.text, subject.subject] regex_match "RUT|cédula|identity\\s+card|CDI"
  any([body.current_thread.text, subject.subject])
    [body.current_thread.text, subject.subject] regex_match "\\b\\d{1,2}\\.\\d{3}\\.\\d{3}-[0-9Kk]\\b"
  or
    body.current_thread.text contains "chile"
    sender.email.domain.tld contains "cl"
  type.outbound eq "true"

Indicators

These rows show field, operator, and value matches.

DLP: China Resident ID Number

#
Severity
high
Type
dlp
Source
github.com/sublime-security/sublime-rules

Detects messages containing Chinese Resident Identity Card numbers.

Telemetry coverage

PlatformRecord / event type
SublimeInbound email message

Message attributes

  • body
  • body.current_thread
  • subject
  • type

Rule body

type.outbound
and any([body.current_thread.text, subject.subject],
        // Chinese ID: 18 digits or 15 digits
        regex.contains(., '\b\d{17}[0-9Xx]\b')
        or regex.contains(., '\b\d{15}\b')
)
and any([body.current_thread.text, subject.subject],
        regex.icontains(., 'resident\s+ID|身份证|chinese\s+ID|china')
)

Detection logic

Scope: outbound message.

Detects messages containing Chinese Resident Identity Card numbers.

  1. outbound message
  2. any of [body.current_thread.text, subject.subject] where any holds:
    • . matches '\\b\\d{17}[0-9Xx]\\b'
    • . matches '\\b\\d{15}\\b'
  3. any of [body.current_thread.text, subject.subject] where:
    • . matches 'resident\\s+ID|身份证|chinese\\s+ID|china'

Inspects: body.current_thread.text, subject.subject, type.outbound. Sensors: regex.contains, regex.icontains.

Indicators matched (3)

FieldMatchValue
regex.containsregex\b\d{17}[0-9Xx]\b
regex.containsregex\b\d{15}\b
regex.icontainsregexresident\s+ID|身份证|chinese\s+ID|china

Stages and Predicates

Stage 1: mql_rule

and
  any([body.current_thread.text, subject.subject])
    or
      [body.current_thread.text, subject.subject] regex_match "\\b\\d{15}\\b"
      [body.current_thread.text, subject.subject] regex_match "\\b\\d{17}[0-9Xx]\\b"
  any([body.current_thread.text, subject.subject])
    [body.current_thread.text, subject.subject] regex_match "resident\\s+ID|身份证|chinese\\s+ID|china"
  type.outbound eq "true"

Indicators

These rows show field, operator, and value matches.

FieldKindValuesSearch
type.outboundeq
  • true transforms: boolean
field:"type.outbound" kind:eq value:"true"

DLP: Colombia Citizenship Card Number

#
Severity
high
Type
dlp
Source
github.com/sublime-security/sublime-rules

Detects messages containing Colombian Citizenship Card (CDC) numbers.

Telemetry coverage

PlatformRecord / event type
SublimeInbound email message

Message attributes

  • body
  • body.current_thread
  • sender.email
  • subject
  • type

Rule body

type.outbound
and any([body.current_thread.text, subject.subject],
        // CDC: 8-10 digits
        regex.contains(., '\b\d{8,10}\b')
)
and any([body.current_thread.text, subject.subject],
        regex.icontains(., 'cédula|citizenship\s+card|CDC|ciudadanía')
)
and (
  strings.icontains(sender.email.domain.tld, "co")
  or strings.icontains(body.current_thread.text, "colombia")
)

Detection logic

Scope: outbound message.

Detects messages containing Colombian Citizenship Card (CDC) numbers.

  1. outbound message
  2. any of [body.current_thread.text, subject.subject] where:
    • . matches '\\b\\d{8,10}\\b'
  3. any of [body.current_thread.text, subject.subject] where:
    • . matches 'cédula|citizenship\\s+card|CDC|ciudadanía'
  4. any of:
    • sender.email.domain.tld contains 'co'
    • body.current_thread.text contains 'colombia'

Inspects: body.current_thread.text, sender.email.domain.tld, subject.subject, type.outbound. Sensors: regex.contains, regex.icontains, strings.icontains.

Indicators matched (4)

FieldMatchValue
regex.containsregex\b\d{8,10}\b
regex.icontainsregexcédula|citizenship\s+card|CDC|ciudadanía
strings.icontainssubstringco
strings.icontainssubstringcolombia

Stages and Predicates

Stage 1: mql_rule

and
  any([body.current_thread.text, subject.subject])
    [body.current_thread.text, subject.subject] regex_match "\\b\\d{8,10}\\b"
  any([body.current_thread.text, subject.subject])
    [body.current_thread.text, subject.subject] regex_match "cédula|citizenship\\s+card|CDC|ciudadanía"
  or
    body.current_thread.text contains "colombia"
    sender.email.domain.tld contains "co"
  type.outbound eq "true"

Indicators

These rows show field, operator, and value matches.

DLP: Croatia Personal Identification (OIB)

#
Severity
high
Type
dlp
Source
github.com/sublime-security/sublime-rules

Detects messages containing Croatian Personal Identification Numbers (OIB).

Telemetry coverage

PlatformRecord / event type
SublimeInbound email message

Message attributes

  • body
  • body.current_thread
  • subject
  • type

Rule body

type.outbound
and any([body.current_thread.text, subject.subject],
        // Croatian OIB: 11 digits
        regex.contains(., '\b\d{11}\b')
)
and any([body.current_thread.text, subject.subject],
        regex.icontains(., 'OIB|osobni\s+identifikacijski|personal\s+identification')
)

Detection logic

Scope: outbound message.

Detects messages containing Croatian Personal Identification Numbers (OIB).

  1. outbound message
  2. any of [body.current_thread.text, subject.subject] where:
    • . matches '\\b\\d{11}\\b'
  3. any of [body.current_thread.text, subject.subject] where:
    • . matches 'OIB|osobni\\s+identifikacijski|personal\\s+identification'

Inspects: body.current_thread.text, subject.subject, type.outbound. Sensors: regex.contains, regex.icontains.

Indicators matched (2)

FieldMatchValue
regex.containsregex\b\d{11}\b
regex.icontainsregexOIB|osobni\s+identifikacijski|personal\s+identification

Stages and Predicates

Stage 1: mql_rule

and
  any([body.current_thread.text, subject.subject])
    [body.current_thread.text, subject.subject] regex_match "OIB|osobni\\s+identifikacijski|personal\\s+identification"
  any([body.current_thread.text, subject.subject])
    [body.current_thread.text, subject.subject] regex_match "\\b\\d{11}\\b"
  type.outbound eq "true"

Indicators

These rows show field, operator, and value matches.

FieldKindValuesSearch
type.outboundeq
  • true transforms: boolean
field:"type.outbound" kind:eq value:"true"

DLP: Cyprus Identity Card

#
Severity
high
Type
dlp
Source
github.com/sublime-security/sublime-rules

Detects messages containing Cypriot Identity Card numbers.

Telemetry coverage

PlatformRecord / event type
SublimeInbound email message

Message attributes

  • body
  • body.current_thread
  • sender.email
  • subject
  • type

Rule body

type.outbound
and any([body.current_thread.text, subject.subject],
        // Cyprus ID: 8 alphanumeric characters
        regex.contains(., '\b[A-Z0-9]{8}\b')
)
and any([body.current_thread.text, subject.subject],
        regex.icontains(., 'identity\s+card|ταυτότητα|kimlik')
)
and (
  strings.icontains(sender.email.domain.tld, "cy")
  or strings.icontains(body.current_thread.text, "cyprus")
)

Detection logic

Scope: outbound message.

Detects messages containing Cypriot Identity Card numbers.

  1. outbound message
  2. any of [body.current_thread.text, subject.subject] where:
    • . matches '\\b[A-Z0-9]{8}\\b'
  3. any of [body.current_thread.text, subject.subject] where:
    • . matches 'identity\\s+card|ταυτότητα|kimlik'
  4. any of:
    • sender.email.domain.tld contains 'cy'
    • body.current_thread.text contains 'cyprus'

Inspects: body.current_thread.text, sender.email.domain.tld, subject.subject, type.outbound. Sensors: regex.contains, regex.icontains, strings.icontains.

Indicators matched (4)

FieldMatchValue
regex.containsregex\b[A-Z0-9]{8}\b
regex.icontainsregexidentity\s+card|ταυτότητα|kimlik
strings.icontainssubstringcy
strings.icontainssubstringcyprus

Stages and Predicates

Stage 1: mql_rule

and
  any([body.current_thread.text, subject.subject])
    [body.current_thread.text, subject.subject] regex_match "\\b[A-Z0-9]{8}\\b"
  any([body.current_thread.text, subject.subject])
    [body.current_thread.text, subject.subject] regex_match "identity\\s+card|ταυτότητα|kimlik"
  or
    body.current_thread.text contains "cyprus"
    sender.email.domain.tld contains "cy"
  type.outbound eq "true"

Indicators

These rows show field, operator, and value matches.

DLP: Czech Personal Identity Number

#
Severity
high
Type
dlp
Source
github.com/sublime-security/sublime-rules

Detects messages containing Czech Personal Identity Numbers (rodné číslo).

Telemetry coverage

PlatformRecord / event type
SublimeInbound email message

Message attributes

  • body
  • body.current_thread
  • subject
  • type

Rule body

type.outbound
and any([body.current_thread.text, subject.subject],
        // Czech Personal ID: 10 digits in XXXXXX/XXXX format
        regex.contains(., '\b\d{6}[\s/]?\d{4}\b')
)
and any([body.current_thread.text, subject.subject],
        regex.icontains(., 'rodné\s+číslo|personal\s+identity|birth\s+number')
)

Detection logic

Scope: outbound message.

Detects messages containing Czech Personal Identity Numbers (rodné číslo).

  1. outbound message
  2. any of [body.current_thread.text, subject.subject] where:
    • . matches '\\b\\d{6}[\\s/]?\\d{4}\\b'
  3. any of [body.current_thread.text, subject.subject] where:
    • . matches 'rodné\\s+číslo|personal\\s+identity|birth\\s+number'

Inspects: body.current_thread.text, subject.subject, type.outbound. Sensors: regex.contains, regex.icontains.

Indicators matched (2)

FieldMatchValue
regex.containsregex\b\d{6}[\s/]?\d{4}\b
regex.icontainsregexrodné\s+číslo|personal\s+identity|birth\s+number

Stages and Predicates

Stage 1: mql_rule

and
  any([body.current_thread.text, subject.subject])
    [body.current_thread.text, subject.subject] regex_match "\\b\\d{6}[\\s/]?\\d{4}\\b"
  any([body.current_thread.text, subject.subject])
    [body.current_thread.text, subject.subject] regex_match "rodné\\s+číslo|personal\\s+identity|birth\\s+number"
  type.outbound eq "true"

Indicators

These rows show field, operator, and value matches.

FieldKindValuesSearch
type.outboundeq
  • true transforms: boolean
field:"type.outbound" kind:eq value:"true"

DLP: Denmark Personal Identification Number

#
Severity
high
Type
dlp
Source
github.com/sublime-security/sublime-rules

Detects messages containing Danish Personal Identification Numbers (CPR-nummer).

Telemetry coverage

PlatformRecord / event type
SublimeInbound email message

Message attributes

  • body
  • body.current_thread
  • subject
  • type

Rule body

type.outbound
and any([body.current_thread.text, subject.subject],
        // Danish CPR: 10 digits in DDMMYY-XXXX format
        regex.contains(., '\b\d{6}[\s\-]?\d{4}\b')
)
and any([body.current_thread.text, subject.subject],
        regex.icontains(., 'CPR|personnummer|personal\s+identification')
)

Detection logic

Scope: outbound message.

Detects messages containing Danish Personal Identification Numbers (CPR-nummer).

  1. outbound message
  2. any of [body.current_thread.text, subject.subject] where:
    • . matches '\\b\\d{6}[\\s\\-]?\\d{4}\\b'
  3. any of [body.current_thread.text, subject.subject] where:
    • . matches 'CPR|personnummer|personal\\s+identification'

Inspects: body.current_thread.text, subject.subject, type.outbound. Sensors: regex.contains, regex.icontains.

Indicators matched (2)

FieldMatchValue
regex.containsregex\b\d{6}[\s\-]?\d{4}\b
regex.icontainsregexCPR|personnummer|personal\s+identification

Stages and Predicates

Stage 1: mql_rule

and
  any([body.current_thread.text, subject.subject])
    [body.current_thread.text, subject.subject] regex_match "CPR|personnummer|personal\\s+identification"
  any([body.current_thread.text, subject.subject])
    [body.current_thread.text, subject.subject] regex_match "\\b\\d{6}[\\s\\-]?\\d{4}\\b"
  type.outbound eq "true"

Indicators

These rows show field, operator, and value matches.

FieldKindValuesSearch
type.outboundeq
  • true transforms: boolean
field:"type.outbound" kind:eq value:"true"

DLP: Estonia Personal Identification Code

#
Severity
high
Type
dlp
Source
github.com/sublime-security/sublime-rules

Detects messages containing Estonian Personal Identification Codes (isikukood).

Telemetry coverage

PlatformRecord / event type
SublimeInbound email message

Message attributes

  • body
  • body.current_thread
  • subject
  • type

Rule body

type.outbound
and any([body.current_thread.text, subject.subject],
        // Estonian ID: 11 digits
        regex.contains(., '\b[1-6]\d{10}\b')
)
and any([body.current_thread.text, subject.subject],
        regex.icontains(., 'isikukood|personal\s+code')
)

Detection logic

Scope: outbound message.

Detects messages containing Estonian Personal Identification Codes (isikukood).

  1. outbound message
  2. any of [body.current_thread.text, subject.subject] where:
    • . matches '\\b[1-6]\\d{10}\\b'
  3. any of [body.current_thread.text, subject.subject] where:
    • . matches 'isikukood|personal\\s+code'

Inspects: body.current_thread.text, subject.subject, type.outbound. Sensors: regex.contains, regex.icontains.

Indicators matched (2)

FieldMatchValue
regex.containsregex\b[1-6]\d{10}\b
regex.icontainsregexisikukood|personal\s+code

Stages and Predicates

Stage 1: mql_rule

and
  any([body.current_thread.text, subject.subject])
    [body.current_thread.text, subject.subject] regex_match "\\b[1-6]\\d{10}\\b"
  any([body.current_thread.text, subject.subject])
    [body.current_thread.text, subject.subject] regex_match "isikukood|personal\\s+code"
  type.outbound eq "true"

Indicators

These rows show field, operator, and value matches.

FieldKindValuesSearch
type.outboundeq
  • true transforms: boolean
field:"type.outbound" kind:eq value:"true"

DLP: EU Debit Card Number

#
Severity
high
Type
dlp
Source
github.com/sublime-security/sublime-rules

Detects messages containing European debit card numbers.

Telemetry coverage

PlatformRecord / event type
SublimeInbound email message

Message attributes

  • attachments
  • sender.email
  • type

Rule body

type.outbound
and any(attachments,
        (
          .file_extension in~ $file_extensions_common_archives
          or .file_extension in~ ('.csv', '.txt', '.xlsx', '.xls')
        )
        and any(file.explode(.),
                // Debit card: 13-19 digits with optional spaces/hyphens
                regex.contains(.scan.ocr.raw, '\b(?:\d{4}[\s\-]?){3}\d{1,7}\b')
        )
)
and (
  // EU country TLDs
  strings.icontains(sender.email.domain.tld, "at")
  or strings.icontains(sender.email.domain.tld, "be")
  or strings.icontains(sender.email.domain.tld, "bg")
  or strings.icontains(sender.email.domain.tld, "hr")
  or strings.icontains(sender.email.domain.tld, "cy")
  or strings.icontains(sender.email.domain.tld, "cz")
  or strings.icontains(sender.email.domain.tld, "dk")
  or strings.icontains(sender.email.domain.tld, "ee")
  or strings.icontains(sender.email.domain.tld, "fi")
  or strings.icontains(sender.email.domain.tld, "fr")
  or strings.icontains(sender.email.domain.tld, "de")
  or strings.icontains(sender.email.domain.tld, "gr")
  or strings.icontains(sender.email.domain.tld, "hu")
  or strings.icontains(sender.email.domain.tld, "ie")
  or strings.icontains(sender.email.domain.tld, "it")
  or strings.icontains(sender.email.domain.tld, "lv")
  or strings.icontains(sender.email.domain.tld, "lt")
  or strings.icontains(sender.email.domain.tld, "lu")
  or strings.icontains(sender.email.domain.tld, "mt")
  or strings.icontains(sender.email.domain.tld, "nl")
  or strings.icontains(sender.email.domain.tld, "pl")
  or strings.icontains(sender.email.domain.tld, "pt")
  or strings.icontains(sender.email.domain.tld, "ro")
  or strings.icontains(sender.email.domain.tld, "sk")
  or strings.icontains(sender.email.domain.tld, "si")
  or strings.icontains(sender.email.domain.tld, "es")
  or strings.icontains(sender.email.domain.tld, "se")
  or strings.icontains(sender.email.domain.tld, "eu")
)

Detection logic

Scope: outbound message.

Detects messages containing European debit card numbers.

  1. outbound message
  2. any of attachments where all hold:
    • any of:
      • .file_extension in $file_extensions_common_archives
      • .file_extension in ('.csv', '.txt', '.xlsx', '.xls')
    • any of file.explode(.) where:
      • .scan.ocr.raw matches '\\b(?:\\d{4}[\\s\\-]?){3}\\d{1,7}\\b'
  3. sender.email.domain.tld contains any of 28 patterns
    • at
    • be
    • bg
    • hr
    • cy
    • cz
    • dk
    • ee
    • fi
    • fr
    • de
    • gr
    • hu
    • ie
    • it
    • lv
    • lt
    • lu
    • mt
    • nl
    • pl
    • pt
    • ro
    • sk
    • si
    • es
    • se
    • eu

Inspects: attachments[].file_extension, sender.email.domain.tld, type.outbound. Sensors: file.explode, regex.contains, strings.icontains. Reference lists: $file_extensions_common_archives.

Indicators matched (33)

FieldMatchValue
attachments[].file_extensionmember.csv
attachments[].file_extensionmember.txt
attachments[].file_extensionmember.xlsx
attachments[].file_extensionmember.xls
regex.containsregex\b(?:\d{4}[\s\-]?){3}\d{1,7}\b
strings.icontainssubstringat
strings.icontainssubstringbe
strings.icontainssubstringbg
strings.icontainssubstringhr
strings.icontainssubstringcy
strings.icontainssubstringcz
strings.icontainssubstringdk
21 more
strings.icontainssubstringee
strings.icontainssubstringfi
strings.icontainssubstringfr
strings.icontainssubstringde
strings.icontainssubstringgr
strings.icontainssubstringhu
strings.icontainssubstringie
strings.icontainssubstringit
strings.icontainssubstringlv
strings.icontainssubstringlt
strings.icontainssubstringlu
strings.icontainssubstringmt
strings.icontainssubstringnl
strings.icontainssubstringpl
strings.icontainssubstringpt
strings.icontainssubstringro
strings.icontainssubstringsk
strings.icontainssubstringsi
strings.icontainssubstringes
strings.icontainssubstringse
strings.icontainssubstringeu

Stages and Predicates

Stage 1: mql_rule

and
  any(attachments)
    and
      or
        attachments.file_extension in [".csv", ".txt", ".xls", ".xlsx"]
         macro "attachments[].file_extension in file_extensions_common_archives"
      any(file.explode(attachments))
        file.explode(attachments).scan.ocr.raw regex_match "\\b(?:\\d{4}[\\s\\-]?){3}\\d{1,7}\\b"
  or
    sender.email.domain.tld contains "at"
    sender.email.domain.tld contains "be"
    sender.email.domain.tld contains "bg"
    sender.email.domain.tld contains "cy"
    sender.email.domain.tld contains "cz"
    sender.email.domain.tld contains "de"
    sender.email.domain.tld contains "dk"
    sender.email.domain.tld contains "ee"
    sender.email.domain.tld contains "es"
    sender.email.domain.tld contains "eu"
    sender.email.domain.tld contains "fi"
    sender.email.domain.tld contains "fr"
    sender.email.domain.tld contains "gr"
    sender.email.domain.tld contains "hr"
    sender.email.domain.tld contains "hu"
    sender.email.domain.tld contains "ie"
    sender.email.domain.tld contains "it"
    sender.email.domain.tld contains "lt"
    sender.email.domain.tld contains "lu"
    sender.email.domain.tld contains "lv"
    sender.email.domain.tld contains "mt"
    sender.email.domain.tld contains "nl"
    sender.email.domain.tld contains "pl"
    sender.email.domain.tld contains "pt"
    sender.email.domain.tld contains "ro"
    sender.email.domain.tld contains "se"
    sender.email.domain.tld contains "si"
    sender.email.domain.tld contains "sk"
  type.outbound eq "true"

Indicators

These rows show field, operator, and value matches.

FieldKindValuesSearch
sender.email.domain.tldcontains
  • at
  • be
  • bg
  • cy
  • cz
  • de
  • dk
  • ee
  • es
  • eu
  • fi
  • fr
  • gr
  • hr
  • hu
  • ie
  • it
  • lt
  • lu
  • lv
  • mt
  • nl
  • pl
  • pt
  • ro
  • se
  • si
  • sk
field:"sender.email.domain.tld" kind:contains
type.outboundeq
  • true transforms: boolean
field:"type.outbound" kind:eq value:"true"

DLP: Finland National ID

#
Severity
high
Type
dlp
Source
github.com/sublime-security/sublime-rules

Detects messages containing Finnish National ID numbers (henkilötunnus).

Telemetry coverage

PlatformRecord / event type
SublimeInbound email message

Message attributes

  • body
  • body.current_thread
  • subject
  • type

Rule body

type.outbound
and any([body.current_thread.text, subject.subject],
        // Finnish ID: DDMMYY-XXXX or DDMMYY+XXXX or DDMMYYAXXXX
        regex.contains(., '\b\d{6}[\-\+A]\d{3}[A-Z0-9]\b')
)
and any([body.current_thread.text, subject.subject],
        regex.icontains(., 'henkilötunnus|personal\s+identity|HETU')
)

Detection logic

Scope: outbound message.

Detects messages containing Finnish National ID numbers (henkilötunnus).

  1. outbound message
  2. any of [body.current_thread.text, subject.subject] where:
    • . matches '\\b\\d{6}[\\-\\+A]\\d{3}[A-Z0-9]\\b'
  3. any of [body.current_thread.text, subject.subject] where:
    • . matches 'henkilötunnus|personal\\s+identity|HETU'

Inspects: body.current_thread.text, subject.subject, type.outbound. Sensors: regex.contains, regex.icontains.

Indicators matched (2)

FieldMatchValue
regex.containsregex\b\d{6}[\-\+A]\d{3}[A-Z0-9]\b
regex.icontainsregexhenkilötunnus|personal\s+identity|HETU

Stages and Predicates

Stage 1: mql_rule

and
  any([body.current_thread.text, subject.subject])
    [body.current_thread.text, subject.subject] regex_match "\\b\\d{6}[\\-\\+A]\\d{3}[A-Z0-9]\\b"
  any([body.current_thread.text, subject.subject])
    [body.current_thread.text, subject.subject] regex_match "henkilötunnus|personal\\s+identity|HETU"
  type.outbound eq "true"

Indicators

These rows show field, operator, and value matches.

FieldKindValuesSearch
type.outboundeq
  • true transforms: boolean
field:"type.outbound" kind:eq value:"true"

DLP: France Bank Account Number

#
Severity
medium
Type
dlp
Source
github.com/sublime-security/sublime-rules

Detects messages containing French bank account numbers (IBAN).

Telemetry coverage

PlatformRecord / event type
SublimeInbound email message

Message attributes

  • body
  • body.current_thread
  • subject
  • type

Rule body

type.outbound
and any([body.current_thread.text, subject.subject],
        // French IBAN: FR + 2 check digits + 23 digits
        regex.contains(., '\bFR\d{2}[\s]?\d{4}[\s]?\d{4}[\s]?\d{4}[\s]?\d{4}[\s]?\d{4}[\s]?\d{3}\b')
)
and any([body.current_thread.text, subject.subject],
        regex.icontains(., 'IBAN|compte\s+bancaire|bank\s+account|RIB')
)

Detection logic

Scope: outbound message.

Detects messages containing French bank account numbers (IBAN).

  1. outbound message
  2. any of [body.current_thread.text, subject.subject] where:
    • . matches '\\bFR\\d{2}[\\s]?\\d{4}[\\s]?\\d{4}[\\s]?\\d{4}[\\s]?\\d{4}[\\s]?\\d{4}[\\s]?\\d{3}\\b'
  3. any of [body.current_thread.text, subject.subject] where:
    • . matches 'IBAN|compte\\s+bancaire|bank\\s+account|RIB'

Inspects: body.current_thread.text, subject.subject, type.outbound. Sensors: regex.contains, regex.icontains.

Indicators matched (2)

FieldMatchValue
regex.containsregex\bFR\d{2}[\s]?\d{4}[\s]?\d{4}[\s]?\d{4}[\s]?\d{4}[\s]?\d{4}[\s]?\d{3}\b
regex.icontainsregexIBAN|compte\s+bancaire|bank\s+account|RIB

Stages and Predicates

Stage 1: mql_rule

and
  any([body.current_thread.text, subject.subject])
    [body.current_thread.text, subject.subject] regex_match "IBAN|compte\\s+bancaire|bank\\s+account|RIB"
  any([body.current_thread.text, subject.subject])
    [body.current_thread.text, subject.subject] regex_match "\\bFR\\d{2}[\\s]?\\d{4}[\\s]?\\d{4}[\\s]?\\d{4}[\\s]?\\d{4}[\\s]?\\d{4}[\\s]?\\d{3}\\b"
  type.outbound eq "true"

Indicators

These rows show field, operator, and value matches.

FieldKindValuesSearch
type.outboundeq
  • true transforms: boolean
field:"type.outbound" kind:eq value:"true"

DLP: France Credit Card Number

#
Severity
high
Type
dlp
Source
github.com/sublime-security/sublime-rules

Detects messages containing credit card numbers.

Telemetry coverage

PlatformRecord / event type
SublimeInbound email message

Message attributes

  • attachments
  • body
  • body.current_thread
  • sender.email
  • type

Rule body

type.outbound
and any(attachments,
        (
          .file_extension in~ $file_extensions_common_archives
          or .file_extension in~ ('.csv', '.txt', '.xlsx', '.xls')
        )
        and any(file.explode(.),
                regex.contains(.scan.ocr.raw, '\b(?:\d{4}[\s\-]?){3}\d{1,7}\b')
        )
)
and (
  strings.icontains(sender.email.domain.tld, "fr")
  or strings.icontains(body.current_thread.text, "france")
)

Detection logic

Scope: outbound message.

Detects messages containing credit card numbers.

  1. outbound message
  2. any of attachments where all hold:
    • any of:
      • .file_extension in $file_extensions_common_archives
      • .file_extension in ('.csv', '.txt', '.xlsx', '.xls')
    • any of file.explode(.) where:
      • .scan.ocr.raw matches '\\b(?:\\d{4}[\\s\\-]?){3}\\d{1,7}\\b'
  3. any of:
    • sender.email.domain.tld contains 'fr'
    • body.current_thread.text contains 'france'

Inspects: attachments[].file_extension, body.current_thread.text, sender.email.domain.tld, type.outbound. Sensors: file.explode, regex.contains, strings.icontains. Reference lists: $file_extensions_common_archives.

Indicators matched (7)

FieldMatchValue
attachments[].file_extensionmember.csv
attachments[].file_extensionmember.txt
attachments[].file_extensionmember.xlsx
attachments[].file_extensionmember.xls
regex.containsregex\b(?:\d{4}[\s\-]?){3}\d{1,7}\b
strings.icontainssubstringfr
strings.icontainssubstringfrance

Stages and Predicates

Stage 1: mql_rule

and
  any(attachments)
    and
      or
        attachments.file_extension in [".csv", ".txt", ".xls", ".xlsx"]
         macro "attachments[].file_extension in file_extensions_common_archives"
      any(file.explode(attachments))
        file.explode(attachments).scan.ocr.raw regex_match "\\b(?:\\d{4}[\\s\\-]?){3}\\d{1,7}\\b"
  or
    body.current_thread.text contains "france"
    sender.email.domain.tld contains "fr"
  type.outbound eq "true"

Indicators

These rows show field, operator, and value matches.

DLP: France Debit Card Number

#
Severity
high
Type
dlp
Source
github.com/sublime-security/sublime-rules

Detects messages containing debit card numbers.

Telemetry coverage

PlatformRecord / event type
SublimeInbound email message

Message attributes

  • attachments
  • body
  • body.current_thread
  • sender.email
  • type

Rule body

type.outbound
and any(attachments,
        (
          .file_extension in~ $file_extensions_common_archives
          or .file_extension in~ ('.csv', '.txt', '.xlsx', '.xls')
        )
        and any(file.explode(.),
                regex.contains(.scan.ocr.raw, '\b(?:\d{4}[\s\-]?){3}\d{1,7}\b')
        )
)
and (
  strings.icontains(sender.email.domain.tld, "fr")
  or strings.icontains(body.current_thread.text, "france")
)

Detection logic

Scope: outbound message.

Detects messages containing debit card numbers.

  1. outbound message
  2. any of attachments where all hold:
    • any of:
      • .file_extension in $file_extensions_common_archives
      • .file_extension in ('.csv', '.txt', '.xlsx', '.xls')
    • any of file.explode(.) where:
      • .scan.ocr.raw matches '\\b(?:\\d{4}[\\s\\-]?){3}\\d{1,7}\\b'
  3. any of:
    • sender.email.domain.tld contains 'fr'
    • body.current_thread.text contains 'france'

Inspects: attachments[].file_extension, body.current_thread.text, sender.email.domain.tld, type.outbound. Sensors: file.explode, regex.contains, strings.icontains. Reference lists: $file_extensions_common_archives.

Indicators matched (7)

FieldMatchValue
attachments[].file_extensionmember.csv
attachments[].file_extensionmember.txt
attachments[].file_extensionmember.xlsx
attachments[].file_extensionmember.xls
regex.containsregex\b(?:\d{4}[\s\-]?){3}\d{1,7}\b
strings.icontainssubstringfr
strings.icontainssubstringfrance

Stages and Predicates

Stage 1: mql_rule

and
  any(attachments)
    and
      or
        attachments.file_extension in [".csv", ".txt", ".xls", ".xlsx"]
         macro "attachments[].file_extension in file_extensions_common_archives"
      any(file.explode(attachments))
        file.explode(attachments).scan.ocr.raw regex_match "\\b(?:\\d{4}[\\s\\-]?){3}\\d{1,7}\\b"
  or
    body.current_thread.text contains "france"
    sender.email.domain.tld contains "fr"
  type.outbound eq "true"

Indicators

These rows show field, operator, and value matches.

DLP: France Driver's License Number

#
Severity
medium
Type
dlp
Source
github.com/sublime-security/sublime-rules

Detects messages containing French driver's license numbers (Permis de conduire).

Telemetry coverage

PlatformRecord / event type
SublimeInbound email message

Message attributes

  • body
  • body.current_thread
  • sender.email
  • subject
  • type

Rule body

type.outbound
and any([body.current_thread.text, subject.subject],
        // French license: 12 digits (YYAAMMCCCCCX format)
        regex.contains(., '\b\d{12}\b')
)
and any([body.current_thread.text, subject.subject],
        regex.icontains(., 'permis\s+de\s+conduire|driver.?s?\s+licen[cs]e')
)
and (
  strings.icontains(sender.email.domain.tld, "fr")
  or strings.icontains(body.current_thread.text, "france")
)

Detection logic

Scope: outbound message.

Detects messages containing French driver's license numbers (Permis de conduire).

  1. outbound message
  2. any of [body.current_thread.text, subject.subject] where:
    • . matches '\\b\\d{12}\\b'
  3. any of [body.current_thread.text, subject.subject] where:
    • . matches 'permis\\s+de\\s+conduire|driver.?s?\\s+licen[cs]e'
  4. any of:
    • sender.email.domain.tld contains 'fr'
    • body.current_thread.text contains 'france'

Inspects: body.current_thread.text, sender.email.domain.tld, subject.subject, type.outbound. Sensors: regex.contains, regex.icontains, strings.icontains.

Indicators matched (4)

FieldMatchValue
regex.containsregex\b\d{12}\b
regex.icontainsregexpermis\s+de\s+conduire|driver.?s?\s+licen[cs]e
strings.icontainssubstringfr
strings.icontainssubstringfrance

Stages and Predicates

Stage 1: mql_rule

and
  any([body.current_thread.text, subject.subject])
    [body.current_thread.text, subject.subject] regex_match "\\b\\d{12}\\b"
  any([body.current_thread.text, subject.subject])
    [body.current_thread.text, subject.subject] regex_match "permis\\s+de\\s+conduire|driver.?s?\\s+licen[cs]e"
  or
    body.current_thread.text contains "france"
    sender.email.domain.tld contains "fr"
  type.outbound eq "true"

Indicators

These rows show field, operator, and value matches.

DLP: France National ID Card (CNI)

#
Severity
high
Type
dlp
Source
github.com/sublime-security/sublime-rules

Detects messages containing French National ID Card numbers (Carte Nationale d'Identité).

Telemetry coverage

PlatformRecord / event type
SublimeInbound email message

Message attributes

  • body
  • body.current_thread
  • sender.email
  • subject
  • type

Rule body

type.outbound
and any([body.current_thread.text, subject.subject],
        // French CNI: 12 digits or alphanumeric
        regex.contains(., '\b[A-Z0-9]{12}\b')
)
and any([body.current_thread.text, subject.subject],
        regex.icontains(., 'CNI|carte\s+nationale|national\s+ID')
)
and (
  strings.icontains(sender.email.domain.tld, "fr")
  or strings.icontains(body.current_thread.text, "france")
)

Detection logic

Scope: outbound message.

Detects messages containing French National ID Card numbers (Carte Nationale d'Identité).

  1. outbound message
  2. any of [body.current_thread.text, subject.subject] where:
    • . matches '\\b[A-Z0-9]{12}\\b'
  3. any of [body.current_thread.text, subject.subject] where:
    • . matches 'CNI|carte\\s+nationale|national\\s+ID'
  4. any of:
    • sender.email.domain.tld contains 'fr'
    • body.current_thread.text contains 'france'

Inspects: body.current_thread.text, sender.email.domain.tld, subject.subject, type.outbound. Sensors: regex.contains, regex.icontains, strings.icontains.

Indicators matched (4)

FieldMatchValue
regex.containsregex\b[A-Z0-9]{12}\b
regex.icontainsregexCNI|carte\s+nationale|national\s+ID
strings.icontainssubstringfr
strings.icontainssubstringfrance

Stages and Predicates

Stage 1: mql_rule

and
  any([body.current_thread.text, subject.subject])
    [body.current_thread.text, subject.subject] regex_match "CNI|carte\\s+nationale|national\\s+ID"
  any([body.current_thread.text, subject.subject])
    [body.current_thread.text, subject.subject] regex_match "\\b[A-Z0-9]{12}\\b"
  or
    body.current_thread.text contains "france"
    sender.email.domain.tld contains "fr"
  type.outbound eq "true"

Indicators

These rows show field, operator, and value matches.

DLP: France Passport Number

#
Severity
high
Type
dlp
Source
github.com/sublime-security/sublime-rules

Detects messages containing French passport numbers.

Telemetry coverage

PlatformRecord / event type
SublimeInbound email message

Message attributes

  • body
  • body.current_thread
  • sender.email
  • subject
  • type

Rule body

type.outbound
and any([body.current_thread.text, subject.subject],
        // French passport: 2 digits + 2 letters + 5 digits (e.g., 12AB12345)
        regex.contains(., '\b\d{2}[A-Z]{2}\d{5}\b')
)
and any([body.current_thread.text, subject.subject],
        regex.icontains(., 'passeport|passport')
)
and (
  strings.icontains(sender.email.domain.tld, "fr")
  or strings.icontains(body.current_thread.text, "france")
)

Detection logic

Scope: outbound message.

Detects messages containing French passport numbers.

  1. outbound message
  2. any of [body.current_thread.text, subject.subject] where:
    • . matches '\\b\\d{2}[A-Z]{2}\\d{5}\\b'
  3. any of [body.current_thread.text, subject.subject] where:
    • . matches 'passeport|passport'
  4. any of:
    • sender.email.domain.tld contains 'fr'
    • body.current_thread.text contains 'france'

Inspects: body.current_thread.text, sender.email.domain.tld, subject.subject, type.outbound. Sensors: regex.contains, regex.icontains, strings.icontains.

Indicators matched (4)

FieldMatchValue
regex.containsregex\b\d{2}[A-Z]{2}\d{5}\b
regex.icontainsregexpasseport|passport
strings.icontainssubstringfr
strings.icontainssubstringfrance

Stages and Predicates

Stage 1: mql_rule

and
  any([body.current_thread.text, subject.subject])
    [body.current_thread.text, subject.subject] regex_match "\\b\\d{2}[A-Z]{2}\\d{5}\\b"
  any([body.current_thread.text, subject.subject])
    [body.current_thread.text, subject.subject] regex_match "passeport|passport"
  or
    body.current_thread.text contains "france"
    sender.email.domain.tld contains "fr"
  type.outbound eq "true"

Indicators

These rows show field, operator, and value matches.

DLP: France Social Security Number (INSEE)

#
Severity
high
Type
dlp
Source
github.com/sublime-security/sublime-rules

Detects messages containing French Social Security Numbers (Numéro de sécurité sociale).

Telemetry coverage

PlatformRecord / event type
SublimeInbound email message

Message attributes

  • body
  • body.current_thread
  • subject
  • type

Rule body

type.outbound
and any([body.current_thread.text, subject.subject],
        // French INSEE: 15 digits in X YY MM DD DDD CCC KK format
        regex.contains(., '\b[1-378]\s?\d{2}\s?\d{2}\s?\d{2}\s?\d{3}\s?\d{3}\s?\d{2}\b')
)
and any([body.current_thread.text, subject.subject],
        regex.icontains(., 'sécurité\s+sociale|INSEE|NIR')
)

Detection logic

Scope: outbound message.

Detects messages containing French Social Security Numbers (Numéro de sécurité sociale).

  1. outbound message
  2. any of [body.current_thread.text, subject.subject] where:
    • . matches '\\b[1-378]\\s?\\d{2}\\s?\\d{2}\\s?\\d{2}\\s?\\d{3}\\s?\\d{3}\\s?\\d{2}\\b'
  3. any of [body.current_thread.text, subject.subject] where:
    • . matches 'sécurité\\s+sociale|INSEE|NIR'

Inspects: body.current_thread.text, subject.subject, type.outbound. Sensors: regex.contains, regex.icontains.

Indicators matched (2)

FieldMatchValue
regex.containsregex\b[1-378]\s?\d{2}\s?\d{2}\s?\d{2}\s?\d{3}\s?\d{3}\s?\d{2}\b
regex.icontainsregexsécurité\s+sociale|INSEE|NIR

Stages and Predicates

Stage 1: mql_rule

and
  any([body.current_thread.text, subject.subject])
    [body.current_thread.text, subject.subject] regex_match "\\b[1-378]\\s?\\d{2}\\s?\\d{2}\\s?\\d{2}\\s?\\d{3}\\s?\\d{3}\\s?\\d{2}\\b"
  any([body.current_thread.text, subject.subject])
    [body.current_thread.text, subject.subject] regex_match "sécurité\\s+sociale|INSEE|NIR"
  type.outbound eq "true"

Indicators

These rows show field, operator, and value matches.

FieldKindValuesSearch
type.outboundeq
  • true transforms: boolean
field:"type.outbound" kind:eq value:"true"

DLP: France Tax Identification Number (SPI)

#
Severity
medium
Type
dlp
Source
github.com/sublime-security/sublime-rules

Detects messages containing French Tax Identification Numbers (Numéro SPI).

Telemetry coverage

PlatformRecord / event type
SublimeInbound email message

Message attributes

  • body
  • body.current_thread
  • sender.email
  • subject
  • type

Rule body

type.outbound
and any([body.current_thread.text, subject.subject],
        // French Tax ID (SPI): 13 digits
        regex.contains(., '\b\d{13}\b')
)
and any([body.current_thread.text, subject.subject],
        regex.icontains(., 'numéro\s+fiscal|SPI|tax\s+identification')
)
and (
  strings.icontains(sender.email.domain.tld, "fr")
  or strings.icontains(body.current_thread.text, "france")
)

Detection logic

Scope: outbound message.

Detects messages containing French Tax Identification Numbers (Numéro SPI).

  1. outbound message
  2. any of [body.current_thread.text, subject.subject] where:
    • . matches '\\b\\d{13}\\b'
  3. any of [body.current_thread.text, subject.subject] where:
    • . matches 'numéro\\s+fiscal|SPI|tax\\s+identification'
  4. any of:
    • sender.email.domain.tld contains 'fr'
    • body.current_thread.text contains 'france'

Inspects: body.current_thread.text, sender.email.domain.tld, subject.subject, type.outbound. Sensors: regex.contains, regex.icontains, strings.icontains.

Indicators matched (4)

FieldMatchValue
regex.containsregex\b\d{13}\b
regex.icontainsregexnuméro\s+fiscal|SPI|tax\s+identification
strings.icontainssubstringfr
strings.icontainssubstringfrance

Stages and Predicates

Stage 1: mql_rule

and
  any([body.current_thread.text, subject.subject])
    [body.current_thread.text, subject.subject] regex_match "\\b\\d{13}\\b"
  any([body.current_thread.text, subject.subject])
    [body.current_thread.text, subject.subject] regex_match "numéro\\s+fiscal|SPI|tax\\s+identification"
  or
    body.current_thread.text contains "france"
    sender.email.domain.tld contains "fr"
  type.outbound eq "true"

Indicators

These rows show field, operator, and value matches.

DLP: GCP API Key

#
Severity
high
Type
dlp
Source
github.com/sublime-security/sublime-rules

Detects messages containing Google Cloud Platform API keys.

Telemetry coverage

PlatformRecord / event type
SublimeInbound email message

Message attributes

  • body
  • body.current_thread
  • subject
  • type

Rule body

type.outbound
and any([body.current_thread.text, subject.subject],
        // GCP API Key: AIza followed by 35 characters
        regex.contains(., '\bAIza[0-9A-Za-z_-]{35}\b')
)

Detection logic

Scope: outbound message.

Detects messages containing Google Cloud Platform API keys.

  1. outbound message
  2. any of [body.current_thread.text, subject.subject] where:
    • . matches '\\bAIza[0-9A-Za-z_-]{35}\\b'

Inspects: body.current_thread.text, subject.subject, type.outbound. Sensors: regex.contains.

Indicators matched (1)

FieldMatchValue
regex.containsregex\bAIza[0-9A-Za-z_-]{35}\b

Stages and Predicates

Stage 1: mql_rule

and
  any([body.current_thread.text, subject.subject])
    [body.current_thread.text, subject.subject] regex_match "\\bAIza[0-9A-Za-z_-]{35}\\b"
  type.outbound eq "true"

Indicators

These rows show field, operator, and value matches.

FieldKindValuesSearch
type.outboundeq
  • true transforms: boolean
field:"type.outbound" kind:eq value:"true"

DLP: Germany Bank Account Number (IBAN)

#
Severity
medium
Type
dlp
Source
github.com/sublime-security/sublime-rules

Detects messages containing German bank account numbers (IBAN).

Telemetry coverage

PlatformRecord / event type
SublimeInbound email message

Message attributes

  • body
  • body.current_thread
  • subject
  • type

Rule body

type.outbound
and any([body.current_thread.text, subject.subject],
        // German IBAN: DE + 2 check digits + 18 digits
        regex.contains(., '\bDE\d{2}[\s]?\d{4}[\s]?\d{4}[\s]?\d{4}[\s]?\d{4}[\s]?\d{2}\b')
)
and any([body.current_thread.text, subject.subject],
        regex.icontains(., 'IBAN|bankkonto|bank\s+account')
)

Detection logic

Scope: outbound message.

Detects messages containing German bank account numbers (IBAN).

  1. outbound message
  2. any of [body.current_thread.text, subject.subject] where:
    • . matches '\\bDE\\d{2}[\\s]?\\d{4}[\\s]?\\d{4}[\\s]?\\d{4}[\\s]?\\d{4}[\\s]?\\d{2}\\b'
  3. any of [body.current_thread.text, subject.subject] where:
    • . matches 'IBAN|bankkonto|bank\\s+account'

Inspects: body.current_thread.text, subject.subject, type.outbound. Sensors: regex.contains, regex.icontains.

Indicators matched (2)

FieldMatchValue
regex.containsregex\bDE\d{2}[\s]?\d{4}[\s]?\d{4}[\s]?\d{4}[\s]?\d{4}[\s]?\d{2}\b
regex.icontainsregexIBAN|bankkonto|bank\s+account

Stages and Predicates

Stage 1: mql_rule

and
  any([body.current_thread.text, subject.subject])
    [body.current_thread.text, subject.subject] regex_match "IBAN|bankkonto|bank\\s+account"
  any([body.current_thread.text, subject.subject])
    [body.current_thread.text, subject.subject] regex_match "\\bDE\\d{2}[\\s]?\\d{4}[\\s]?\\d{4}[\\s]?\\d{4}[\\s]?\\d{4}[\\s]?\\d{2}\\b"
  type.outbound eq "true"

Indicators

These rows show field, operator, and value matches.

FieldKindValuesSearch
type.outboundeq
  • true transforms: boolean
field:"type.outbound" kind:eq value:"true"

DLP: Germany Driver's License Number

#
Severity
medium
Type
dlp
Source
github.com/sublime-security/sublime-rules

Detects messages containing German driver's license numbers (Führerschein).

Telemetry coverage

PlatformRecord / event type
SublimeInbound email message

Message attributes

  • body
  • body.current_thread
  • subject
  • type

Rule body

type.outbound
and any([body.current_thread.text, subject.subject],
        // German license: 11 alphanumeric (varies by format)
        regex.contains(., '\b[A-Z0-9]{11}\b')
)
and any([body.current_thread.text, subject.subject],
        regex.icontains(., 'führerschein|driver.?s?\s+licen[cs]e')
)

Detection logic

Scope: outbound message.

Detects messages containing German driver's license numbers (Führerschein).

  1. outbound message
  2. any of [body.current_thread.text, subject.subject] where:
    • . matches '\\b[A-Z0-9]{11}\\b'
  3. any of [body.current_thread.text, subject.subject] where:
    • . matches 'führerschein|driver.?s?\\s+licen[cs]e'

Inspects: body.current_thread.text, subject.subject, type.outbound. Sensors: regex.contains, regex.icontains.

Indicators matched (2)

FieldMatchValue
regex.containsregex\b[A-Z0-9]{11}\b
regex.icontainsregexführerschein|driver.?s?\s+licen[cs]e

Stages and Predicates

Stage 1: mql_rule

and
  any([body.current_thread.text, subject.subject])
    [body.current_thread.text, subject.subject] regex_match "\\b[A-Z0-9]{11}\\b"
  any([body.current_thread.text, subject.subject])
    [body.current_thread.text, subject.subject] regex_match "führerschein|driver.?s?\\s+licen[cs]e"
  type.outbound eq "true"

Indicators

These rows show field, operator, and value matches.

FieldKindValuesSearch
type.outboundeq
  • true transforms: boolean
field:"type.outbound" kind:eq value:"true"

DLP: Germany Identity Card Number (Personalausweisnummer)

#
Severity
high
Type
dlp
Source
github.com/sublime-security/sublime-rules

Detects messages containing German Identity Card numbers.

Telemetry coverage

PlatformRecord / event type
SublimeInbound email message

Message attributes

  • body
  • body.current_thread
  • subject
  • type

Rule body

type.outbound
and any([body.current_thread.text, subject.subject],
        // German ID: 10 alphanumeric characters (e.g., L01X00T471)
        regex.contains(., '\b[A-Z]\d{9}|\d[A-Z0-9]{8}\d\b')
)
and any([body.current_thread.text, subject.subject],
        regex.icontains(., 'personalausweis|identity\s+card|Ausweisnummer')
)

Detection logic

Scope: outbound message.

Detects messages containing German Identity Card numbers.

  1. outbound message
  2. any of [body.current_thread.text, subject.subject] where:
    • . matches '\\b[A-Z]\\d{9}|\\d[A-Z0-9]{8}\\d\\b'
  3. any of [body.current_thread.text, subject.subject] where:
    • . matches 'personalausweis|identity\\s+card|Ausweisnummer'

Inspects: body.current_thread.text, subject.subject, type.outbound. Sensors: regex.contains, regex.icontains.

Indicators matched (2)

FieldMatchValue
regex.containsregex\b[A-Z]\d{9}|\d[A-Z0-9]{8}\d\b
regex.icontainsregexpersonalausweis|identity\s+card|Ausweisnummer

Stages and Predicates

Stage 1: mql_rule

and
  any([body.current_thread.text, subject.subject])
    [body.current_thread.text, subject.subject] regex_match "\\b[A-Z]\\d{9}|\\d[A-Z0-9]{8}\\d\\b"
  any([body.current_thread.text, subject.subject])
    [body.current_thread.text, subject.subject] regex_match "personalausweis|identity\\s+card|Ausweisnummer"
  type.outbound eq "true"

Indicators

These rows show field, operator, and value matches.

FieldKindValuesSearch
type.outboundeq
  • true transforms: boolean
field:"type.outbound" kind:eq value:"true"

DLP: Germany Passport Number

#
Severity
high
Type
dlp
Source
github.com/sublime-security/sublime-rules

Detects messages containing German passport numbers (Reisepass).

Telemetry coverage

PlatformRecord / event type
SublimeInbound email message

Message attributes

  • body
  • body.current_thread
  • sender.email
  • subject
  • type

Rule body

type.outbound
and any([body.current_thread.text, subject.subject],
        // German passport: 9 alphanumeric (e.g., C01X00T47)
        regex.contains(., '\b[CFGHJK]\d{8}|[CFGHJK][A-Z0-9]{8}\b')
)
and any([body.current_thread.text, subject.subject],
        regex.icontains(., 'reisepass|passport')
)
and (
  strings.icontains(sender.email.domain.tld, "de")
  or strings.icontains(body.current_thread.text, "germany")
  or strings.icontains(body.current_thread.text, "deutschland")
)

Detection logic

Scope: outbound message.

Detects messages containing German passport numbers (Reisepass).

  1. outbound message
  2. any of [body.current_thread.text, subject.subject] where:
    • . matches '\\b[CFGHJK]\\d{8}|[CFGHJK][A-Z0-9]{8}\\b'
  3. any of [body.current_thread.text, subject.subject] where:
    • . matches 'reisepass|passport'
  4. any of:
    • sender.email.domain.tld contains 'de'
    • body.current_thread.text contains 'germany'
    • body.current_thread.text contains 'deutschland'

Inspects: body.current_thread.text, sender.email.domain.tld, subject.subject, type.outbound. Sensors: regex.contains, regex.icontains, strings.icontains.

Indicators matched (5)

FieldMatchValue
regex.containsregex\b[CFGHJK]\d{8}|[CFGHJK][A-Z0-9]{8}\b
regex.icontainsregexreisepass|passport
strings.icontainssubstringde
strings.icontainssubstringgermany
strings.icontainssubstringdeutschland

Stages and Predicates

Stage 1: mql_rule

and
  any([body.current_thread.text, subject.subject])
    [body.current_thread.text, subject.subject] regex_match "\\b[CFGHJK]\\d{8}|[CFGHJK][A-Z0-9]{8}\\b"
  any([body.current_thread.text, subject.subject])
    [body.current_thread.text, subject.subject] regex_match "reisepass|passport"
  or
    body.current_thread.text contains "deutschland"
    body.current_thread.text contains "germany"
    sender.email.domain.tld contains "de"
  type.outbound eq "true"

Indicators

These rows show field, operator, and value matches.

DLP: Germany Tax Identification Number

#
Severity
medium
Type
dlp
Source
github.com/sublime-security/sublime-rules

Detects messages containing German Tax Identification Numbers (Steueridentifikationsnummer).

Telemetry coverage

PlatformRecord / event type
SublimeInbound email message

Message attributes

  • body
  • body.current_thread
  • subject
  • type

Rule body

type.outbound
and any([body.current_thread.text, subject.subject],
        // German Tax ID: 11 digits
        regex.contains(., '\b\d{11}\b')
)
and any([body.current_thread.text, subject.subject],
        regex.icontains(., 'steueridentifikationsnummer|steuer-ID|tax\s+ID')
)

Detection logic

Scope: outbound message.

Detects messages containing German Tax Identification Numbers (Steueridentifikationsnummer).

  1. outbound message
  2. any of [body.current_thread.text, subject.subject] where:
    • . matches '\\b\\d{11}\\b'
  3. any of [body.current_thread.text, subject.subject] where:
    • . matches 'steueridentifikationsnummer|steuer-ID|tax\\s+ID'

Inspects: body.current_thread.text, subject.subject, type.outbound. Sensors: regex.contains, regex.icontains.

Indicators matched (2)

FieldMatchValue
regex.containsregex\b\d{11}\b
regex.icontainsregexsteueridentifikationsnummer|steuer-ID|tax\s+ID

Stages and Predicates

Stage 1: mql_rule

and
  any([body.current_thread.text, subject.subject])
    [body.current_thread.text, subject.subject] regex_match "\\b\\d{11}\\b"
  any([body.current_thread.text, subject.subject])
    [body.current_thread.text, subject.subject] regex_match "steueridentifikationsnummer|steuer-ID|tax\\s+ID"
  type.outbound eq "true"

Indicators

These rows show field, operator, and value matches.

FieldKindValuesSearch
type.outboundeq
  • true transforms: boolean
field:"type.outbound" kind:eq value:"true"

DLP: GitHub Token

#
Severity
high
Type
dlp
Source
github.com/sublime-security/sublime-rules

Detects messages containing GitHub personal access tokens and OAuth tokens.

Telemetry coverage

PlatformRecord / event type
SublimeInbound email message

Message attributes

  • body
  • body.current_thread
  • subject
  • type

Rule body

type.outbound
and any([body.current_thread.text, subject.subject],
        // GitHub personal access token: ghp_, gho_, ghu_, ghs_, ghr_ followed by alphanumeric
        regex.contains(., '\bgh[pousr]_[A-Za-z0-9]{36,}\b')
)

Detection logic

Scope: outbound message.

Detects messages containing GitHub personal access tokens and OAuth tokens.

  1. outbound message
  2. any of [body.current_thread.text, subject.subject] where:
    • . matches '\\bgh[pousr]_[A-Za-z0-9]{36,}\\b'

Inspects: body.current_thread.text, subject.subject, type.outbound. Sensors: regex.contains.

Indicators matched (1)

FieldMatchValue
regex.containsregex\bgh[pousr]_[A-Za-z0-9]{36,}\b

Stages and Predicates

Stage 1: mql_rule

and
  any([body.current_thread.text, subject.subject])
    [body.current_thread.text, subject.subject] regex_match "\\bgh[pousr]_[A-Za-z0-9]{36,}\\b"
  type.outbound eq "true"

Indicators

These rows show field, operator, and value matches.

FieldKindValuesSearch
type.outboundeq
  • true transforms: boolean
field:"type.outbound" kind:eq value:"true"

DLP: Greece National ID Card

#
Severity
high
Type
dlp
Source
github.com/sublime-security/sublime-rules

Detects messages containing Greek National ID Card numbers.

Telemetry coverage

PlatformRecord / event type
SublimeInbound email message

Message attributes

  • body
  • body.current_thread
  • sender.email
  • subject
  • type

Rule body

type.outbound
and any([body.current_thread.text, subject.subject],
        // Greek ID: 1-2 letters + 6 digits
        regex.contains(., '\b[A-Z]{1,2}\d{6}\b')
)
and any([body.current_thread.text, subject.subject],
        regex.icontains(., 'ταυτότητα|national\s+ID|identity\s+card')
)
and (
  strings.icontains(sender.email.domain.tld, "gr")
  or strings.icontains(body.current_thread.text, "greece")
)

Detection logic

Scope: outbound message.

Detects messages containing Greek National ID Card numbers.

  1. outbound message
  2. any of [body.current_thread.text, subject.subject] where:
    • . matches '\\b[A-Z]{1,2}\\d{6}\\b'
  3. any of [body.current_thread.text, subject.subject] where:
    • . matches 'ταυτότητα|national\\s+ID|identity\\s+card'
  4. any of:
    • sender.email.domain.tld contains 'gr'
    • body.current_thread.text contains 'greece'

Inspects: body.current_thread.text, sender.email.domain.tld, subject.subject, type.outbound. Sensors: regex.contains, regex.icontains, strings.icontains.

Indicators matched (4)

FieldMatchValue
regex.containsregex\b[A-Z]{1,2}\d{6}\b
regex.icontainsregexταυτότητα|national\s+ID|identity\s+card
strings.icontainssubstringgr
strings.icontainssubstringgreece

Stages and Predicates

Stage 1: mql_rule

and
  any([body.current_thread.text, subject.subject])
    [body.current_thread.text, subject.subject] regex_match "\\b[A-Z]{1,2}\\d{6}\\b"
  any([body.current_thread.text, subject.subject])
    [body.current_thread.text, subject.subject] regex_match "ταυτότητα|national\\s+ID|identity\\s+card"
  or
    body.current_thread.text contains "greece"
    sender.email.domain.tld contains "gr"
  type.outbound eq "true"

Indicators

These rows show field, operator, and value matches.

DLP: Greece Social Security Number (AMKA)

#
Severity
high
Type
dlp
Source
github.com/sublime-security/sublime-rules

Detects messages containing Greek Social Security Numbers (AMKA).

Telemetry coverage

PlatformRecord / event type
SublimeInbound email message

Message attributes

  • body
  • body.current_thread
  • subject
  • type

Rule body

type.outbound
and any([body.current_thread.text, subject.subject],
        // AMKA: 11 digits
        regex.contains(., '\b\d{11}\b')
)
and any([body.current_thread.text, subject.subject],
        regex.icontains(., 'AMKA|ΑΜΚΑ|social\s+security')
)

Detection logic

Scope: outbound message.

Detects messages containing Greek Social Security Numbers (AMKA).

  1. outbound message
  2. any of [body.current_thread.text, subject.subject] where:
    • . matches '\\b\\d{11}\\b'
  3. any of [body.current_thread.text, subject.subject] where:
    • . matches 'AMKA|ΑΜΚΑ|social\\s+security'

Inspects: body.current_thread.text, subject.subject, type.outbound. Sensors: regex.contains, regex.icontains.

Indicators matched (2)

FieldMatchValue
regex.containsregex\b\d{11}\b
regex.icontainsregexAMKA|ΑΜΚΑ|social\s+security

Stages and Predicates

Stage 1: mql_rule

and
  any([body.current_thread.text, subject.subject])
    [body.current_thread.text, subject.subject] regex_match "AMKA|ΑΜΚΑ|social\\s+security"
  any([body.current_thread.text, subject.subject])
    [body.current_thread.text, subject.subject] regex_match "\\b\\d{11}\\b"
  type.outbound eq "true"

Indicators

These rows show field, operator, and value matches.

FieldKindValuesSearch
type.outboundeq
  • true transforms: boolean
field:"type.outbound" kind:eq value:"true"

DLP: Greece Tax Identification Number

#
Severity
medium
Type
dlp
Source
github.com/sublime-security/sublime-rules

Detects messages containing Greek Tax Identification Numbers (ΑΦΜ).

Telemetry coverage

PlatformRecord / event type
SublimeInbound email message

Message attributes

  • body
  • body.current_thread
  • subject
  • type

Rule body

type.outbound
and any([body.current_thread.text, subject.subject],
        // Greek Tax ID: 9 digits
        regex.contains(., '\b\d{9}\b')
)
and any([body.current_thread.text, subject.subject],
        regex.icontains(., 'ΑΦΜ|AFM|tax\s+identification')
)

Detection logic

Scope: outbound message.

Detects messages containing Greek Tax Identification Numbers (ΑΦΜ).

  1. outbound message
  2. any of [body.current_thread.text, subject.subject] where:
    • . matches '\\b\\d{9}\\b'
  3. any of [body.current_thread.text, subject.subject] where:
    • . matches 'ΑΦΜ|AFM|tax\\s+identification'

Inspects: body.current_thread.text, subject.subject, type.outbound. Sensors: regex.contains, regex.icontains.

Indicators matched (2)

FieldMatchValue
regex.containsregex\b\d{9}\b
regex.icontainsregexΑΦΜ|AFM|tax\s+identification

Stages and Predicates

Stage 1: mql_rule

and
  any([body.current_thread.text, subject.subject])
    [body.current_thread.text, subject.subject] regex_match "\\b\\d{9}\\b"
  any([body.current_thread.text, subject.subject])
    [body.current_thread.text, subject.subject] regex_match "ΑΦΜ|AFM|tax\\s+identification"
  type.outbound eq "true"

Indicators

These rows show field, operator, and value matches.

FieldKindValuesSearch
type.outboundeq
  • true transforms: boolean
field:"type.outbound" kind:eq value:"true"

DLP: Hungary Personal Identification Number

#
Severity
high
Type
dlp
Source
github.com/sublime-security/sublime-rules

Detects messages containing Hungarian Personal Identification Numbers.

Telemetry coverage

PlatformRecord / event type
SublimeInbound email message

Message attributes

  • body
  • body.current_thread
  • subject
  • type

Rule body

type.outbound
and any([body.current_thread.text, subject.subject],
        // Hungarian PIN: 11 digits
        regex.contains(., '\b[1-8]\d{10}\b')
)
and any([body.current_thread.text, subject.subject],
        regex.icontains(., 'személyi\s+szám|personal\s+identification')
)

Detection logic

Scope: outbound message.

Detects messages containing Hungarian Personal Identification Numbers.

  1. outbound message
  2. any of [body.current_thread.text, subject.subject] where:
    • . matches '\\b[1-8]\\d{10}\\b'
  3. any of [body.current_thread.text, subject.subject] where:
    • . matches 'személyi\\s+szám|personal\\s+identification'

Inspects: body.current_thread.text, subject.subject, type.outbound. Sensors: regex.contains, regex.icontains.

Indicators matched (2)

FieldMatchValue
regex.containsregex\b[1-8]\d{10}\b
regex.icontainsregexszemélyi\s+szám|personal\s+identification

Stages and Predicates

Stage 1: mql_rule

and
  any([body.current_thread.text, subject.subject])
    [body.current_thread.text, subject.subject] regex_match "\\b[1-8]\\d{10}\\b"
  any([body.current_thread.text, subject.subject])
    [body.current_thread.text, subject.subject] regex_match "személyi\\s+szám|personal\\s+identification"
  type.outbound eq "true"

Indicators

These rows show field, operator, and value matches.

FieldKindValuesSearch
type.outboundeq
  • true transforms: boolean
field:"type.outbound" kind:eq value:"true"

DLP: Hungary Social Security Number (TAJ)

#
Severity
high
Type
dlp
Source
github.com/sublime-security/sublime-rules

Detects messages containing Hungarian Social Security Numbers (TAJ).

Telemetry coverage

PlatformRecord / event type
SublimeInbound email message

Message attributes

  • body
  • body.current_thread
  • subject
  • type

Rule body

type.outbound
and any([body.current_thread.text, subject.subject],
        // TAJ: 9 digits in XXX XXX XXX format
        regex.contains(., '\b\d{3}[\s]?\d{3}[\s]?\d{3}\b')
)
and any([body.current_thread.text, subject.subject],
        regex.icontains(., 'TAJ|társadalombiztosítás|social\s+security')
)

Detection logic

Scope: outbound message.

Detects messages containing Hungarian Social Security Numbers (TAJ).

  1. outbound message
  2. any of [body.current_thread.text, subject.subject] where:
    • . matches '\\b\\d{3}[\\s]?\\d{3}[\\s]?\\d{3}\\b'
  3. any of [body.current_thread.text, subject.subject] where:
    • . matches 'TAJ|társadalombiztosítás|social\\s+security'

Inspects: body.current_thread.text, subject.subject, type.outbound. Sensors: regex.contains, regex.icontains.

Indicators matched (2)

FieldMatchValue
regex.containsregex\b\d{3}[\s]?\d{3}[\s]?\d{3}\b
regex.icontainsregexTAJ|társadalombiztosítás|social\s+security

Stages and Predicates

Stage 1: mql_rule

and
  any([body.current_thread.text, subject.subject])
    [body.current_thread.text, subject.subject] regex_match "TAJ|társadalombiztosítás|social\\s+security"
  any([body.current_thread.text, subject.subject])
    [body.current_thread.text, subject.subject] regex_match "\\b\\d{3}[\\s]?\\d{3}[\\s]?\\d{3}\\b"
  type.outbound eq "true"

Indicators

These rows show field, operator, and value matches.

FieldKindValuesSearch
type.outboundeq
  • true transforms: boolean
field:"type.outbound" kind:eq value:"true"

DLP: Hungary Tax Identification Number

#
Severity
medium
Type
dlp
Source
github.com/sublime-security/sublime-rules

Detects messages containing Hungarian Tax Identification Numbers.

Telemetry coverage

PlatformRecord / event type
SublimeInbound email message

Message attributes

  • body
  • body.current_thread
  • subject
  • type

Rule body

type.outbound
and any([body.current_thread.text, subject.subject],
        // Hungarian Tax ID: 10 digits
        regex.contains(., '\b\d{10}\b')
)
and any([body.current_thread.text, subject.subject],
        regex.icontains(., 'adóazonosító|tax\s+identification|adószám')
)

Detection logic

Scope: outbound message.

Detects messages containing Hungarian Tax Identification Numbers.

  1. outbound message
  2. any of [body.current_thread.text, subject.subject] where:
    • . matches '\\b\\d{10}\\b'
  3. any of [body.current_thread.text, subject.subject] where:
    • . matches 'adóazonosító|tax\\s+identification|adószám'

Inspects: body.current_thread.text, subject.subject, type.outbound. Sensors: regex.contains, regex.icontains.

Indicators matched (2)

FieldMatchValue
regex.containsregex\b\d{10}\b
regex.icontainsregexadóazonosító|tax\s+identification|adószám

Stages and Predicates

Stage 1: mql_rule

and
  any([body.current_thread.text, subject.subject])
    [body.current_thread.text, subject.subject] regex_match "\\b\\d{10}\\b"
  any([body.current_thread.text, subject.subject])
    [body.current_thread.text, subject.subject] regex_match "adóazonosító|tax\\s+identification|adószám"
  type.outbound eq "true"

Indicators

These rows show field, operator, and value matches.

FieldKindValuesSearch
type.outboundeq
  • true transforms: boolean
field:"type.outbound" kind:eq value:"true"

DLP: IMEI Number

#
Severity
medium
Type
dlp
Source
github.com/sublime-security/sublime-rules

Detects messages containing International Mobile Equipment Identity (IMEI) numbers.

Telemetry coverage

PlatformRecord / event type
SublimeInbound email message

Message attributes

  • body
  • body.current_thread
  • subject
  • type

Rule body

type.outbound
and any([body.current_thread.text, subject.subject],
        // IMEI: 15 digits
        regex.contains(., '\b\d{15}\b')
)
and any([body.current_thread.text, subject.subject],
        regex.icontains(., 'IMEI|international\s+mobile\s+equipment|device\s+identifier')
)

Detection logic

Scope: outbound message.

Detects messages containing International Mobile Equipment Identity (IMEI) numbers.

  1. outbound message
  2. any of [body.current_thread.text, subject.subject] where:
    • . matches '\\b\\d{15}\\b'
  3. any of [body.current_thread.text, subject.subject] where:
    • . matches 'IMEI|international\\s+mobile\\s+equipment|device\\s+identifier'

Inspects: body.current_thread.text, subject.subject, type.outbound. Sensors: regex.contains, regex.icontains.

Indicators matched (2)

FieldMatchValue
regex.containsregex\b\d{15}\b
regex.icontainsregexIMEI|international\s+mobile\s+equipment|device\s+identifier

Stages and Predicates

Stage 1: mql_rule

and
  any([body.current_thread.text, subject.subject])
    [body.current_thread.text, subject.subject] regex_match "IMEI|international\\s+mobile\\s+equipment|device\\s+identifier"
  any([body.current_thread.text, subject.subject])
    [body.current_thread.text, subject.subject] regex_match "\\b\\d{15}\\b"
  type.outbound eq "true"

Indicators

These rows show field, operator, and value matches.

FieldKindValuesSearch
type.outboundeq
  • true transforms: boolean
field:"type.outbound" kind:eq value:"true"

DLP: IMSI Number

#
Severity
medium
Type
dlp
Source
github.com/sublime-security/sublime-rules

Detects messages containing International Mobile Subscriber Identity (IMSI) numbers.

Telemetry coverage

PlatformRecord / event type
SublimeInbound email message

Message attributes

  • body
  • body.current_thread
  • subject
  • type

Rule body

type.outbound
and any([body.current_thread.text, subject.subject],
        // IMSI: 14-15 digits
        regex.contains(., '\b\d{14,15}\b')
)
and any([body.current_thread.text, subject.subject],
        regex.icontains(., 'IMSI|international\s+mobile\s+subscriber|SIM\s+identifier')
)

Detection logic

Scope: outbound message.

Detects messages containing International Mobile Subscriber Identity (IMSI) numbers.

  1. outbound message
  2. any of [body.current_thread.text, subject.subject] where:
    • . matches '\\b\\d{14,15}\\b'
  3. any of [body.current_thread.text, subject.subject] where:
    • . matches 'IMSI|international\\s+mobile\\s+subscriber|SIM\\s+identifier'

Inspects: body.current_thread.text, subject.subject, type.outbound. Sensors: regex.contains, regex.icontains.

Indicators matched (2)

FieldMatchValue
regex.containsregex\b\d{14,15}\b
regex.icontainsregexIMSI|international\s+mobile\s+subscriber|SIM\s+identifier

Stages and Predicates

Stage 1: mql_rule

and
  any([body.current_thread.text, subject.subject])
    [body.current_thread.text, subject.subject] regex_match "IMSI|international\\s+mobile\\s+subscriber|SIM\\s+identifier"
  any([body.current_thread.text, subject.subject])
    [body.current_thread.text, subject.subject] regex_match "\\b\\d{14,15}\\b"
  type.outbound eq "true"

Indicators

These rows show field, operator, and value matches.

FieldKindValuesSearch
type.outboundeq
  • true transforms: boolean
field:"type.outbound" kind:eq value:"true"

DLP: India Aadhaar Number

#
Severity
high
Type
dlp
Source
github.com/sublime-security/sublime-rules

Detects messages containing Indian Aadhaar identification numbers.

Telemetry coverage

PlatformRecord / event type
SublimeInbound email message

Message attributes

  • body
  • body.current_thread
  • subject
  • type

Rule body

type.outbound
and any([body.current_thread.text, subject.subject],
        // Aadhaar: 12 digits in XXXX XXXX XXXX format
        regex.contains(., '\b\d{4}[\s\-]?\d{4}[\s\-]?\d{4}\b')
)
and any([body.current_thread.text, subject.subject],
        regex.icontains(., 'aadhaar|आधार|UIDAI')
)

Detection logic

Scope: outbound message.

Detects messages containing Indian Aadhaar identification numbers.

  1. outbound message
  2. any of [body.current_thread.text, subject.subject] where:
    • . matches '\\b\\d{4}[\\s\\-]?\\d{4}[\\s\\-]?\\d{4}\\b'
  3. any of [body.current_thread.text, subject.subject] where:
    • . matches 'aadhaar|आधार|UIDAI'

Inspects: body.current_thread.text, subject.subject, type.outbound. Sensors: regex.contains, regex.icontains.

Indicators matched (2)

FieldMatchValue
regex.containsregex\b\d{4}[\s\-]?\d{4}[\s\-]?\d{4}\b
regex.icontainsregexaadhaar|आधार|UIDAI

Stages and Predicates

Stage 1: mql_rule

and
  any([body.current_thread.text, subject.subject])
    [body.current_thread.text, subject.subject] regex_match "\\b\\d{4}[\\s\\-]?\\d{4}[\\s\\-]?\\d{4}\\b"
  any([body.current_thread.text, subject.subject])
    [body.current_thread.text, subject.subject] regex_match "aadhaar|आधार|UIDAI"
  type.outbound eq "true"

Indicators

These rows show field, operator, and value matches.

FieldKindValuesSearch
type.outboundeq
  • true transforms: boolean
field:"type.outbound" kind:eq value:"true"

DLP: India Bank Account Number

#
Severity
medium
Type
dlp
Source
github.com/sublime-security/sublime-rules

Detects messages containing Indian bank account numbers with IFSC codes.

Telemetry coverage

PlatformRecord / event type
SublimeInbound email message

Message attributes

  • body
  • body.current_thread
  • subject
  • type

Rule body

type.outbound
and any([body.current_thread.text, subject.subject],
        // IFSC: 4 letters + 7 alphanumeric (e.g., SBIN0001234)
        // Account: 9-18 digits
        regex.contains(., '\b[A-Z]{4}0[A-Z0-9]{6}\b')
)
and any([body.current_thread.text, subject.subject],
        regex.icontains(., 'IFSC|bank\s+account|account\s+number|खाता')
)

Detection logic

Scope: outbound message.

Detects messages containing Indian bank account numbers with IFSC codes.

  1. outbound message
  2. any of [body.current_thread.text, subject.subject] where:
    • . matches '\\b[A-Z]{4}0[A-Z0-9]{6}\\b'
  3. any of [body.current_thread.text, subject.subject] where:
    • . matches 'IFSC|bank\\s+account|account\\s+number|खाता'

Inspects: body.current_thread.text, subject.subject, type.outbound. Sensors: regex.contains, regex.icontains.

Indicators matched (2)

FieldMatchValue
regex.containsregex\b[A-Z]{4}0[A-Z0-9]{6}\b
regex.icontainsregexIFSC|bank\s+account|account\s+number|खाता

Stages and Predicates

Stage 1: mql_rule

and
  any([body.current_thread.text, subject.subject])
    [body.current_thread.text, subject.subject] regex_match "IFSC|bank\\s+account|account\\s+number|खाता"
  any([body.current_thread.text, subject.subject])
    [body.current_thread.text, subject.subject] regex_match "\\b[A-Z]{4}0[A-Z0-9]{6}\\b"
  type.outbound eq "true"

Indicators

These rows show field, operator, and value matches.

FieldKindValuesSearch
type.outboundeq
  • true transforms: boolean
field:"type.outbound" kind:eq value:"true"

DLP: India PAN Number

#
Severity
high
Type
dlp
Source
github.com/sublime-security/sublime-rules

Detects messages containing Indian Permanent Account Numbers (PAN).

Telemetry coverage

PlatformRecord / event type
SublimeInbound email message

Message attributes

  • body
  • body.current_thread
  • subject
  • type

Rule body

type.outbound
and any([body.current_thread.text, subject.subject],
        // PAN: 5 letters + 4 digits + 1 letter (e.g., ABCDE1234F)
        regex.contains(., '\b[A-Z]{5}\d{4}[A-Z]\b')
)
and any([body.current_thread.text, subject.subject],
        regex.icontains(., 'PAN|permanent\s+account|पैन')
)

Detection logic

Scope: outbound message.

Detects messages containing Indian Permanent Account Numbers (PAN).

  1. outbound message
  2. any of [body.current_thread.text, subject.subject] where:
    • . matches '\\b[A-Z]{5}\\d{4}[A-Z]\\b'
  3. any of [body.current_thread.text, subject.subject] where:
    • . matches 'PAN|permanent\\s+account|पैन'

Inspects: body.current_thread.text, subject.subject, type.outbound. Sensors: regex.contains, regex.icontains.

Indicators matched (2)

FieldMatchValue
regex.containsregex\b[A-Z]{5}\d{4}[A-Z]\b
regex.icontainsregexPAN|permanent\s+account|पैन

Stages and Predicates

Stage 1: mql_rule

and
  any([body.current_thread.text, subject.subject])
    [body.current_thread.text, subject.subject] regex_match "PAN|permanent\\s+account|पैन"
  any([body.current_thread.text, subject.subject])
    [body.current_thread.text, subject.subject] regex_match "\\b[A-Z]{5}\\d{4}[A-Z]\\b"
  type.outbound eq "true"

Indicators

These rows show field, operator, and value matches.

FieldKindValuesSearch
type.outboundeq
  • true transforms: boolean
field:"type.outbound" kind:eq value:"true"

DLP: India Passport Number

#
Severity
high
Type
dlp
Source
github.com/sublime-security/sublime-rules

Detects messages containing Indian passport numbers.

Telemetry coverage

PlatformRecord / event type
SublimeInbound email message

Message attributes

  • body
  • body.current_thread
  • sender.email
  • subject
  • type

Rule body

type.outbound
and any([body.current_thread.text, subject.subject],
        // Indian passport: 1 letter + 7 digits
        regex.contains(., '\b[A-Z]\d{7}\b')
)
and any([body.current_thread.text, subject.subject],
        regex.icontains(., 'passport|पासपोर्ट|travel\s+document')
)
and (
  strings.icontains(sender.email.domain.tld, "in")
  or strings.icontains(body.current_thread.text, "india")
)

Detection logic

Scope: outbound message.

Detects messages containing Indian passport numbers.

  1. outbound message
  2. any of [body.current_thread.text, subject.subject] where:
    • . matches '\\b[A-Z]\\d{7}\\b'
  3. any of [body.current_thread.text, subject.subject] where:
    • . matches 'passport|पासपोर्ट|travel\\s+document'
  4. any of:
    • sender.email.domain.tld contains 'in'
    • body.current_thread.text contains 'india'

Inspects: body.current_thread.text, sender.email.domain.tld, subject.subject, type.outbound. Sensors: regex.contains, regex.icontains, strings.icontains.

Indicators matched (4)

FieldMatchValue
regex.containsregex\b[A-Z]\d{7}\b
regex.icontainsregexpassport|पासपोर्ट|travel\s+document
strings.icontainssubstringin
strings.icontainssubstringindia

Stages and Predicates

Stage 1: mql_rule

and
  any([body.current_thread.text, subject.subject])
    [body.current_thread.text, subject.subject] regex_match "\\b[A-Z]\\d{7}\\b"
  any([body.current_thread.text, subject.subject])
    [body.current_thread.text, subject.subject] regex_match "passport|पासपोर्ट|travel\\s+document"
  or
    body.current_thread.text contains "india"
    sender.email.domain.tld contains "in"
  type.outbound eq "true"

Indicators

These rows show field, operator, and value matches.

DLP: IP Address

#
Severity
low
Type
dlp
Source
github.com/sublime-security/sublime-rules

Detects messages containing IP addresses (IPv4 and IPv6).

Telemetry coverage

PlatformRecord / event type
SublimeInbound email message

Message attributes

  • body
  • body.current_thread
  • subject
  • type

Rule body

type.outbound
and any([body.current_thread.text, subject.subject],
        // IPv4 address
        regex.contains(., '\b(?:(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.){3}(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\b')
        // IPv6 address
        or regex.contains(., '\b(?:[0-9a-fA-F]{1,4}:){7}[0-9a-fA-F]{1,4}\b')
)
and any([body.current_thread.text, subject.subject],
        regex.icontains(., 'ip\s+address|server|network|infrastructure')
)

Detection logic

Scope: outbound message.

Detects messages containing IP addresses (IPv4 and IPv6).

  1. outbound message
  2. any of [body.current_thread.text, subject.subject] where any holds:
    • . matches '\\b(?:(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\\.){3}(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\\b'
    • . matches '\\b(?:[0-9a-fA-F]{1,4}:){7}[0-9a-fA-F]{1,4}\\b'
  3. any of [body.current_thread.text, subject.subject] where:
    • . matches 'ip\\s+address|server|network|infrastructure'

Inspects: body.current_thread.text, subject.subject, type.outbound. Sensors: regex.contains, regex.icontains.

Indicators matched (3)

FieldMatchValue
regex.containsregex\b(?:(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.){3}(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\b
regex.containsregex\b(?:[0-9a-fA-F]{1,4}:){7}[0-9a-fA-F]{1,4}\b
regex.icontainsregexip\s+address|server|network|infrastructure

Stages and Predicates

Stage 1: mql_rule

and
  any([body.current_thread.text, subject.subject])
    or
      [body.current_thread.text, subject.subject] regex_match "\\b(?:(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\\.){3}(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\\b"
      [body.current_thread.text, subject.subject] regex_match "\\b(?:[0-9a-fA-F]{1,4}:){7}[0-9a-fA-F]{1,4}\\b"
  any([body.current_thread.text, subject.subject])
    [body.current_thread.text, subject.subject] regex_match "ip\\s+address|server|network|infrastructure"
  type.outbound eq "true"

Indicators

These rows show field, operator, and value matches.

FieldKindValuesSearch
type.outboundeq
  • true transforms: boolean
field:"type.outbound" kind:eq value:"true"

DLP: Ireland Personal Public Service (PPS) Number

#
Severity
high
Type
dlp
Source
github.com/sublime-security/sublime-rules

Detects messages containing Irish Personal Public Service Numbers.

Telemetry coverage

PlatformRecord / event type
SublimeInbound email message

Message attributes

  • body
  • body.current_thread
  • subject
  • type

Rule body

type.outbound
and any([body.current_thread.text, subject.subject],
        // Irish PPS: 7 digits + 1-2 letters (e.g., 1234567A or 1234567AB)
        regex.contains(., '\b\d{7}[A-Z]{1,2}\b')
)
and any([body.current_thread.text, subject.subject],
        regex.icontains(., 'PPS|personal\s+public\s+service')
)

Detection logic

Scope: outbound message.

Detects messages containing Irish Personal Public Service Numbers.

  1. outbound message
  2. any of [body.current_thread.text, subject.subject] where:
    • . matches '\\b\\d{7}[A-Z]{1,2}\\b'
  3. any of [body.current_thread.text, subject.subject] where:
    • . matches 'PPS|personal\\s+public\\s+service'

Inspects: body.current_thread.text, subject.subject, type.outbound. Sensors: regex.contains, regex.icontains.

Indicators matched (2)

FieldMatchValue
regex.containsregex\b\d{7}[A-Z]{1,2}\b
regex.icontainsregexPPS|personal\s+public\s+service

Stages and Predicates

Stage 1: mql_rule

and
  any([body.current_thread.text, subject.subject])
    [body.current_thread.text, subject.subject] regex_match "PPS|personal\\s+public\\s+service"
  any([body.current_thread.text, subject.subject])
    [body.current_thread.text, subject.subject] regex_match "\\b\\d{7}[A-Z]{1,2}\\b"
  type.outbound eq "true"

Indicators

These rows show field, operator, and value matches.

FieldKindValuesSearch
type.outboundeq
  • true transforms: boolean
field:"type.outbound" kind:eq value:"true"

DLP: Israel Bank Account Number

#
Severity
medium
Type
dlp
Source
github.com/sublime-security/sublime-rules

Detects messages containing Israeli bank account numbers.

Telemetry coverage

PlatformRecord / event type
SublimeInbound email message

Message attributes

  • body
  • body.current_thread
  • sender.email
  • subject
  • type

Rule body

type.outbound
and any([body.current_thread.text, subject.subject],
        // Israeli bank account: typically 6-9 digits
        regex.contains(., '\b\d{6,9}\b')
)
and any([body.current_thread.text, subject.subject],
        regex.icontains(., 'bank\s+account|account\s+number|חשבון\s+בנק')
)
and (
  strings.icontains(sender.email.domain.tld, "il")
  or strings.icontains(body.current_thread.text, "israel")
)

Detection logic

Scope: outbound message.

Detects messages containing Israeli bank account numbers.

  1. outbound message
  2. any of [body.current_thread.text, subject.subject] where:
    • . matches '\\b\\d{6,9}\\b'
  3. any of [body.current_thread.text, subject.subject] where:
    • . matches 'bank\\s+account|account\\s+number|חשבון\\s+בנק'
  4. any of:
    • sender.email.domain.tld contains 'il'
    • body.current_thread.text contains 'israel'

Inspects: body.current_thread.text, sender.email.domain.tld, subject.subject, type.outbound. Sensors: regex.contains, regex.icontains, strings.icontains.

Indicators matched (4)

FieldMatchValue
regex.containsregex\b\d{6,9}\b
regex.icontainsregexbank\s+account|account\s+number|חשבון\s+בנק
strings.icontainssubstringil
strings.icontainssubstringisrael

Stages and Predicates

Stage 1: mql_rule

and
  any([body.current_thread.text, subject.subject])
    [body.current_thread.text, subject.subject] regex_match "\\b\\d{6,9}\\b"
  any([body.current_thread.text, subject.subject])
    [body.current_thread.text, subject.subject] regex_match "bank\\s+account|account\\s+number|חשבון\\s+בנק"
  or
    body.current_thread.text contains "israel"
    sender.email.domain.tld contains "il"
  type.outbound eq "true"

Indicators

These rows show field, operator, and value matches.

DLP: Israel Credit Card Number

#
Severity
high
Type
dlp
Source
github.com/sublime-security/sublime-rules

Detects messages containing credit card numbers.

Telemetry coverage

PlatformRecord / event type
SublimeInbound email message

Message attributes

  • attachments
  • body
  • body.current_thread
  • sender.email
  • type

Rule body

type.outbound
and any(attachments,
        (
          .file_extension in~ $file_extensions_common_archives
          or .file_extension in~ ('.csv', '.txt', '.xlsx', '.xls')
        )
        and any(file.explode(.),
                regex.contains(.scan.ocr.raw, '\b(?:\d{4}[\s\-]?){3}\d{1,7}\b')
        )
)
and (
  strings.icontains(sender.email.domain.tld, "il")
  or strings.icontains(body.current_thread.text, "israel")
)

Detection logic

Scope: outbound message.

Detects messages containing credit card numbers.

  1. outbound message
  2. any of attachments where all hold:
    • any of:
      • .file_extension in $file_extensions_common_archives
      • .file_extension in ('.csv', '.txt', '.xlsx', '.xls')
    • any of file.explode(.) where:
      • .scan.ocr.raw matches '\\b(?:\\d{4}[\\s\\-]?){3}\\d{1,7}\\b'
  3. any of:
    • sender.email.domain.tld contains 'il'
    • body.current_thread.text contains 'israel'

Inspects: attachments[].file_extension, body.current_thread.text, sender.email.domain.tld, type.outbound. Sensors: file.explode, regex.contains, strings.icontains. Reference lists: $file_extensions_common_archives.

Indicators matched (7)

FieldMatchValue
attachments[].file_extensionmember.csv
attachments[].file_extensionmember.txt
attachments[].file_extensionmember.xlsx
attachments[].file_extensionmember.xls
regex.containsregex\b(?:\d{4}[\s\-]?){3}\d{1,7}\b
strings.icontainssubstringil
strings.icontainssubstringisrael

Stages and Predicates

Stage 1: mql_rule

and
  any(attachments)
    and
      or
        attachments.file_extension in [".csv", ".txt", ".xls", ".xlsx"]
         macro "attachments[].file_extension in file_extensions_common_archives"
      any(file.explode(attachments))
        file.explode(attachments).scan.ocr.raw regex_match "\\b(?:\\d{4}[\\s\\-]?){3}\\d{1,7}\\b"
  or
    body.current_thread.text contains "israel"
    sender.email.domain.tld contains "il"
  type.outbound eq "true"

Indicators

These rows show field, operator, and value matches.

DLP: Israel National ID

#
Severity
high
Type
dlp
Source
github.com/sublime-security/sublime-rules

Detects messages containing Israeli National ID numbers (Teudat Zehut).

Telemetry coverage

PlatformRecord / event type
SublimeInbound email message

Message attributes

  • body
  • body.current_thread
  • subject
  • type

Rule body

type.outbound
and any([body.current_thread.text, subject.subject],
        // Israeli ID: 9 digits
        regex.contains(., '\b\d{9}\b')
)
and any([body.current_thread.text, subject.subject],
        regex.icontains(., 'teudat\s+zehut|national\s+ID|ת\.?ז\.?|תעודת\s+זהות')
)

Detection logic

Scope: outbound message.

Detects messages containing Israeli National ID numbers (Teudat Zehut).

  1. outbound message
  2. any of [body.current_thread.text, subject.subject] where:
    • . matches '\\b\\d{9}\\b'
  3. any of [body.current_thread.text, subject.subject] where:
    • . matches 'teudat\\s+zehut|national\\s+ID|ת\\.?ז\\.?|תעודת\\s+זהות'

Inspects: body.current_thread.text, subject.subject, type.outbound. Sensors: regex.contains, regex.icontains.

Indicators matched (2)

FieldMatchValue
regex.containsregex\b\d{9}\b
regex.icontainsregexteudat\s+zehut|national\s+ID|ת\.?ז\.?|תעודת\s+זהות

Stages and Predicates

Stage 1: mql_rule

and
  any([body.current_thread.text, subject.subject])
    [body.current_thread.text, subject.subject] regex_match "\\b\\d{9}\\b"
  any([body.current_thread.text, subject.subject])
    [body.current_thread.text, subject.subject] regex_match "teudat\\s+zehut|national\\s+ID|ת\\.?ז\\.?|תעודת\\s+זהות"
  type.outbound eq "true"

Indicators

These rows show field, operator, and value matches.

FieldKindValuesSearch
type.outboundeq
  • true transforms: boolean
field:"type.outbound" kind:eq value:"true"

DLP: Israel SWIFT Code

#
Severity
medium
Type
dlp
Source
github.com/sublime-security/sublime-rules

Detects messages containing Israeli SWIFT/BIC codes for financial institutions.

Telemetry coverage

PlatformRecord / event type
SublimeInbound email message

Message attributes

  • body
  • body.current_thread
  • subject
  • type

Rule body

type.outbound
and any(ml.logo_detect(beta.message_screenshot()).brands, strings.ilike(.name, "*bank*", "*financial*"))
and any([body.current_thread.text, subject.subject],
        // SWIFT code: 4 letters (bank) + 2 letters (IL) + 2 chars (location) + optional 3 chars (branch)
        regex.contains(., '\b[A-Z]{4}IL[A-Z0-9]{2}(?:[A-Z0-9]{3})?\b')
)

Detection logic

Scope: outbound message.

Detects messages containing Israeli SWIFT/BIC codes for financial institutions.

  1. outbound message
  2. any of ml.logo_detect(beta.message_screenshot()).brands where:
    • .name matches any of 2 patterns
      • *bank*
      • *financial*
  3. any of [body.current_thread.text, subject.subject] where:
    • . matches '\\b[A-Z]{4}IL[A-Z0-9]{2}(?:[A-Z0-9]{3})?\\b'

Inspects: body.current_thread.text, subject.subject, type.outbound. Sensors: beta.message_screenshot, ml.logo_detect, regex.contains, strings.ilike.

Indicators matched (3)

FieldMatchValue
strings.ilikesubstring*bank*
strings.ilikesubstring*financial*
regex.containsregex\b[A-Z]{4}IL[A-Z0-9]{2}(?:[A-Z0-9]{3})?\b

Stages and Predicates

Stage 1: mql_rule

and
  any(ml.logo_detect(beta.message_screenshot()).brands)
    or
      ml.logo_detect(beta.message_screenshot()).brands.name match "bank"
      ml.logo_detect(beta.message_screenshot()).brands.name match "financial"
  any([body.current_thread.text, subject.subject])
    [body.current_thread.text, subject.subject] regex_match "\\b[A-Z]{4}IL[A-Z0-9]{2}(?:[A-Z0-9]{3})?\\b"
  type.outbound eq "true"

Indicators

These rows show field, operator, and value matches.

FieldKindValuesSearch
type.outboundeq
  • true transforms: boolean
field:"type.outbound" kind:eq value:"true"

DLP: Italy Fiscal Code

#
Severity
high
Type
dlp
Source
github.com/sublime-security/sublime-rules

Detects messages containing Italian Fiscal Codes (Codice Fiscale).

Telemetry coverage

PlatformRecord / event type
SublimeInbound email message

Message attributes

  • body
  • body.current_thread
  • subject
  • type

Rule body

type.outbound
and any([body.current_thread.text, subject.subject],
        // Italian Fiscal Code: 16 alphanumeric (e.g., RSSMRA85T10A562S)
        regex.contains(., '\b[A-Z]{6}\d{2}[A-Z]\d{2}[A-Z]\d{3}[A-Z]\b')
)
and any([body.current_thread.text, subject.subject],
        regex.icontains(., 'codice\s+fiscale|fiscal\s+code')
)

Detection logic

Scope: outbound message.

Detects messages containing Italian Fiscal Codes (Codice Fiscale).

  1. outbound message
  2. any of [body.current_thread.text, subject.subject] where:
    • . matches '\\b[A-Z]{6}\\d{2}[A-Z]\\d{2}[A-Z]\\d{3}[A-Z]\\b'
  3. any of [body.current_thread.text, subject.subject] where:
    • . matches 'codice\\s+fiscale|fiscal\\s+code'

Inspects: body.current_thread.text, subject.subject, type.outbound. Sensors: regex.contains, regex.icontains.

Indicators matched (2)

FieldMatchValue
regex.containsregex\b[A-Z]{6}\d{2}[A-Z]\d{2}[A-Z]\d{3}[A-Z]\b
regex.icontainsregexcodice\s+fiscale|fiscal\s+code

Stages and Predicates

Stage 1: mql_rule

and
  any([body.current_thread.text, subject.subject])
    [body.current_thread.text, subject.subject] regex_match "\\b[A-Z]{6}\\d{2}[A-Z]\\d{2}[A-Z]\\d{3}[A-Z]\\b"
  any([body.current_thread.text, subject.subject])
    [body.current_thread.text, subject.subject] regex_match "codice\\s+fiscale|fiscal\\s+code"
  type.outbound eq "true"

Indicators

These rows show field, operator, and value matches.

FieldKindValuesSearch
type.outboundeq
  • true transforms: boolean
field:"type.outbound" kind:eq value:"true"

DLP: Japan Bank Account Number

#
Severity
medium
Type
dlp
Source
github.com/sublime-security/sublime-rules

Detects messages containing Japanese bank account numbers.

Telemetry coverage

PlatformRecord / event type
SublimeInbound email message

Message attributes

  • body
  • body.current_thread
  • sender.email
  • subject
  • type

Rule body

type.outbound
and any([body.current_thread.text, subject.subject],
        // Japanese bank account: typically 7 digits
        regex.contains(., '\b\d{7}\b')
)
and any([body.current_thread.text, subject.subject],
        regex.icontains(., 'bank\s+account|口座番号|銀行口座|account\s+number')
)
and (
  strings.icontains(sender.email.domain.tld, "jp")
  or strings.icontains(body.current_thread.text, "japan")
)

Detection logic

Scope: outbound message.

Detects messages containing Japanese bank account numbers.

  1. outbound message
  2. any of [body.current_thread.text, subject.subject] where:
    • . matches '\\b\\d{7}\\b'
  3. any of [body.current_thread.text, subject.subject] where:
    • . matches 'bank\\s+account|口座番号|銀行口座|account\\s+number'
  4. any of:
    • sender.email.domain.tld contains 'jp'
    • body.current_thread.text contains 'japan'

Inspects: body.current_thread.text, sender.email.domain.tld, subject.subject, type.outbound. Sensors: regex.contains, regex.icontains, strings.icontains.

Indicators matched (4)

FieldMatchValue
regex.containsregex\b\d{7}\b
regex.icontainsregexbank\s+account|口座番号|銀行口座|account\s+number
strings.icontainssubstringjp
strings.icontainssubstringjapan

Stages and Predicates

Stage 1: mql_rule

and
  any([body.current_thread.text, subject.subject])
    [body.current_thread.text, subject.subject] regex_match "\\b\\d{7}\\b"
  any([body.current_thread.text, subject.subject])
    [body.current_thread.text, subject.subject] regex_match "bank\\s+account|口座番号|銀行口座|account\\s+number"
  or
    body.current_thread.text contains "japan"
    sender.email.domain.tld contains "jp"
  type.outbound eq "true"

Indicators

These rows show field, operator, and value matches.

DLP: Japan Credit Card Number

#
Severity
high
Type
dlp
Source
github.com/sublime-security/sublime-rules

Detects messages containing credit card numbers.

Telemetry coverage

PlatformRecord / event type
SublimeInbound email message

Message attributes

  • attachments
  • body
  • body.current_thread
  • sender.email
  • type

Rule body

type.outbound
and any(attachments,
        (
          .file_extension in~ $file_extensions_common_archives
          or .file_extension in~ ('.csv', '.txt', '.xlsx', '.xls')
        )
        and any(file.explode(.),
                regex.contains(.scan.ocr.raw, '\b(?:\d{4}[\s\-]?){3}\d{1,7}\b')
        )
)
and (
  strings.icontains(sender.email.domain.tld, "jp")
  or strings.icontains(body.current_thread.text, "japan")
)

Detection logic

Scope: outbound message.

Detects messages containing credit card numbers.

  1. outbound message
  2. any of attachments where all hold:
    • any of:
      • .file_extension in $file_extensions_common_archives
      • .file_extension in ('.csv', '.txt', '.xlsx', '.xls')
    • any of file.explode(.) where:
      • .scan.ocr.raw matches '\\b(?:\\d{4}[\\s\\-]?){3}\\d{1,7}\\b'
  3. any of:
    • sender.email.domain.tld contains 'jp'
    • body.current_thread.text contains 'japan'

Inspects: attachments[].file_extension, body.current_thread.text, sender.email.domain.tld, type.outbound. Sensors: file.explode, regex.contains, strings.icontains. Reference lists: $file_extensions_common_archives.

Indicators matched (7)

FieldMatchValue
attachments[].file_extensionmember.csv
attachments[].file_extensionmember.txt
attachments[].file_extensionmember.xlsx
attachments[].file_extensionmember.xls
regex.containsregex\b(?:\d{4}[\s\-]?){3}\d{1,7}\b
strings.icontainssubstringjp
strings.icontainssubstringjapan

Stages and Predicates

Stage 1: mql_rule

and
  any(attachments)
    and
      or
        attachments.file_extension in [".csv", ".txt", ".xls", ".xlsx"]
         macro "attachments[].file_extension in file_extensions_common_archives"
      any(file.explode(attachments))
        file.explode(attachments).scan.ocr.raw regex_match "\\b(?:\\d{4}[\\s\\-]?){3}\\d{1,7}\\b"
  or
    body.current_thread.text contains "japan"
    sender.email.domain.tld contains "jp"
  type.outbound eq "true"

Indicators

These rows show field, operator, and value matches.

DLP: Japan Driver's License Number

#
Severity
medium
Type
dlp
Source
github.com/sublime-security/sublime-rules

Detects messages containing Japanese driver's license numbers.

Telemetry coverage

PlatformRecord / event type
SublimeInbound email message

Message attributes

  • body
  • body.current_thread
  • subject
  • type

Rule body

type.outbound
and any([body.current_thread.text, subject.subject],
        // Driver's license: 12 digits
        regex.contains(., '\b\d{12}\b')
)
and any([body.current_thread.text, subject.subject],
        regex.icontains(., 'driver.?s?\s+licen[cs]e|運転免許証|免許証')
)

Detection logic

Scope: outbound message.

Detects messages containing Japanese driver's license numbers.

  1. outbound message
  2. any of [body.current_thread.text, subject.subject] where:
    • . matches '\\b\\d{12}\\b'
  3. any of [body.current_thread.text, subject.subject] where:
    • . matches 'driver.?s?\\s+licen[cs]e|運転免許証|免許証'

Inspects: body.current_thread.text, subject.subject, type.outbound. Sensors: regex.contains, regex.icontains.

Indicators matched (2)

FieldMatchValue
regex.containsregex\b\d{12}\b
regex.icontainsregexdriver.?s?\s+licen[cs]e|運転免許証|免許証

Stages and Predicates

Stage 1: mql_rule

and
  any([body.current_thread.text, subject.subject])
    [body.current_thread.text, subject.subject] regex_match "\\b\\d{12}\\b"
  any([body.current_thread.text, subject.subject])
    [body.current_thread.text, subject.subject] regex_match "driver.?s?\\s+licen[cs]e|運転免許証|免許証"
  type.outbound eq "true"

Indicators

These rows show field, operator, and value matches.

FieldKindValuesSearch
type.outboundeq
  • true transforms: boolean
field:"type.outbound" kind:eq value:"true"

DLP: Japan MyNumber ID

#
Severity
high
Type
dlp
Source
github.com/sublime-security/sublime-rules

Detects messages containing Japanese MyNumber identification numbers.

Telemetry coverage

PlatformRecord / event type
SublimeInbound email message

Message attributes

  • body
  • body.current_thread
  • subject
  • type

Rule body

type.outbound
and any([body.current_thread.text, subject.subject],
        // MyNumber: 12 digits
        regex.contains(., '\b\d{4}[\s\-]?\d{4}[\s\-]?\d{4}\b')
)
and any([body.current_thread.text, subject.subject],
        regex.icontains(., 'MyNumber|マイナンバー|個人番号')
)

Detection logic

Scope: outbound message.

Detects messages containing Japanese MyNumber identification numbers.

  1. outbound message
  2. any of [body.current_thread.text, subject.subject] where:
    • . matches '\\b\\d{4}[\\s\\-]?\\d{4}[\\s\\-]?\\d{4}\\b'
  3. any of [body.current_thread.text, subject.subject] where:
    • . matches 'MyNumber|マイナンバー|個人番号'

Inspects: body.current_thread.text, subject.subject, type.outbound. Sensors: regex.contains, regex.icontains.

Indicators matched (2)

FieldMatchValue
regex.containsregex\b\d{4}[\s\-]?\d{4}[\s\-]?\d{4}\b
regex.icontainsregexMyNumber|マイナンバー|個人番号

Stages and Predicates

Stage 1: mql_rule

and
  any([body.current_thread.text, subject.subject])
    [body.current_thread.text, subject.subject] regex_match "MyNumber|マイナンバー|個人番号"
  any([body.current_thread.text, subject.subject])
    [body.current_thread.text, subject.subject] regex_match "\\b\\d{4}[\\s\\-]?\\d{4}[\\s\\-]?\\d{4}\\b"
  type.outbound eq "true"

Indicators

These rows show field, operator, and value matches.

FieldKindValuesSearch
type.outboundeq
  • true transforms: boolean
field:"type.outbound" kind:eq value:"true"

DLP: Japan Passport Number

#
Severity
high
Type
dlp
Source
github.com/sublime-security/sublime-rules

Detects messages containing Japanese passport numbers.

Telemetry coverage

PlatformRecord / event type
SublimeInbound email message

Message attributes

  • body
  • body.current_thread
  • sender.email
  • subject
  • type

Rule body

type.outbound
and any([body.current_thread.text, subject.subject],
        // Japanese passport: 2 letters + 7 digits
        regex.contains(., '\b[A-Z]{2}\d{7}\b')
)
and any([body.current_thread.text, subject.subject],
        regex.icontains(., 'passport|パスポート|旅券')
)
and (
  strings.icontains(sender.email.domain.tld, "jp")
  or strings.icontains(body.current_thread.text, "japan")
  or strings.icontains(body.current_thread.text, "日本")
)

Detection logic

Scope: outbound message.

Detects messages containing Japanese passport numbers.

  1. outbound message
  2. any of [body.current_thread.text, subject.subject] where:
    • . matches '\\b[A-Z]{2}\\d{7}\\b'
  3. any of [body.current_thread.text, subject.subject] where:
    • . matches 'passport|パスポート|旅券'
  4. any of:
    • sender.email.domain.tld contains 'jp'
    • body.current_thread.text contains 'japan'
    • body.current_thread.text contains '日本'

Inspects: body.current_thread.text, sender.email.domain.tld, subject.subject, type.outbound. Sensors: regex.contains, regex.icontains, strings.icontains.

Indicators matched (5)

FieldMatchValue
regex.containsregex\b[A-Z]{2}\d{7}\b
regex.icontainsregexpassport|パスポート|旅券
strings.icontainssubstringjp
strings.icontainssubstringjapan
strings.icontainssubstring日本

Stages and Predicates

Stage 1: mql_rule

and
  any([body.current_thread.text, subject.subject])
    [body.current_thread.text, subject.subject] regex_match "\\b[A-Z]{2}\\d{7}\\b"
  any([body.current_thread.text, subject.subject])
    [body.current_thread.text, subject.subject] regex_match "passport|パスポート|旅券"
  or
    body.current_thread.text contains "japan"
    body.current_thread.text contains "日本"
    sender.email.domain.tld contains "jp"
  type.outbound eq "true"

Indicators

These rows show field, operator, and value matches.

DLP: Japan Social Insurance Number

#
Severity
high
Type
dlp
Source
github.com/sublime-security/sublime-rules

Detects messages containing Japanese Social Insurance Numbers.

Telemetry coverage

PlatformRecord / event type
SublimeInbound email message

Message attributes

  • body
  • body.current_thread
  • subject
  • type

Rule body

type.outbound
and any([body.current_thread.text, subject.subject],
        // Social Insurance Number: 10 digits
        regex.contains(., '\b\d{4}[\s\-]?\d{6}\b')
)
and any([body.current_thread.text, subject.subject],
        regex.icontains(., 'social\s+insurance|基礎年金番号|年金手帳')
)

Detection logic

Scope: outbound message.

Detects messages containing Japanese Social Insurance Numbers.

  1. outbound message
  2. any of [body.current_thread.text, subject.subject] where:
    • . matches '\\b\\d{4}[\\s\\-]?\\d{6}\\b'
  3. any of [body.current_thread.text, subject.subject] where:
    • . matches 'social\\s+insurance|基礎年金番号|年金手帳'

Inspects: body.current_thread.text, subject.subject, type.outbound. Sensors: regex.contains, regex.icontains.

Indicators matched (2)

FieldMatchValue
regex.containsregex\b\d{4}[\s\-]?\d{6}\b
regex.icontainsregexsocial\s+insurance|基礎年金番号|年金手帳

Stages and Predicates

Stage 1: mql_rule

and
  any([body.current_thread.text, subject.subject])
    [body.current_thread.text, subject.subject] regex_match "\\b\\d{4}[\\s\\-]?\\d{6}\\b"
  any([body.current_thread.text, subject.subject])
    [body.current_thread.text, subject.subject] regex_match "social\\s+insurance|基礎年金番号|年金手帳"
  type.outbound eq "true"

Indicators

These rows show field, operator, and value matches.

FieldKindValuesSearch
type.outboundeq
  • true transforms: boolean
field:"type.outbound" kind:eq value:"true"

DLP: JSON Web Token (JWT)

#
Severity
medium
Type
dlp
Source
github.com/sublime-security/sublime-rules

Detects messages containing JSON Web Tokens.

Telemetry coverage

PlatformRecord / event type
SublimeInbound email message

Message attributes

  • body
  • body.current_thread
  • subject
  • type

Rule body

type.outbound
and any([body.current_thread.text, subject.subject],
        // JWT format: base64.base64.base64
        regex.contains(., '\beyJ[A-Za-z0-9_-]+\.eyJ[A-Za-z0-9_-]+\.[A-Za-z0-9_-]+\b')
)

Detection logic

Scope: outbound message.

Detects messages containing JSON Web Tokens.

  1. outbound message
  2. any of [body.current_thread.text, subject.subject] where:
    • . matches '\\beyJ[A-Za-z0-9_-]+\\.eyJ[A-Za-z0-9_-]+\\.[A-Za-z0-9_-]+\\b'

Inspects: body.current_thread.text, subject.subject, type.outbound. Sensors: regex.contains.

Indicators matched (1)

FieldMatchValue
regex.containsregex\beyJ[A-Za-z0-9_-]+\.eyJ[A-Za-z0-9_-]+\.[A-Za-z0-9_-]+\b

Stages and Predicates

Stage 1: mql_rule

and
  any([body.current_thread.text, subject.subject])
    [body.current_thread.text, subject.subject] regex_match "\\beyJ[A-Za-z0-9_-]+\\.eyJ[A-Za-z0-9_-]+\\.[A-Za-z0-9_-]+\\b"
  type.outbound eq "true"

Indicators

These rows show field, operator, and value matches.

FieldKindValuesSearch
type.outboundeq
  • true transforms: boolean
field:"type.outbound" kind:eq value:"true"

DLP: Latvia Personal Code

#
Severity
high
Type
dlp
Source
github.com/sublime-security/sublime-rules

Detects messages containing Latvian Personal Codes (personas kods).

Telemetry coverage

PlatformRecord / event type
SublimeInbound email message

Message attributes

  • body
  • body.current_thread
  • subject
  • type

Rule body

type.outbound
and any([body.current_thread.text, subject.subject],
        // Latvian Personal Code: 11 digits (DDMMYY-XXXXX)
        regex.contains(., '\b\d{6}[\s\-]?\d{5}\b')
)
and any([body.current_thread.text, subject.subject],
        regex.icontains(., 'personas\s+kods|personal\s+code')
)

Detection logic

Scope: outbound message.

Detects messages containing Latvian Personal Codes (personas kods).

  1. outbound message
  2. any of [body.current_thread.text, subject.subject] where:
    • . matches '\\b\\d{6}[\\s\\-]?\\d{5}\\b'
  3. any of [body.current_thread.text, subject.subject] where:
    • . matches 'personas\\s+kods|personal\\s+code'

Inspects: body.current_thread.text, subject.subject, type.outbound. Sensors: regex.contains, regex.icontains.

Indicators matched (2)

FieldMatchValue
regex.containsregex\b\d{6}[\s\-]?\d{5}\b
regex.icontainsregexpersonas\s+kods|personal\s+code

Stages and Predicates

Stage 1: mql_rule

and
  any([body.current_thread.text, subject.subject])
    [body.current_thread.text, subject.subject] regex_match "\\b\\d{6}[\\s\\-]?\\d{5}\\b"
  any([body.current_thread.text, subject.subject])
    [body.current_thread.text, subject.subject] regex_match "personas\\s+kods|personal\\s+code"
  type.outbound eq "true"

Indicators

These rows show field, operator, and value matches.

FieldKindValuesSearch
type.outboundeq
  • true transforms: boolean
field:"type.outbound" kind:eq value:"true"

DLP: Lithuania Personal Code

#
Severity
high
Type
dlp
Source
github.com/sublime-security/sublime-rules

Detects messages containing Lithuanian Personal Codes (asmens kodas).

Telemetry coverage

PlatformRecord / event type
SublimeInbound email message

Message attributes

  • body
  • body.current_thread
  • subject
  • type

Rule body

type.outbound
and any([body.current_thread.text, subject.subject],
        // Lithuanian Personal Code: 11 digits
        regex.contains(., '\b[1-6]\d{10}\b')
)
and any([body.current_thread.text, subject.subject],
        regex.icontains(., 'asmens\s+kodas|personal\s+code')
)

Detection logic

Scope: outbound message.

Detects messages containing Lithuanian Personal Codes (asmens kodas).

  1. outbound message
  2. any of [body.current_thread.text, subject.subject] where:
    • . matches '\\b[1-6]\\d{10}\\b'
  3. any of [body.current_thread.text, subject.subject] where:
    • . matches 'asmens\\s+kodas|personal\\s+code'

Inspects: body.current_thread.text, subject.subject, type.outbound. Sensors: regex.contains, regex.icontains.

Indicators matched (2)

FieldMatchValue
regex.containsregex\b[1-6]\d{10}\b
regex.icontainsregexasmens\s+kodas|personal\s+code

Stages and Predicates

Stage 1: mql_rule

and
  any([body.current_thread.text, subject.subject])
    [body.current_thread.text, subject.subject] regex_match "\\b[1-6]\\d{10}\\b"
  any([body.current_thread.text, subject.subject])
    [body.current_thread.text, subject.subject] regex_match "asmens\\s+kodas|personal\\s+code"
  type.outbound eq "true"

Indicators

These rows show field, operator, and value matches.

FieldKindValuesSearch
type.outboundeq
  • true transforms: boolean
field:"type.outbound" kind:eq value:"true"

DLP: Luxembourg National ID (Natural Persons)

#
Severity
high
Type
dlp
Source
github.com/sublime-security/sublime-rules

Detects messages containing Luxembourg National Identification Numbers for natural persons.

Telemetry coverage

PlatformRecord / event type
SublimeInbound email message

Message attributes

  • body
  • body.current_thread
  • sender.email
  • subject
  • type

Rule body

type.outbound
and any([body.current_thread.text, subject.subject],
        // Luxembourg Natural Person ID: 13 digits (YYYYMMDDXXXXX)
        regex.contains(., '\b\d{13}\b')
)
and any([body.current_thread.text, subject.subject],
        regex.icontains(., 'matricule|national\s+identification')
)
and (
  strings.icontains(sender.email.domain.tld, "lu")
  or strings.icontains(body.current_thread.text, "luxembourg")
)

Detection logic

Scope: outbound message.

Detects messages containing Luxembourg National Identification Numbers for natural persons.

  1. outbound message
  2. any of [body.current_thread.text, subject.subject] where:
    • . matches '\\b\\d{13}\\b'
  3. any of [body.current_thread.text, subject.subject] where:
    • . matches 'matricule|national\\s+identification'
  4. any of:
    • sender.email.domain.tld contains 'lu'
    • body.current_thread.text contains 'luxembourg'

Inspects: body.current_thread.text, sender.email.domain.tld, subject.subject, type.outbound. Sensors: regex.contains, regex.icontains, strings.icontains.

Indicators matched (4)

FieldMatchValue
regex.containsregex\b\d{13}\b
regex.icontainsregexmatricule|national\s+identification
strings.icontainssubstringlu
strings.icontainssubstringluxembourg

Stages and Predicates

Stage 1: mql_rule

and
  any([body.current_thread.text, subject.subject])
    [body.current_thread.text, subject.subject] regex_match "\\b\\d{13}\\b"
  any([body.current_thread.text, subject.subject])
    [body.current_thread.text, subject.subject] regex_match "matricule|national\\s+identification"
  or
    body.current_thread.text contains "luxembourg"
    sender.email.domain.tld contains "lu"
  type.outbound eq "true"

Indicators

These rows show field, operator, and value matches.

DLP: Luxembourg National ID (Non-Natural Persons)

#
Severity
medium
Type
dlp
Source
github.com/sublime-security/sublime-rules

Detects messages containing Luxembourg National Identification Numbers for non-natural persons.

Telemetry coverage

PlatformRecord / event type
SublimeInbound email message

Message attributes

  • body
  • body.current_thread
  • sender.email
  • subject
  • type

Rule body

type.outbound
and any([body.current_thread.text, subject.subject],
        // Luxembourg Non-Natural Person ID: 11 digits
        regex.contains(., '\b\d{11}\b')
)
and any([body.current_thread.text, subject.subject],
        regex.icontains(., 'matricule|company\s+ID|identification')
)
and (
  strings.icontains(sender.email.domain.tld, "lu")
  or strings.icontains(body.current_thread.text, "luxembourg")
)

Detection logic

Scope: outbound message.

Detects messages containing Luxembourg National Identification Numbers for non-natural persons.

  1. outbound message
  2. any of [body.current_thread.text, subject.subject] where:
    • . matches '\\b\\d{11}\\b'
  3. any of [body.current_thread.text, subject.subject] where:
    • . matches 'matricule|company\\s+ID|identification'
  4. any of:
    • sender.email.domain.tld contains 'lu'
    • body.current_thread.text contains 'luxembourg'

Inspects: body.current_thread.text, sender.email.domain.tld, subject.subject, type.outbound. Sensors: regex.contains, regex.icontains, strings.icontains.

Indicators matched (4)

FieldMatchValue
regex.containsregex\b\d{11}\b
regex.icontainsregexmatricule|company\s+ID|identification
strings.icontainssubstringlu
strings.icontainssubstringluxembourg

Stages and Predicates

Stage 1: mql_rule

and
  any([body.current_thread.text, subject.subject])
    [body.current_thread.text, subject.subject] regex_match "\\b\\d{11}\\b"
  any([body.current_thread.text, subject.subject])
    [body.current_thread.text, subject.subject] regex_match "matricule|company\\s+ID|identification"
  or
    body.current_thread.text contains "luxembourg"
    sender.email.domain.tld contains "lu"
  type.outbound eq "true"

Indicators

These rows show field, operator, and value matches.

DLP: MAC Address

#
Severity
low
Type
dlp
Source
github.com/sublime-security/sublime-rules

Detects messages containing MAC addresses.

Telemetry coverage

PlatformRecord / event type
SublimeInbound email message

Message attributes

  • body
  • body.current_thread
  • subject
  • type

Rule body

type.outbound
and any([body.current_thread.text, subject.subject],
        // MAC address: XX:XX:XX:XX:XX:XX or XX-XX-XX-XX-XX-XX
        regex.contains(., '\b(?:[0-9A-Fa-f]{2}[:-]){5}[0-9A-Fa-f]{2}\b')
)
and any([body.current_thread.text, subject.subject],
        regex.icontains(., 'mac\s+address|physical\s+address|hardware\s+address')
)

Detection logic

Scope: outbound message.

Detects messages containing MAC addresses.

  1. outbound message
  2. any of [body.current_thread.text, subject.subject] where:
    • . matches '\\b(?:[0-9A-Fa-f]{2}[:-]){5}[0-9A-Fa-f]{2}\\b'
  3. any of [body.current_thread.text, subject.subject] where:
    • . matches 'mac\\s+address|physical\\s+address|hardware\\s+address'

Inspects: body.current_thread.text, subject.subject, type.outbound. Sensors: regex.contains, regex.icontains.

Indicators matched (2)

FieldMatchValue
regex.containsregex\b(?:[0-9A-Fa-f]{2}[:-]){5}[0-9A-Fa-f]{2}\b
regex.icontainsregexmac\s+address|physical\s+address|hardware\s+address

Stages and Predicates

Stage 1: mql_rule

and
  any([body.current_thread.text, subject.subject])
    [body.current_thread.text, subject.subject] regex_match "\\b(?:[0-9A-Fa-f]{2}[:-]){5}[0-9A-Fa-f]{2}\\b"
  any([body.current_thread.text, subject.subject])
    [body.current_thread.text, subject.subject] regex_match "mac\\s+address|physical\\s+address|hardware\\s+address"
  type.outbound eq "true"

Indicators

These rows show field, operator, and value matches.

FieldKindValuesSearch
type.outboundeq
  • true transforms: boolean
field:"type.outbound" kind:eq value:"true"

DLP: Malta Identity Card Number

#
Severity
high
Type
dlp
Source
github.com/sublime-security/sublime-rules

Detects messages containing Maltese Identity Card numbers.

Telemetry coverage

PlatformRecord / event type
SublimeInbound email message

Message attributes

  • body
  • body.current_thread
  • sender.email
  • subject
  • type

Rule body

type.outbound
and any([body.current_thread.text, subject.subject],
        // Malta ID: 7-8 digits + 1 letter (e.g., 1234567M)
        regex.contains(., '\b\d{7,8}[A-Z]\b')
)
and any([body.current_thread.text, subject.subject],
        regex.icontains(., 'identity\s+card|ID\s+card|karta\s+tal-identità')
)
and (
  strings.icontains(sender.email.domain.tld, "mt")
  or strings.icontains(body.current_thread.text, "malta")
)

Detection logic

Scope: outbound message.

Detects messages containing Maltese Identity Card numbers.

  1. outbound message
  2. any of [body.current_thread.text, subject.subject] where:
    • . matches '\\b\\d{7,8}[A-Z]\\b'
  3. any of [body.current_thread.text, subject.subject] where:
    • . matches 'identity\\s+card|ID\\s+card|karta\\s+tal-identità'
  4. any of:
    • sender.email.domain.tld contains 'mt'
    • body.current_thread.text contains 'malta'

Inspects: body.current_thread.text, sender.email.domain.tld, subject.subject, type.outbound. Sensors: regex.contains, regex.icontains, strings.icontains.

Indicators matched (4)

FieldMatchValue
regex.containsregex\b\d{7,8}[A-Z]\b
regex.icontainsregexidentity\s+card|ID\s+card|karta\s+tal-identità
strings.icontainssubstringmt
strings.icontainssubstringmalta

Stages and Predicates

Stage 1: mql_rule

and
  any([body.current_thread.text, subject.subject])
    [body.current_thread.text, subject.subject] regex_match "\\b\\d{7,8}[A-Z]\\b"
  any([body.current_thread.text, subject.subject])
    [body.current_thread.text, subject.subject] regex_match "identity\\s+card|ID\\s+card|karta\\s+tal-identità"
  or
    body.current_thread.text contains "malta"
    sender.email.domain.tld contains "mt"
  type.outbound eq "true"

Indicators

These rows show field, operator, and value matches.

DLP: Malta Tax ID Number

#
Severity
medium
Type
dlp
Source
github.com/sublime-security/sublime-rules

Detects messages containing Maltese Tax Identification Numbers.

Telemetry coverage

PlatformRecord / event type
SublimeInbound email message

Message attributes

  • body
  • body.current_thread
  • sender.email
  • subject
  • type

Rule body

type.outbound
and any([body.current_thread.text, subject.subject],
        // Malta Tax ID: 8 digits
        regex.contains(., '\b\d{8}\b')
)
and any([body.current_thread.text, subject.subject],
        regex.icontains(., 'tax\s+ID|TIN|numru\s+tat-taxxa')
)
and (
  strings.icontains(sender.email.domain.tld, "mt")
  or strings.icontains(body.current_thread.text, "malta")
)

Detection logic

Scope: outbound message.

Detects messages containing Maltese Tax Identification Numbers.

  1. outbound message
  2. any of [body.current_thread.text, subject.subject] where:
    • . matches '\\b\\d{8}\\b'
  3. any of [body.current_thread.text, subject.subject] where:
    • . matches 'tax\\s+ID|TIN|numru\\s+tat-taxxa'
  4. any of:
    • sender.email.domain.tld contains 'mt'
    • body.current_thread.text contains 'malta'

Inspects: body.current_thread.text, sender.email.domain.tld, subject.subject, type.outbound. Sensors: regex.contains, regex.icontains, strings.icontains.

Indicators matched (4)

FieldMatchValue
regex.containsregex\b\d{8}\b
regex.icontainsregextax\s+ID|TIN|numru\s+tat-taxxa
strings.icontainssubstringmt
strings.icontainssubstringmalta

Stages and Predicates

Stage 1: mql_rule

and
  any([body.current_thread.text, subject.subject])
    [body.current_thread.text, subject.subject] regex_match "\\b\\d{8}\\b"
  any([body.current_thread.text, subject.subject])
    [body.current_thread.text, subject.subject] regex_match "tax\\s+ID|TIN|numru\\s+tat-taxxa"
  or
    body.current_thread.text contains "malta"
    sender.email.domain.tld contains "mt"
  type.outbound eq "true"

Indicators

These rows show field, operator, and value matches.

DLP: Mexico CURP Number

#
Severity
high
Type
dlp
Source
github.com/sublime-security/sublime-rules

Detects messages containing Mexican Unique Population Registry Code (CURP).

Telemetry coverage

PlatformRecord / event type
SublimeInbound email message

Message attributes

  • body
  • body.current_thread
  • subject
  • type

Rule body

type.outbound
and any([body.current_thread.text, subject.subject],
        // CURP: 18 alphanumeric characters
        regex.contains(., '\b[A-Z]{4}\d{6}[HM][A-Z]{5}[0-9A-Z]\d\b')
)
and any([body.current_thread.text, subject.subject],
        regex.icontains(., 'CURP|clave\s+única|población')
)

Detection logic

Scope: outbound message.

Detects messages containing Mexican Unique Population Registry Code (CURP).

  1. outbound message
  2. any of [body.current_thread.text, subject.subject] where:
    • . matches '\\b[A-Z]{4}\\d{6}[HM][A-Z]{5}[0-9A-Z]\\d\\b'
  3. any of [body.current_thread.text, subject.subject] where:
    • . matches 'CURP|clave\\s+única|población'

Inspects: body.current_thread.text, subject.subject, type.outbound. Sensors: regex.contains, regex.icontains.

Indicators matched (2)

FieldMatchValue
regex.containsregex\b[A-Z]{4}\d{6}[HM][A-Z]{5}[0-9A-Z]\d\b
regex.icontainsregexCURP|clave\s+única|población

Stages and Predicates

Stage 1: mql_rule

and
  any([body.current_thread.text, subject.subject])
    [body.current_thread.text, subject.subject] regex_match "CURP|clave\\s+única|población"
  any([body.current_thread.text, subject.subject])
    [body.current_thread.text, subject.subject] regex_match "\\b[A-Z]{4}\\d{6}[HM][A-Z]{5}[0-9A-Z]\\d\\b"
  type.outbound eq "true"

Indicators

These rows show field, operator, and value matches.

FieldKindValuesSearch
type.outboundeq
  • true transforms: boolean
field:"type.outbound" kind:eq value:"true"

DLP: Mexico Passport Number

#
Severity
high
Type
dlp
Source
github.com/sublime-security/sublime-rules

Detects messages containing Mexican passport numbers.

Telemetry coverage

PlatformRecord / event type
SublimeInbound email message

Message attributes

  • body
  • body.current_thread
  • sender.email
  • subject
  • type

Rule body

type.outbound
and any([body.current_thread.text, subject.subject],
        // Mexican passport: 9-10 alphanumeric characters
        regex.contains(., '\b[A-Z0-9]{9,10}\b')
)
and any([body.current_thread.text, subject.subject],
        regex.icontains(., 'passport|pasaporte|méxico|mexico')
)
and (
  strings.icontains(sender.email.domain.tld, "mx")
  or strings.icontains(body.current_thread.text, "mexico")
  or strings.icontains(body.current_thread.text, "méxico")
)

Detection logic

Scope: outbound message.

Detects messages containing Mexican passport numbers.

  1. outbound message
  2. any of [body.current_thread.text, subject.subject] where:
    • . matches '\\b[A-Z0-9]{9,10}\\b'
  3. any of [body.current_thread.text, subject.subject] where:
    • . matches 'passport|pasaporte|méxico|mexico'
  4. any of:
    • sender.email.domain.tld contains 'mx'
    • body.current_thread.text contains 'mexico'
    • body.current_thread.text contains 'méxico'

Inspects: body.current_thread.text, sender.email.domain.tld, subject.subject, type.outbound. Sensors: regex.contains, regex.icontains, strings.icontains.

Indicators matched (5)

FieldMatchValue
regex.containsregex\b[A-Z0-9]{9,10}\b
regex.icontainsregexpassport|pasaporte|méxico|mexico
strings.icontainssubstringmx
strings.icontainssubstringmexico
strings.icontainssubstringméxico

Stages and Predicates

Stage 1: mql_rule

and
  any([body.current_thread.text, subject.subject])
    [body.current_thread.text, subject.subject] regex_match "\\b[A-Z0-9]{9,10}\\b"
  any([body.current_thread.text, subject.subject])
    [body.current_thread.text, subject.subject] regex_match "passport|pasaporte|méxico|mexico"
  or
    body.current_thread.text contains "mexico"
    body.current_thread.text contains "méxico"
    sender.email.domain.tld contains "mx"
  type.outbound eq "true"

Indicators

These rows show field, operator, and value matches.

DLP: Netherlands Citizen's Service (BSN) Number

#
Severity
high
Type
dlp
Source
github.com/sublime-security/sublime-rules

Detects messages containing Dutch Citizen's Service Numbers (Burgerservicenummer).

Telemetry coverage

PlatformRecord / event type
SublimeInbound email message

Message attributes

  • body
  • body.current_thread
  • subject
  • type

Rule body

type.outbound
and any([body.current_thread.text, subject.subject],
        // Dutch BSN: 8-9 digits
        regex.contains(., '\b\d{8,9}\b')
)
and any([body.current_thread.text, subject.subject],
        regex.icontains(., 'BSN|burgerservicenummer|citizen.?s?\s+service')
)

Detection logic

Scope: outbound message.

Detects messages containing Dutch Citizen's Service Numbers (Burgerservicenummer).

  1. outbound message
  2. any of [body.current_thread.text, subject.subject] where:
    • . matches '\\b\\d{8,9}\\b'
  3. any of [body.current_thread.text, subject.subject] where:
    • . matches 'BSN|burgerservicenummer|citizen.?s?\\s+service'

Inspects: body.current_thread.text, subject.subject, type.outbound. Sensors: regex.contains, regex.icontains.

Indicators matched (2)

FieldMatchValue
regex.containsregex\b\d{8,9}\b
regex.icontainsregexBSN|burgerservicenummer|citizen.?s?\s+service

Stages and Predicates

Stage 1: mql_rule

and
  any([body.current_thread.text, subject.subject])
    [body.current_thread.text, subject.subject] regex_match "BSN|burgerservicenummer|citizen.?s?\\s+service"
  any([body.current_thread.text, subject.subject])
    [body.current_thread.text, subject.subject] regex_match "\\b\\d{8,9}\\b"
  type.outbound eq "true"

Indicators

These rows show field, operator, and value matches.

FieldKindValuesSearch
type.outboundeq
  • true transforms: boolean
field:"type.outbound" kind:eq value:"true"

DLP: Netherlands Tax Identification Number

#
Severity
medium
Type
dlp
Source
github.com/sublime-security/sublime-rules

Detects messages containing Dutch Tax Identification Numbers.

Telemetry coverage

PlatformRecord / event type
SublimeInbound email message

Message attributes

  • body
  • body.current_thread
  • sender.email
  • subject
  • type

Rule body

type.outbound
and any([body.current_thread.text, subject.subject],
        // Dutch Tax ID: 9 digits
        regex.contains(., '\b\d{9}\b')
)
and any([body.current_thread.text, subject.subject],
        regex.icontains(., 'tax\s+identification|belastingnummer|TIN')
)
and (
  strings.icontains(sender.email.domain.tld, "nl")
  or strings.icontains(body.current_thread.text, "netherlands")
)

Detection logic

Scope: outbound message.

Detects messages containing Dutch Tax Identification Numbers.

  1. outbound message
  2. any of [body.current_thread.text, subject.subject] where:
    • . matches '\\b\\d{9}\\b'
  3. any of [body.current_thread.text, subject.subject] where:
    • . matches 'tax\\s+identification|belastingnummer|TIN'
  4. any of:
    • sender.email.domain.tld contains 'nl'
    • body.current_thread.text contains 'netherlands'

Inspects: body.current_thread.text, sender.email.domain.tld, subject.subject, type.outbound. Sensors: regex.contains, regex.icontains, strings.icontains.

Indicators matched (4)

FieldMatchValue
regex.containsregex\b\d{9}\b
regex.icontainsregextax\s+identification|belastingnummer|TIN
strings.icontainssubstringnl
strings.icontainssubstringnetherlands

Stages and Predicates

Stage 1: mql_rule

and
  any([body.current_thread.text, subject.subject])
    [body.current_thread.text, subject.subject] regex_match "\\b\\d{9}\\b"
  any([body.current_thread.text, subject.subject])
    [body.current_thread.text, subject.subject] regex_match "tax\\s+identification|belastingnummer|TIN"
  or
    body.current_thread.text contains "netherlands"
    sender.email.domain.tld contains "nl"
  type.outbound eq "true"

Indicators

These rows show field, operator, and value matches.

DLP: OAuth Client Secret

#
Severity
high
Type
dlp
Source
github.com/sublime-security/sublime-rules

Detects messages containing OAuth client secrets.

Telemetry coverage

PlatformRecord / event type
SublimeInbound email message

Message attributes

  • body
  • body.current_thread
  • subject
  • type

Rule body

type.outbound
and any([body.current_thread.text, subject.subject],
        regex.icontains(., 'oauth|client[_\s]secret|client[_\s]id')
)
and any([body.current_thread.text, subject.subject],
        // Long hexadecimal or alphanumeric strings
        regex.contains(., '\b[a-f0-9]{32,}\b')
        or regex.contains(., '\b[A-Za-z0-9_-]{32,}\b')
)

Detection logic

Scope: outbound message.

Detects messages containing OAuth client secrets.

  1. outbound message
  2. any of [body.current_thread.text, subject.subject] where:
    • . matches 'oauth|client[_\\s]secret|client[_\\s]id'
  3. any of [body.current_thread.text, subject.subject] where any holds:
    • . matches '\\b[a-f0-9]{32,}\\b'
    • . matches '\\b[A-Za-z0-9_-]{32,}\\b'

Inspects: body.current_thread.text, subject.subject, type.outbound. Sensors: regex.contains, regex.icontains.

Indicators matched (3)

FieldMatchValue
regex.icontainsregexoauth|client[_\s]secret|client[_\s]id
regex.containsregex\b[a-f0-9]{32,}\b
regex.containsregex\b[A-Za-z0-9_-]{32,}\b

Stages and Predicates

Stage 1: mql_rule

and
  any([body.current_thread.text, subject.subject])
    or
      [body.current_thread.text, subject.subject] regex_match "\\b[A-Za-z0-9_-]{32,}\\b"
      [body.current_thread.text, subject.subject] regex_match "\\b[a-f0-9]{32,}\\b"
  any([body.current_thread.text, subject.subject])
    [body.current_thread.text, subject.subject] regex_match "oauth|client[_\\s]secret|client[_\\s]id"
  type.outbound eq "true"

Indicators

These rows show field, operator, and value matches.

FieldKindValuesSearch
type.outboundeq
  • true transforms: boolean
field:"type.outbound" kind:eq value:"true"

DLP: Poland Identity Card

#
Severity
high
Type
dlp
Source
github.com/sublime-security/sublime-rules

Detects messages containing Polish Identity Card numbers (Dowód osobisty).

Telemetry coverage

PlatformRecord / event type
SublimeInbound email message

Message attributes

  • body
  • body.current_thread
  • subject
  • type

Rule body

type.outbound
and any([body.current_thread.text, subject.subject],
        // Polish ID: 3 letters + 6 digits (e.g., ABC123456)
        regex.contains(., '\b[A-Z]{3}\d{6}\b')
)
and any([body.current_thread.text, subject.subject],
        regex.icontains(., 'dowód\s+osobisty|identity\s+card')
)

Detection logic

Scope: outbound message.

Detects messages containing Polish Identity Card numbers (Dowód osobisty).

  1. outbound message
  2. any of [body.current_thread.text, subject.subject] where:
    • . matches '\\b[A-Z]{3}\\d{6}\\b'
  3. any of [body.current_thread.text, subject.subject] where:
    • . matches 'dowód\\s+osobisty|identity\\s+card'

Inspects: body.current_thread.text, subject.subject, type.outbound. Sensors: regex.contains, regex.icontains.

Indicators matched (2)

FieldMatchValue
regex.containsregex\b[A-Z]{3}\d{6}\b
regex.icontainsregexdowód\s+osobisty|identity\s+card

Stages and Predicates

Stage 1: mql_rule

and
  any([body.current_thread.text, subject.subject])
    [body.current_thread.text, subject.subject] regex_match "\\b[A-Z]{3}\\d{6}\\b"
  any([body.current_thread.text, subject.subject])
    [body.current_thread.text, subject.subject] regex_match "dowód\\s+osobisty|identity\\s+card"
  type.outbound eq "true"

Indicators

These rows show field, operator, and value matches.

FieldKindValuesSearch
type.outboundeq
  • true transforms: boolean
field:"type.outbound" kind:eq value:"true"

DLP: Poland Tax Identification Number

#
Severity
medium
Type
dlp
Source
github.com/sublime-security/sublime-rules

Detects messages containing Polish Tax Identification Numbers (NIP).

Telemetry coverage

PlatformRecord / event type
SublimeInbound email message

Message attributes

  • body
  • body.current_thread
  • subject
  • type

Rule body

type.outbound
and any([body.current_thread.text, subject.subject],
        // Polish NIP: 10 digits in XXX-XXX-XX-XX or XXXXXXXXXX format
        regex.contains(., '\b\d{3}[\s\-]?\d{3}[\s\-]?\d{2}[\s\-]?\d{2}\b|\b\d{10}\b')
)
and any([body.current_thread.text, subject.subject],
        regex.icontains(., 'NIP|tax\s+identification')
)

Detection logic

Scope: outbound message.

Detects messages containing Polish Tax Identification Numbers (NIP).

  1. outbound message
  2. any of [body.current_thread.text, subject.subject] where:
    • . matches '\\b\\d{3}[\\s\\-]?\\d{3}[\\s\\-]?\\d{2}[\\s\\-]?\\d{2}\\b|\\b\\d{10}\\b'
  3. any of [body.current_thread.text, subject.subject] where:
    • . matches 'NIP|tax\\s+identification'

Inspects: body.current_thread.text, subject.subject, type.outbound. Sensors: regex.contains, regex.icontains.

Indicators matched (2)

FieldMatchValue
regex.containsregex\b\d{3}[\s\-]?\d{3}[\s\-]?\d{2}[\s\-]?\d{2}\b|\b\d{10}\b
regex.icontainsregexNIP|tax\s+identification

Stages and Predicates

Stage 1: mql_rule

and
  any([body.current_thread.text, subject.subject])
    [body.current_thread.text, subject.subject] regex_match "NIP|tax\\s+identification"
  any([body.current_thread.text, subject.subject])
    [body.current_thread.text, subject.subject] regex_match "\\b\\d{3}[\\s\\-]?\\d{3}[\\s\\-]?\\d{2}[\\s\\-]?\\d{2}\\b|\\b\\d{10}\\b"
  type.outbound eq "true"

Indicators

These rows show field, operator, and value matches.

FieldKindValuesSearch
type.outboundeq
  • true transforms: boolean
field:"type.outbound" kind:eq value:"true"

DLP: Portugal Citizen Card Number

#
Severity
high
Type
dlp
Source
github.com/sublime-security/sublime-rules

Detects messages containing Portuguese Citizen Card Numbers (Cartão de Cidadão).

Telemetry coverage

PlatformRecord / event type
SublimeInbound email message

Message attributes

  • body
  • body.current_thread
  • subject
  • type

Rule body

type.outbound
and any([body.current_thread.text, subject.subject],
        // Portuguese Citizen Card: 8 digits + 1 check digit (e.g., 12345678-9)
        regex.contains(., '\b\d{8}[\s\-]?\d\s?[A-Z]{2}\d\b')
)
and any([body.current_thread.text, subject.subject],
        regex.icontains(., 'cartão\s+de\s+cidadão|citizen\s+card')
)

Detection logic

Scope: outbound message.

Detects messages containing Portuguese Citizen Card Numbers (Cartão de Cidadão).

  1. outbound message
  2. any of [body.current_thread.text, subject.subject] where:
    • . matches '\\b\\d{8}[\\s\\-]?\\d\\s?[A-Z]{2}\\d\\b'
  3. any of [body.current_thread.text, subject.subject] where:
    • . matches 'cartão\\s+de\\s+cidadão|citizen\\s+card'

Inspects: body.current_thread.text, subject.subject, type.outbound. Sensors: regex.contains, regex.icontains.

Indicators matched (2)

FieldMatchValue
regex.containsregex\b\d{8}[\s\-]?\d\s?[A-Z]{2}\d\b
regex.icontainsregexcartão\s+de\s+cidadão|citizen\s+card

Stages and Predicates

Stage 1: mql_rule

and
  any([body.current_thread.text, subject.subject])
    [body.current_thread.text, subject.subject] regex_match "\\b\\d{8}[\\s\\-]?\\d\\s?[A-Z]{2}\\d\\b"
  any([body.current_thread.text, subject.subject])
    [body.current_thread.text, subject.subject] regex_match "cartão\\s+de\\s+cidadão|citizen\\s+card"
  type.outbound eq "true"

Indicators

These rows show field, operator, and value matches.

FieldKindValuesSearch
type.outboundeq
  • true transforms: boolean
field:"type.outbound" kind:eq value:"true"

DLP: Portugal Tax Identification Number

#
Severity
medium
Type
dlp
Source
github.com/sublime-security/sublime-rules

Detects messages containing Portuguese Tax Identification Numbers (NIF).

Telemetry coverage

PlatformRecord / event type
SublimeInbound email message

Message attributes

  • body
  • body.current_thread
  • subject
  • type

Rule body

type.outbound
and any([body.current_thread.text, subject.subject],
        // Portuguese NIF: 9 digits
        regex.contains(., '\b[1-3,5,6,8]\d{8}\b')
)
and any([body.current_thread.text, subject.subject],
        regex.icontains(., 'NIF|número\s+de\s+identificação\s+fiscal|tax\s+ID')
)

Detection logic

Scope: outbound message.

Detects messages containing Portuguese Tax Identification Numbers (NIF).

  1. outbound message
  2. any of [body.current_thread.text, subject.subject] where:
    • . matches '\\b[1-3,5,6,8]\\d{8}\\b'
  3. any of [body.current_thread.text, subject.subject] where:
    • . matches 'NIF|número\\s+de\\s+identificação\\s+fiscal|tax\\s+ID'

Inspects: body.current_thread.text, subject.subject, type.outbound. Sensors: regex.contains, regex.icontains.

Indicators matched (2)

FieldMatchValue
regex.containsregex\b[1-3,5,6,8]\d{8}\b
regex.icontainsregexNIF|número\s+de\s+identificação\s+fiscal|tax\s+ID

Stages and Predicates

Stage 1: mql_rule

and
  any([body.current_thread.text, subject.subject])
    [body.current_thread.text, subject.subject] regex_match "NIF|número\\s+de\\s+identificação\\s+fiscal|tax\\s+ID"
  any([body.current_thread.text, subject.subject])
    [body.current_thread.text, subject.subject] regex_match "\\b[1-3,5,6,8]\\d{8}\\b"
  type.outbound eq "true"

Indicators

These rows show field, operator, and value matches.

FieldKindValuesSearch
type.outboundeq
  • true transforms: boolean
field:"type.outbound" kind:eq value:"true"

DLP: Private Key

#
Severity
high
Type
dlp
Source
github.com/sublime-security/sublime-rules

Detects messages containing private keys (RSA, SSH, PGP).

Telemetry coverage

PlatformRecord / event type
SublimeInbound email message

Message attributes

  • body
  • body.current_thread
  • subject
  • type

Rule body

type.outbound
and any([body.current_thread.text, subject.subject],
        regex.contains(., '-----BEGIN\s+(?:RSA\s+)?PRIVATE\s+KEY-----')
        or regex.contains(., '-----BEGIN\s+OPENSSH\s+PRIVATE\s+KEY-----')
        or regex.contains(., '-----BEGIN\s+PGP\s+PRIVATE\s+KEY\s+BLOCK-----')
        or regex.contains(., '-----BEGIN\s+EC\s+PRIVATE\s+KEY-----')
)

Detection logic

Scope: outbound message.

Detects messages containing private keys (RSA, SSH, PGP).

  1. outbound message
  2. any of [body.current_thread.text, subject.subject] where any holds:
    • . matches '-----BEGIN\\s+(?:RSA\\s+)?PRIVATE\\s+KEY-----'
    • . matches '-----BEGIN\\s+OPENSSH\\s+PRIVATE\\s+KEY-----'
    • . matches '-----BEGIN\\s+PGP\\s+PRIVATE\\s+KEY\\s+BLOCK-----'
    • . matches '-----BEGIN\\s+EC\\s+PRIVATE\\s+KEY-----'

Inspects: body.current_thread.text, subject.subject, type.outbound. Sensors: regex.contains.

Indicators matched (4)

FieldMatchValue
regex.containsregex-----BEGIN\s+(?:RSA\s+)?PRIVATE\s+KEY-----
regex.containsregex-----BEGIN\s+OPENSSH\s+PRIVATE\s+KEY-----
regex.containsregex-----BEGIN\s+PGP\s+PRIVATE\s+KEY\s+BLOCK-----
regex.containsregex-----BEGIN\s+EC\s+PRIVATE\s+KEY-----

Stages and Predicates

Stage 1: mql_rule

and
  any([body.current_thread.text, subject.subject])
    or
      [body.current_thread.text, subject.subject] regex_match "-----BEGIN\\s+(?:RSA\\s+)?PRIVATE\\s+KEY-----"
      [body.current_thread.text, subject.subject] regex_match "-----BEGIN\\s+EC\\s+PRIVATE\\s+KEY-----"
      [body.current_thread.text, subject.subject] regex_match "-----BEGIN\\s+OPENSSH\\s+PRIVATE\\s+KEY-----"
      [body.current_thread.text, subject.subject] regex_match "-----BEGIN\\s+PGP\\s+PRIVATE\\s+KEY\\s+BLOCK-----"
  type.outbound eq "true"

Indicators

These rows show field, operator, and value matches.

FieldKindValuesSearch
type.outboundeq
  • true transforms: boolean
field:"type.outbound" kind:eq value:"true"

DLP: Romania Personal Numerical Code

#
Severity
high
Type
dlp
Source
github.com/sublime-security/sublime-rules

Detects messages containing Romanian Personal Numerical Codes (CNP).

Telemetry coverage

PlatformRecord / event type
SublimeInbound email message

Message attributes

  • body
  • body.current_thread
  • subject
  • type

Rule body

type.outbound
and any([body.current_thread.text, subject.subject],
        // Romanian CNP: 13 digits
        regex.contains(., '\b[1-8]\d{12}\b')
)
and any([body.current_thread.text, subject.subject],
        regex.icontains(., 'CNP|cod\s+numeric\s+personal|personal\s+code')
)

Detection logic

Scope: outbound message.

Detects messages containing Romanian Personal Numerical Codes (CNP).

  1. outbound message
  2. any of [body.current_thread.text, subject.subject] where:
    • . matches '\\b[1-8]\\d{12}\\b'
  3. any of [body.current_thread.text, subject.subject] where:
    • . matches 'CNP|cod\\s+numeric\\s+personal|personal\\s+code'

Inspects: body.current_thread.text, subject.subject, type.outbound. Sensors: regex.contains, regex.icontains.

Indicators matched (2)

FieldMatchValue
regex.containsregex\b[1-8]\d{12}\b
regex.icontainsregexCNP|cod\s+numeric\s+personal|personal\s+code

Stages and Predicates

Stage 1: mql_rule

and
  any([body.current_thread.text, subject.subject])
    [body.current_thread.text, subject.subject] regex_match "CNP|cod\\s+numeric\\s+personal|personal\\s+code"
  any([body.current_thread.text, subject.subject])
    [body.current_thread.text, subject.subject] regex_match "\\b[1-8]\\d{12}\\b"
  type.outbound eq "true"

Indicators

These rows show field, operator, and value matches.

FieldKindValuesSearch
type.outboundeq
  • true transforms: boolean
field:"type.outbound" kind:eq value:"true"

DLP: Saudi Arabia IBAN

#
Severity
medium
Type
dlp
Source
github.com/sublime-security/sublime-rules

Detects messages containing Saudi Arabian International Bank Account Numbers (IBAN).

Telemetry coverage

PlatformRecord / event type
SublimeInbound email message

Message attributes

  • body
  • body.current_thread
  • subject
  • type

Rule body

type.outbound
and any([body.current_thread.text, subject.subject],
        // Saudi IBAN: SA + 2 check digits + 22 digits
        regex.contains(., '\bSA\d{2}[\s]?\d{4}[\s]?\d{4}[\s]?\d{4}[\s]?\d{4}[\s]?\d{4}[\s]?\d{2}\b')
)
and any([body.current_thread.text, subject.subject],
        regex.icontains(., 'IBAN|bank\s+account|حساب\s+بنكي')
)

Detection logic

Scope: outbound message.

Detects messages containing Saudi Arabian International Bank Account Numbers (IBAN).

  1. outbound message
  2. any of [body.current_thread.text, subject.subject] where:
    • . matches '\\bSA\\d{2}[\\s]?\\d{4}[\\s]?\\d{4}[\\s]?\\d{4}[\\s]?\\d{4}[\\s]?\\d{4}[\\s]?\\d{2}\\b'
  3. any of [body.current_thread.text, subject.subject] where:
    • . matches 'IBAN|bank\\s+account|حساب\\s+بنكي'

Inspects: body.current_thread.text, subject.subject, type.outbound. Sensors: regex.contains, regex.icontains.

Indicators matched (2)

FieldMatchValue
regex.containsregex\bSA\d{2}[\s]?\d{4}[\s]?\d{4}[\s]?\d{4}[\s]?\d{4}[\s]?\d{4}[\s]?\d{2}\b
regex.icontainsregexIBAN|bank\s+account|حساب\s+بنكي

Stages and Predicates

Stage 1: mql_rule

and
  any([body.current_thread.text, subject.subject])
    [body.current_thread.text, subject.subject] regex_match "IBAN|bank\\s+account|حساب\\s+بنكي"
  any([body.current_thread.text, subject.subject])
    [body.current_thread.text, subject.subject] regex_match "\\bSA\\d{2}[\\s]?\\d{4}[\\s]?\\d{4}[\\s]?\\d{4}[\\s]?\\d{4}[\\s]?\\d{4}[\\s]?\\d{2}\\b"
  type.outbound eq "true"

Indicators

These rows show field, operator, and value matches.

FieldKindValuesSearch
type.outboundeq
  • true transforms: boolean
field:"type.outbound" kind:eq value:"true"

DLP: Saudi Arabia National ID

#
Severity
high
Type
dlp
Source
github.com/sublime-security/sublime-rules

Detects messages containing Saudi Arabian National ID numbers.

Telemetry coverage

PlatformRecord / event type
SublimeInbound email message

Message attributes

  • body
  • body.current_thread
  • subject
  • type

Rule body

type.outbound
and any([body.current_thread.text, subject.subject],
        // Saudi National ID: 10 digits
        regex.contains(., '\b[12]\d{9}\b')
)
and any([body.current_thread.text, subject.subject],
        regex.icontains(., 'national\s+ID|iqama|رقم\s+الهوية|إقامة')
)

Detection logic

Scope: outbound message.

Detects messages containing Saudi Arabian National ID numbers.

  1. outbound message
  2. any of [body.current_thread.text, subject.subject] where:
    • . matches '\\b[12]\\d{9}\\b'
  3. any of [body.current_thread.text, subject.subject] where:
    • . matches 'national\\s+ID|iqama|رقم\\s+الهوية|إقامة'

Inspects: body.current_thread.text, subject.subject, type.outbound. Sensors: regex.contains, regex.icontains.

Indicators matched (2)

FieldMatchValue
regex.containsregex\b[12]\d{9}\b
regex.icontainsregexnational\s+ID|iqama|رقم\s+الهوية|إقامة

Stages and Predicates

Stage 1: mql_rule

and
  any([body.current_thread.text, subject.subject])
    [body.current_thread.text, subject.subject] regex_match "\\b[12]\\d{9}\\b"
  any([body.current_thread.text, subject.subject])
    [body.current_thread.text, subject.subject] regex_match "national\\s+ID|iqama|رقم\\s+الهوية|إقامة"
  type.outbound eq "true"

Indicators

These rows show field, operator, and value matches.

FieldKindValuesSearch
type.outboundeq
  • true transforms: boolean
field:"type.outbound" kind:eq value:"true"

DLP: Saudi Arabia SWIFT Code

#
Severity
medium
Type
dlp
Source
github.com/sublime-security/sublime-rules

Detects messages containing Saudi Arabian SWIFT/BIC codes for financial institutions.

Telemetry coverage

PlatformRecord / event type
SublimeInbound email message

Message attributes

  • body
  • body.current_thread
  • subject
  • type

Rule body

type.outbound
and any(ml.logo_detect(beta.message_screenshot()).brands, strings.ilike(.name, "*bank*", "*financial*"))
and any([body.current_thread.text, subject.subject],
        // SWIFT code: 4 letters (bank) + 2 letters (SA) + 2 chars (location) + optional 3 chars (branch)
        regex.contains(., '\b[A-Z]{4}SA[A-Z0-9]{2}(?:[A-Z0-9]{3})?\b')
)

Detection logic

Scope: outbound message.

Detects messages containing Saudi Arabian SWIFT/BIC codes for financial institutions.

  1. outbound message
  2. any of ml.logo_detect(beta.message_screenshot()).brands where:
    • .name matches any of 2 patterns
      • *bank*
      • *financial*
  3. any of [body.current_thread.text, subject.subject] where:
    • . matches '\\b[A-Z]{4}SA[A-Z0-9]{2}(?:[A-Z0-9]{3})?\\b'

Inspects: body.current_thread.text, subject.subject, type.outbound. Sensors: beta.message_screenshot, ml.logo_detect, regex.contains, strings.ilike.

Indicators matched (3)

FieldMatchValue
strings.ilikesubstring*bank*
strings.ilikesubstring*financial*
regex.containsregex\b[A-Z]{4}SA[A-Z0-9]{2}(?:[A-Z0-9]{3})?\b

Stages and Predicates

Stage 1: mql_rule

and
  any(ml.logo_detect(beta.message_screenshot()).brands)
    or
      ml.logo_detect(beta.message_screenshot()).brands.name match "bank"
      ml.logo_detect(beta.message_screenshot()).brands.name match "financial"
  any([body.current_thread.text, subject.subject])
    [body.current_thread.text, subject.subject] regex_match "\\b[A-Z]{4}SA[A-Z0-9]{2}(?:[A-Z0-9]{3})?\\b"
  type.outbound eq "true"

Indicators

These rows show field, operator, and value matches.

FieldKindValuesSearch
type.outboundeq
  • true transforms: boolean
field:"type.outbound" kind:eq value:"true"

DLP: Slack Token

#
Severity
high
Type
dlp
Source
github.com/sublime-security/sublime-rules

Detects messages containing Slack API tokens and webhooks.

Telemetry coverage

PlatformRecord / event type
SublimeInbound email message

Message attributes

  • body
  • body.current_thread
  • subject
  • type

Rule body

type.outbound
and any([body.current_thread.text, subject.subject],
        // Slack tokens: xoxb-, xoxp-, xoxa-, xoxr-
        regex.contains(., '\bxox[bpar]-[0-9]{10,13}-[0-9]{10,13}-[A-Za-z0-9]{24,}\b')
        // Slack webhook URLs
        or regex.contains(., 'hooks\.slack\.com/services/T[A-Z0-9]+/B[A-Z0-9]+/[A-Za-z0-9]{24}')
)

Detection logic

Scope: outbound message.

Detects messages containing Slack API tokens and webhooks.

  1. outbound message
  2. any of [body.current_thread.text, subject.subject] where any holds:
    • . matches '\\bxox[bpar]-[0-9]{10,13}-[0-9]{10,13}-[A-Za-z0-9]{24,}\\b'
    • . matches 'hooks\\.slack\\.com/services/T[A-Z0-9]+/B[A-Z0-9]+/[A-Za-z0-9]{24}'

Inspects: body.current_thread.text, subject.subject, type.outbound. Sensors: regex.contains.

Indicators matched (2)

FieldMatchValue
regex.containsregex\bxox[bpar]-[0-9]{10,13}-[0-9]{10,13}-[A-Za-z0-9]{24,}\b
regex.containsregexhooks\.slack\.com/services/T[A-Z0-9]+/B[A-Z0-9]+/[A-Za-z0-9]{24}

Stages and Predicates

Stage 1: mql_rule

and
  any([body.current_thread.text, subject.subject])
    or
      [body.current_thread.text, subject.subject] regex_match "\\bxox[bpar]-[0-9]{10,13}-[0-9]{10,13}-[A-Za-z0-9]{24,}\\b"
      [body.current_thread.text, subject.subject] regex_match "hooks\\.slack\\.com/services/T[A-Z0-9]+/B[A-Z0-9]+/[A-Za-z0-9]{24}"
  type.outbound eq "true"

Indicators

These rows show field, operator, and value matches.

FieldKindValuesSearch
type.outboundeq
  • true transforms: boolean
field:"type.outbound" kind:eq value:"true"

DLP: Slovakia Personal Number

#
Severity
high
Type
dlp
Source
github.com/sublime-security/sublime-rules

Detects messages containing Slovak Personal Numbers (rodné číslo).

Telemetry coverage

PlatformRecord / event type
SublimeInbound email message

Message attributes

  • body
  • body.current_thread
  • subject
  • type

Rule body

type.outbound
and any([body.current_thread.text, subject.subject],
        // Slovak Personal Number: 10 digits in XXXXXX/XXXX format
        regex.contains(., '\b\d{6}[\s/]?\d{4}\b')
)
and any([body.current_thread.text, subject.subject],
        regex.icontains(., 'rodné\s+číslo|personal\s+number')
)

Detection logic

Scope: outbound message.

Detects messages containing Slovak Personal Numbers (rodné číslo).

  1. outbound message
  2. any of [body.current_thread.text, subject.subject] where:
    • . matches '\\b\\d{6}[\\s/]?\\d{4}\\b'
  3. any of [body.current_thread.text, subject.subject] where:
    • . matches 'rodné\\s+číslo|personal\\s+number'

Inspects: body.current_thread.text, subject.subject, type.outbound. Sensors: regex.contains, regex.icontains.

Indicators matched (2)

FieldMatchValue
regex.containsregex\b\d{6}[\s/]?\d{4}\b
regex.icontainsregexrodné\s+číslo|personal\s+number

Stages and Predicates

Stage 1: mql_rule

and
  any([body.current_thread.text, subject.subject])
    [body.current_thread.text, subject.subject] regex_match "\\b\\d{6}[\\s/]?\\d{4}\\b"
  any([body.current_thread.text, subject.subject])
    [body.current_thread.text, subject.subject] regex_match "rodné\\s+číslo|personal\\s+number"
  type.outbound eq "true"

Indicators

These rows show field, operator, and value matches.

FieldKindValuesSearch
type.outboundeq
  • true transforms: boolean
field:"type.outbound" kind:eq value:"true"

DLP: Slovenia Tax Identification Number

#
Severity
medium
Type
dlp
Source
github.com/sublime-security/sublime-rules

Detects messages containing Slovenian Tax Identification Numbers.

Telemetry coverage

PlatformRecord / event type
SublimeInbound email message

Message attributes

  • body
  • body.current_thread
  • sender.email
  • subject
  • type

Rule body

type.outbound
and any([body.current_thread.text, subject.subject],
        // Slovenian Tax ID: 8 digits
        regex.contains(., '\b\d{8}\b')
)
and any([body.current_thread.text, subject.subject],
        regex.icontains(., 'davčna\s+številka|tax\s+ID|TIN')
)
and (
  strings.icontains(sender.email.domain.tld, "si")
  or strings.icontains(body.current_thread.text, "slovenia")
)

Detection logic

Scope: outbound message.

Detects messages containing Slovenian Tax Identification Numbers.

  1. outbound message
  2. any of [body.current_thread.text, subject.subject] where:
    • . matches '\\b\\d{8}\\b'
  3. any of [body.current_thread.text, subject.subject] where:
    • . matches 'davčna\\s+številka|tax\\s+ID|TIN'
  4. any of:
    • sender.email.domain.tld contains 'si'
    • body.current_thread.text contains 'slovenia'

Inspects: body.current_thread.text, sender.email.domain.tld, subject.subject, type.outbound. Sensors: regex.contains, regex.icontains, strings.icontains.

Indicators matched (4)

FieldMatchValue
regex.containsregex\b\d{8}\b
regex.icontainsregexdavčna\s+številka|tax\s+ID|TIN
strings.icontainssubstringsi
strings.icontainssubstringslovenia

Stages and Predicates

Stage 1: mql_rule

and
  any([body.current_thread.text, subject.subject])
    [body.current_thread.text, subject.subject] regex_match "\\b\\d{8}\\b"
  any([body.current_thread.text, subject.subject])
    [body.current_thread.text, subject.subject] regex_match "davčna\\s+številka|tax\\s+ID|TIN"
  or
    body.current_thread.text contains "slovenia"
    sender.email.domain.tld contains "si"
  type.outbound eq "true"

Indicators

These rows show field, operator, and value matches.

DLP: Slovenia Unique Master Citizen Number

#
Severity
high
Type
dlp
Source
github.com/sublime-security/sublime-rules

Detects messages containing Slovenian Unique Master Citizen Numbers (EMŠO).

Telemetry coverage

PlatformRecord / event type
SublimeInbound email message

Message attributes

  • body
  • body.current_thread
  • subject
  • type

Rule body

type.outbound
and any([body.current_thread.text, subject.subject],
        // Slovenian EMŠO: 13 digits (DDMMYYYRRSSSC format)
        regex.contains(., '\b\d{13}\b')
)
and any([body.current_thread.text, subject.subject],
        regex.icontains(., 'EMŠO|matična\s+številka|unique\s+master\s+citizen')
)

Detection logic

Scope: outbound message.

Detects messages containing Slovenian Unique Master Citizen Numbers (EMŠO).

  1. outbound message
  2. any of [body.current_thread.text, subject.subject] where:
    • . matches '\\b\\d{13}\\b'
  3. any of [body.current_thread.text, subject.subject] where:
    • . matches 'EMŠO|matična\\s+številka|unique\\s+master\\s+citizen'

Inspects: body.current_thread.text, subject.subject, type.outbound. Sensors: regex.contains, regex.icontains.

Indicators matched (2)

FieldMatchValue
regex.containsregex\b\d{13}\b
regex.icontainsregexEMŠO|matična\s+številka|unique\s+master\s+citizen

Stages and Predicates

Stage 1: mql_rule

and
  any([body.current_thread.text, subject.subject])
    [body.current_thread.text, subject.subject] regex_match "EMŠO|matična\\s+številka|unique\\s+master\\s+citizen"
  any([body.current_thread.text, subject.subject])
    [body.current_thread.text, subject.subject] regex_match "\\b\\d{13}\\b"
  type.outbound eq "true"

Indicators

These rows show field, operator, and value matches.

FieldKindValuesSearch
type.outboundeq
  • true transforms: boolean
field:"type.outbound" kind:eq value:"true"

DLP: South Korea Resident Registration Number (RRN)

#
Severity
high
Type
dlp
Source
github.com/sublime-security/sublime-rules

Detects messages containing South Korean Resident Registration Numbers.

Telemetry coverage

PlatformRecord / event type
SublimeInbound email message

Message attributes

  • body
  • body.current_thread
  • subject
  • type

Rule body

type.outbound
and any([body.current_thread.text, subject.subject],
        // RRN: 13 digits in YYMMDD-XXXXXXX format
        regex.contains(., '\b\d{6}-?[1-4]\d{6}\b')
)
and any([body.current_thread.text, subject.subject],
        regex.icontains(., 'RRN|resident\s+registration|주민등록번호|korean\s+ID')
)

Detection logic

Scope: outbound message.

Detects messages containing South Korean Resident Registration Numbers.

  1. outbound message
  2. any of [body.current_thread.text, subject.subject] where:
    • . matches '\\b\\d{6}-?[1-4]\\d{6}\\b'
  3. any of [body.current_thread.text, subject.subject] where:
    • . matches 'RRN|resident\\s+registration|주민등록번호|korean\\s+ID'

Inspects: body.current_thread.text, subject.subject, type.outbound. Sensors: regex.contains, regex.icontains.

Indicators matched (2)

FieldMatchValue
regex.containsregex\b\d{6}-?[1-4]\d{6}\b
regex.icontainsregexRRN|resident\s+registration|주민등록번호|korean\s+ID

Stages and Predicates

Stage 1: mql_rule

and
  any([body.current_thread.text, subject.subject])
    [body.current_thread.text, subject.subject] regex_match "RRN|resident\\s+registration|주민등록번호|korean\\s+ID"
  any([body.current_thread.text, subject.subject])
    [body.current_thread.text, subject.subject] regex_match "\\b\\d{6}-?[1-4]\\d{6}\\b"
  type.outbound eq "true"

Indicators

These rows show field, operator, and value matches.

FieldKindValuesSearch
type.outboundeq
  • true transforms: boolean
field:"type.outbound" kind:eq value:"true"

DLP: Spain Bank Account Number

#
Severity
medium
Type
dlp
Source
github.com/sublime-security/sublime-rules

Detects messages containing Spanish bank account numbers (IBAN).

Telemetry coverage

PlatformRecord / event type
SublimeInbound email message

Message attributes

  • body
  • body.current_thread
  • subject
  • type

Rule body

type.outbound
and any([body.current_thread.text, subject.subject],
        // Spanish IBAN: ES + 2 check digits + 20 digits
        regex.contains(., '\bES\d{2}[\s]?\d{4}[\s]?\d{4}[\s]?\d{4}[\s]?\d{4}[\s]?\d{4}\b')
)
and any([body.current_thread.text, subject.subject],
        regex.icontains(., 'IBAN|cuenta\s+bancaria|bank\s+account')
)

Detection logic

Scope: outbound message.

Detects messages containing Spanish bank account numbers (IBAN).

  1. outbound message
  2. any of [body.current_thread.text, subject.subject] where:
    • . matches '\\bES\\d{2}[\\s]?\\d{4}[\\s]?\\d{4}[\\s]?\\d{4}[\\s]?\\d{4}[\\s]?\\d{4}\\b'
  3. any of [body.current_thread.text, subject.subject] where:
    • . matches 'IBAN|cuenta\\s+bancaria|bank\\s+account'

Inspects: body.current_thread.text, subject.subject, type.outbound. Sensors: regex.contains, regex.icontains.

Indicators matched (2)

FieldMatchValue
regex.containsregex\bES\d{2}[\s]?\d{4}[\s]?\d{4}[\s]?\d{4}[\s]?\d{4}[\s]?\d{4}\b
regex.icontainsregexIBAN|cuenta\s+bancaria|bank\s+account

Stages and Predicates

Stage 1: mql_rule

and
  any([body.current_thread.text, subject.subject])
    [body.current_thread.text, subject.subject] regex_match "IBAN|cuenta\\s+bancaria|bank\\s+account"
  any([body.current_thread.text, subject.subject])
    [body.current_thread.text, subject.subject] regex_match "\\bES\\d{2}[\\s]?\\d{4}[\\s]?\\d{4}[\\s]?\\d{4}[\\s]?\\d{4}[\\s]?\\d{4}\\b"
  type.outbound eq "true"

Indicators

These rows show field, operator, and value matches.

FieldKindValuesSearch
type.outboundeq
  • true transforms: boolean
field:"type.outbound" kind:eq value:"true"

DLP: Spain DNI/NIE

#
Severity
high
Type
dlp
Source
github.com/sublime-security/sublime-rules

Detects messages containing Spanish DNI (National Identity Document) or NIE (Foreigner Identity Number).

Telemetry coverage

PlatformRecord / event type
SublimeInbound email message

Message attributes

  • body
  • body.current_thread
  • subject
  • type

Rule body

type.outbound
and any([body.current_thread.text, subject.subject],
        // DNI: 8 digits + 1 letter (e.g., 12345678A)
        // NIE: X/Y/Z + 7 digits + 1 letter (e.g., X1234567A)
        regex.contains(., '\b(?:[XYZ]\d{7}|[\d]{8})[A-Z]\b')
)
and any([body.current_thread.text, subject.subject],
        regex.icontains(., 'DNI|NIE|documento\s+nacional|identidad')
)

Detection logic

Scope: outbound message.

Detects messages containing Spanish DNI (National Identity Document) or NIE (Foreigner Identity Number).

  1. outbound message
  2. any of [body.current_thread.text, subject.subject] where:
    • . matches '\\b(?:[XYZ]\\d{7}|[\\d]{8})[A-Z]\\b'
  3. any of [body.current_thread.text, subject.subject] where:
    • . matches 'DNI|NIE|documento\\s+nacional|identidad'

Inspects: body.current_thread.text, subject.subject, type.outbound. Sensors: regex.contains, regex.icontains.

Indicators matched (2)

FieldMatchValue
regex.containsregex\b(?:[XYZ]\d{7}|[\d]{8})[A-Z]\b
regex.icontainsregexDNI|NIE|documento\s+nacional|identidad

Stages and Predicates

Stage 1: mql_rule

and
  any([body.current_thread.text, subject.subject])
    [body.current_thread.text, subject.subject] regex_match "DNI|NIE|documento\\s+nacional|identidad"
  any([body.current_thread.text, subject.subject])
    [body.current_thread.text, subject.subject] regex_match "\\b(?:[XYZ]\\d{7}|[\\d]{8})[A-Z]\\b"
  type.outbound eq "true"

Indicators

These rows show field, operator, and value matches.

FieldKindValuesSearch
type.outboundeq
  • true transforms: boolean
field:"type.outbound" kind:eq value:"true"

DLP: Spain Passport Number

#
Severity
high
Type
dlp
Source
github.com/sublime-security/sublime-rules

Detects messages containing Spanish passport numbers.

Telemetry coverage

PlatformRecord / event type
SublimeInbound email message

Message attributes

  • body
  • body.current_thread
  • sender.email
  • subject
  • type

Rule body

type.outbound
and any([body.current_thread.text, subject.subject],
        // Spanish passport: 3 letters + 6 digits (e.g., AAA123456)
        regex.contains(., '\b[A-Z]{3}\d{6}\b')
)
and any([body.current_thread.text, subject.subject],
        regex.icontains(., 'pasaporte|passport')
)
and (
  strings.icontains(sender.email.domain.tld, "es")
  or strings.icontains(body.current_thread.text, "spain")
  or strings.icontains(body.current_thread.text, "españa")
)

Detection logic

Scope: outbound message.

Detects messages containing Spanish passport numbers.

  1. outbound message
  2. any of [body.current_thread.text, subject.subject] where:
    • . matches '\\b[A-Z]{3}\\d{6}\\b'
  3. any of [body.current_thread.text, subject.subject] where:
    • . matches 'pasaporte|passport'
  4. any of:
    • sender.email.domain.tld contains 'es'
    • body.current_thread.text contains 'spain'
    • body.current_thread.text contains 'españa'

Inspects: body.current_thread.text, sender.email.domain.tld, subject.subject, type.outbound. Sensors: regex.contains, regex.icontains, strings.icontains.

Indicators matched (5)

FieldMatchValue
regex.containsregex\b[A-Z]{3}\d{6}\b
regex.icontainsregexpasaporte|passport
strings.icontainssubstringes
strings.icontainssubstringspain
strings.icontainssubstringespaña

Stages and Predicates

Stage 1: mql_rule

and
  any([body.current_thread.text, subject.subject])
    [body.current_thread.text, subject.subject] regex_match "\\b[A-Z]{3}\\d{6}\\b"
  any([body.current_thread.text, subject.subject])
    [body.current_thread.text, subject.subject] regex_match "pasaporte|passport"
  or
    body.current_thread.text contains "españa"
    body.current_thread.text contains "spain"
    sender.email.domain.tld contains "es"
  type.outbound eq "true"

Indicators

These rows show field, operator, and value matches.

DLP: Spain Social Security Number

#
Severity
high
Type
dlp
Source
github.com/sublime-security/sublime-rules

Detects messages containing Spanish Social Security Numbers (Número de la Seguridad Social).

Telemetry coverage

PlatformRecord / event type
SublimeInbound email message

Message attributes

  • body
  • body.current_thread
  • subject
  • type

Rule body

type.outbound
and any([body.current_thread.text, subject.subject],
        // Spanish SSN: 12 digits in XX/XXXXXXXX/XX format
        regex.contains(., '\b\d{2}[\s/]?\d{8}[\s/]?\d{2}\b')
)
and any([body.current_thread.text, subject.subject],
        regex.icontains(., 'seguridad\s+social|social\s+security|NSS')
)

Detection logic

Scope: outbound message.

Detects messages containing Spanish Social Security Numbers (Número de la Seguridad Social).

  1. outbound message
  2. any of [body.current_thread.text, subject.subject] where:
    • . matches '\\b\\d{2}[\\s/]?\\d{8}[\\s/]?\\d{2}\\b'
  3. any of [body.current_thread.text, subject.subject] where:
    • . matches 'seguridad\\s+social|social\\s+security|NSS'

Inspects: body.current_thread.text, subject.subject, type.outbound. Sensors: regex.contains, regex.icontains.

Indicators matched (2)

FieldMatchValue
regex.containsregex\b\d{2}[\s/]?\d{8}[\s/]?\d{2}\b
regex.icontainsregexseguridad\s+social|social\s+security|NSS

Stages and Predicates

Stage 1: mql_rule

and
  any([body.current_thread.text, subject.subject])
    [body.current_thread.text, subject.subject] regex_match "\\b\\d{2}[\\s/]?\\d{8}[\\s/]?\\d{2}\\b"
  any([body.current_thread.text, subject.subject])
    [body.current_thread.text, subject.subject] regex_match "seguridad\\s+social|social\\s+security|NSS"
  type.outbound eq "true"

Indicators

These rows show field, operator, and value matches.

FieldKindValuesSearch
type.outboundeq
  • true transforms: boolean
field:"type.outbound" kind:eq value:"true"

DLP: Spain Tax Identification Number

#
Severity
medium
Type
dlp
Source
github.com/sublime-security/sublime-rules

Detects messages containing Spanish Tax Identification Numbers (NIF).

Telemetry coverage

PlatformRecord / event type
SublimeInbound email message

Message attributes

  • body
  • body.current_thread
  • subject
  • type

Rule body

type.outbound
and any([body.current_thread.text, subject.subject],
        // Spanish NIF: 8 digits + 1 letter or 1 letter + 7 digits + 1 letter
        regex.contains(., '\b(?:[A-Z]?\d{7,8}[A-Z])\b')
)
and any([body.current_thread.text, subject.subject],
        regex.icontains(., 'NIF|número\s+de\s+identificación\s+fiscal|tax\s+ID')
)

Detection logic

Scope: outbound message.

Detects messages containing Spanish Tax Identification Numbers (NIF).

  1. outbound message
  2. any of [body.current_thread.text, subject.subject] where:
    • . matches '\\b(?:[A-Z]?\\d{7,8}[A-Z])\\b'
  3. any of [body.current_thread.text, subject.subject] where:
    • . matches 'NIF|número\\s+de\\s+identificación\\s+fiscal|tax\\s+ID'

Inspects: body.current_thread.text, subject.subject, type.outbound. Sensors: regex.contains, regex.icontains.

Indicators matched (2)

FieldMatchValue
regex.containsregex\b(?:[A-Z]?\d{7,8}[A-Z])\b
regex.icontainsregexNIF|número\s+de\s+identificación\s+fiscal|tax\s+ID

Stages and Predicates

Stage 1: mql_rule

and
  any([body.current_thread.text, subject.subject])
    [body.current_thread.text, subject.subject] regex_match "NIF|número\\s+de\\s+identificación\\s+fiscal|tax\\s+ID"
  any([body.current_thread.text, subject.subject])
    [body.current_thread.text, subject.subject] regex_match "\\b(?:[A-Z]?\\d{7,8}[A-Z])\\b"
  type.outbound eq "true"

Indicators

These rows show field, operator, and value matches.

FieldKindValuesSearch
type.outboundeq
  • true transforms: boolean
field:"type.outbound" kind:eq value:"true"

DLP: SSL Certificate

#
Severity
medium
Type
dlp
Source
github.com/sublime-security/sublime-rules

Detects messages containing SSL/TLS certificates.

Telemetry coverage

PlatformRecord / event type
SublimeInbound email message

Message attributes

  • body
  • body.current_thread
  • subject
  • type

Rule body

type.outbound
and any([body.current_thread.text, subject.subject],
        regex.contains(., '-----BEGIN\s+CERTIFICATE-----')
)
and any([body.current_thread.text, subject.subject],
        regex.contains(., '-----END\s+CERTIFICATE-----')
)

Detection logic

Scope: outbound message.

Detects messages containing SSL/TLS certificates.

  1. outbound message
  2. any of [body.current_thread.text, subject.subject] where:
    • . matches '-----BEGIN\\s+CERTIFICATE-----'
  3. any of [body.current_thread.text, subject.subject] where:
    • . matches '-----END\\s+CERTIFICATE-----'

Inspects: body.current_thread.text, subject.subject, type.outbound. Sensors: regex.contains.

Indicators matched (2)

FieldMatchValue
regex.containsregex-----BEGIN\s+CERTIFICATE-----
regex.containsregex-----END\s+CERTIFICATE-----

Stages and Predicates

Stage 1: mql_rule

and
  any([body.current_thread.text, subject.subject])
    [body.current_thread.text, subject.subject] regex_match "-----BEGIN\\s+CERTIFICATE-----"
  any([body.current_thread.text, subject.subject])
    [body.current_thread.text, subject.subject] regex_match "-----END\\s+CERTIFICATE-----"
  type.outbound eq "true"

Indicators

These rows show field, operator, and value matches.

FieldKindValuesSearch
type.outboundeq
  • true transforms: boolean
field:"type.outbound" kind:eq value:"true"

DLP: Sweden National ID

#
Severity
high
Type
dlp
Source
github.com/sublime-security/sublime-rules

Detects messages containing Swedish National ID numbers (personnummer).

Telemetry coverage

PlatformRecord / event type
SublimeInbound email message

Message attributes

  • body
  • body.current_thread
  • subject
  • type

Rule body

type.outbound
and any([body.current_thread.text, subject.subject],
        // Swedish Personnummer: YYYYMMDD-XXXX or YYMMDD-XXXX
        regex.contains(., '\b(?:\d{8}|\d{6})[\s\-]\d{4}\b')
)
and any([body.current_thread.text, subject.subject],
        regex.icontains(., 'personnummer|national\s+ID')
)

Detection logic

Scope: outbound message.

Detects messages containing Swedish National ID numbers (personnummer).

  1. outbound message
  2. any of [body.current_thread.text, subject.subject] where:
    • . matches '\\b(?:\\d{8}|\\d{6})[\\s\\-]\\d{4}\\b'
  3. any of [body.current_thread.text, subject.subject] where:
    • . matches 'personnummer|national\\s+ID'

Inspects: body.current_thread.text, subject.subject, type.outbound. Sensors: regex.contains, regex.icontains.

Indicators matched (2)

FieldMatchValue
regex.containsregex\b(?:\d{8}|\d{6})[\s\-]\d{4}\b
regex.icontainsregexpersonnummer|national\s+ID

Stages and Predicates

Stage 1: mql_rule

and
  any([body.current_thread.text, subject.subject])
    [body.current_thread.text, subject.subject] regex_match "\\b(?:\\d{8}|\\d{6})[\\s\\-]\\d{4}\\b"
  any([body.current_thread.text, subject.subject])
    [body.current_thread.text, subject.subject] regex_match "personnummer|national\\s+ID"
  type.outbound eq "true"

Indicators

These rows show field, operator, and value matches.

FieldKindValuesSearch
type.outboundeq
  • true transforms: boolean
field:"type.outbound" kind:eq value:"true"

DLP: Sweden Tax Identification Number

#
Severity
medium
Type
dlp
Source
github.com/sublime-security/sublime-rules

Detects messages containing Swedish Tax Identification Numbers.

Telemetry coverage

PlatformRecord / event type
SublimeInbound email message

Message attributes

  • body
  • body.current_thread
  • sender.email
  • subject
  • type

Rule body

type.outbound
and any([body.current_thread.text, subject.subject],
        // Swedish Tax ID: 12 digits (same as personnummer for individuals)
        regex.contains(., '\b\d{12}\b')
)
and any([body.current_thread.text, subject.subject],
        regex.icontains(., 'skatteregistrering|tax\s+ID|TIN')
)
and (
  strings.icontains(sender.email.domain.tld, "se")
  or strings.icontains(body.current_thread.text, "sweden")
)

Detection logic

Scope: outbound message.

Detects messages containing Swedish Tax Identification Numbers.

  1. outbound message
  2. any of [body.current_thread.text, subject.subject] where:
    • . matches '\\b\\d{12}\\b'
  3. any of [body.current_thread.text, subject.subject] where:
    • . matches 'skatteregistrering|tax\\s+ID|TIN'
  4. any of:
    • sender.email.domain.tld contains 'se'
    • body.current_thread.text contains 'sweden'

Inspects: body.current_thread.text, sender.email.domain.tld, subject.subject, type.outbound. Sensors: regex.contains, regex.icontains, strings.icontains.

Indicators matched (4)

FieldMatchValue
regex.containsregex\b\d{12}\b
regex.icontainsregexskatteregistrering|tax\s+ID|TIN
strings.icontainssubstringse
strings.icontainssubstringsweden

Stages and Predicates

Stage 1: mql_rule

and
  any([body.current_thread.text, subject.subject])
    [body.current_thread.text, subject.subject] regex_match "\\b\\d{12}\\b"
  any([body.current_thread.text, subject.subject])
    [body.current_thread.text, subject.subject] regex_match "skatteregistrering|tax\\s+ID|TIN"
  or
    body.current_thread.text contains "sweden"
    sender.email.domain.tld contains "se"
  type.outbound eq "true"

Indicators

These rows show field, operator, and value matches.

DLP: Taiwan ID Number

#
Severity
high
Type
dlp
Source
github.com/sublime-security/sublime-rules

Detects messages containing Taiwan National Identification Card numbers.

Telemetry coverage

PlatformRecord / event type
SublimeInbound email message

Message attributes

  • body
  • body.current_thread
  • sender.email
  • subject
  • type

Rule body

type.outbound
and any([body.current_thread.text, subject.subject],
        // Taiwan ID: 1 letter + 9 digits
        regex.contains(., '\b[A-Z]\d{9}\b')
)
and any([body.current_thread.text, subject.subject],
        regex.icontains(., 'taiwan|national\s+ID|身分證')
)
and (
  strings.icontains(sender.email.domain.tld, "tw")
  or strings.icontains(body.current_thread.text, "taiwan")
)

Detection logic

Scope: outbound message.

Detects messages containing Taiwan National Identification Card numbers.

  1. outbound message
  2. any of [body.current_thread.text, subject.subject] where:
    • . matches '\\b[A-Z]\\d{9}\\b'
  3. any of [body.current_thread.text, subject.subject] where:
    • . matches 'taiwan|national\\s+ID|身分證'
  4. any of:
    • sender.email.domain.tld contains 'tw'
    • body.current_thread.text contains 'taiwan'

Inspects: body.current_thread.text, sender.email.domain.tld, subject.subject, type.outbound. Sensors: regex.contains, regex.icontains, strings.icontains.

Indicators matched (4)

FieldMatchValue
regex.containsregex\b[A-Z]\d{9}\b
regex.icontainsregextaiwan|national\s+ID|身分證
strings.icontainssubstringtw
strings.icontainssubstringtaiwan

Stages and Predicates

Stage 1: mql_rule

and
  any([body.current_thread.text, subject.subject])
    [body.current_thread.text, subject.subject] regex_match "\\b[A-Z]\\d{9}\\b"
  any([body.current_thread.text, subject.subject])
    [body.current_thread.text, subject.subject] regex_match "taiwan|national\\s+ID|身分證"
  or
    body.current_thread.text contains "taiwan"
    sender.email.domain.tld contains "tw"
  type.outbound eq "true"

Indicators

These rows show field, operator, and value matches.

DLP: Turkey ID Number

#
Severity
high
Type
dlp
Source
github.com/sublime-security/sublime-rules

Detects messages containing Turkish National Identification Numbers.

Telemetry coverage

PlatformRecord / event type
SublimeInbound email message

Message attributes

  • body
  • body.current_thread
  • sender.email
  • subject
  • type

Rule body

type.outbound
and any([body.current_thread.text, subject.subject],
        // Turkish ID: 11 digits
        regex.contains(., '\b[1-9]\d{10}\b')
)
and any([body.current_thread.text, subject.subject],
        regex.icontains(., 'TC\s+kimlik|turkish\s+ID|türkiye|turkey')
)
and (
  strings.icontains(sender.email.domain.tld, "tr")
  or strings.icontains(body.current_thread.text, "turkey")
  or strings.icontains(body.current_thread.text, "türkiye")
)

Detection logic

Scope: outbound message.

Detects messages containing Turkish National Identification Numbers.

  1. outbound message
  2. any of [body.current_thread.text, subject.subject] where:
    • . matches '\\b[1-9]\\d{10}\\b'
  3. any of [body.current_thread.text, subject.subject] where:
    • . matches 'TC\\s+kimlik|turkish\\s+ID|türkiye|turkey'
  4. any of:
    • sender.email.domain.tld contains 'tr'
    • body.current_thread.text contains 'turkey'
    • body.current_thread.text contains 'türkiye'

Inspects: body.current_thread.text, sender.email.domain.tld, subject.subject, type.outbound. Sensors: regex.contains, regex.icontains, strings.icontains.

Indicators matched (5)

FieldMatchValue
regex.containsregex\b[1-9]\d{10}\b
regex.icontainsregexTC\s+kimlik|turkish\s+ID|türkiye|turkey
strings.icontainssubstringtr
strings.icontainssubstringturkey
strings.icontainssubstringtürkiye

Stages and Predicates

Stage 1: mql_rule

and
  any([body.current_thread.text, subject.subject])
    [body.current_thread.text, subject.subject] regex_match "TC\\s+kimlik|turkish\\s+ID|türkiye|turkey"
  any([body.current_thread.text, subject.subject])
    [body.current_thread.text, subject.subject] regex_match "\\b[1-9]\\d{10}\\b"
  or
    body.current_thread.text contains "turkey"
    body.current_thread.text contains "türkiye"
    sender.email.domain.tld contains "tr"
  type.outbound eq "true"

Indicators

These rows show field, operator, and value matches.

DLP: UK National Health Service Number

#
Severity
high
Type
dlp
Source
github.com/sublime-security/sublime-rules

Detects messages containing UK NHS numbers.

Telemetry coverage

PlatformRecord / event type
SublimeInbound email message

Message attributes

  • body
  • body.current_thread
  • subject
  • type

Rule body

type.outbound
and any([body.current_thread.text, subject.subject],
        // NHS number: 10 digits in XXX XXX XXXX format
        regex.contains(., '\b\d{3}[\s]?\d{3}[\s]?\d{4}\b')
)
and any([body.current_thread.text, subject.subject],
        regex.icontains(., 'NHS|national\s+health\s+service|health\s+number')
)

Detection logic

Scope: outbound message.

Detects messages containing UK NHS numbers.

  1. outbound message
  2. any of [body.current_thread.text, subject.subject] where:
    • . matches '\\b\\d{3}[\\s]?\\d{3}[\\s]?\\d{4}\\b'
  3. any of [body.current_thread.text, subject.subject] where:
    • . matches 'NHS|national\\s+health\\s+service|health\\s+number'

Inspects: body.current_thread.text, subject.subject, type.outbound. Sensors: regex.contains, regex.icontains.

Indicators matched (2)

FieldMatchValue
regex.containsregex\b\d{3}[\s]?\d{3}[\s]?\d{4}\b
regex.icontainsregexNHS|national\s+health\s+service|health\s+number

Stages and Predicates

Stage 1: mql_rule

and
  any([body.current_thread.text, subject.subject])
    [body.current_thread.text, subject.subject] regex_match "NHS|national\\s+health\\s+service|health\\s+number"
  any([body.current_thread.text, subject.subject])
    [body.current_thread.text, subject.subject] regex_match "\\b\\d{3}[\\s]?\\d{3}[\\s]?\\d{4}\\b"
  type.outbound eq "true"

Indicators

These rows show field, operator, and value matches.

FieldKindValuesSearch
type.outboundeq
  • true transforms: boolean
field:"type.outbound" kind:eq value:"true"

DLP: UK National Insurance Number (NINO)

#
Severity
high
Type
dlp
Source
github.com/sublime-security/sublime-rules

Detects messages containing UK National Insurance Numbers.

Telemetry coverage

PlatformRecord / event type
SublimeInbound email message

Message attributes

  • body
  • body.current_thread
  • subject
  • type

Rule body

type.outbound
and any([body.current_thread.text, subject.subject],
        // NINO: 2 letters + 6 digits + 1 letter (e.g., AB123456C)
        regex.contains(., '\b[A-CEGHJ-PR-TW-Z][A-CEGHJ-NPR-TW-Z]\d{6}[A-D]\b')
)
and any([body.current_thread.text, subject.subject],
        regex.icontains(., 'NINO|national\s+insurance|NI\s+number')
)

Detection logic

Scope: outbound message.

Detects messages containing UK National Insurance Numbers.

  1. outbound message
  2. any of [body.current_thread.text, subject.subject] where:
    • . matches '\\b[A-CEGHJ-PR-TW-Z][A-CEGHJ-NPR-TW-Z]\\d{6}[A-D]\\b'
  3. any of [body.current_thread.text, subject.subject] where:
    • . matches 'NINO|national\\s+insurance|NI\\s+number'

Inspects: body.current_thread.text, subject.subject, type.outbound. Sensors: regex.contains, regex.icontains.

Indicators matched (2)

FieldMatchValue
regex.containsregex\b[A-CEGHJ-PR-TW-Z][A-CEGHJ-NPR-TW-Z]\d{6}[A-D]\b
regex.icontainsregexNINO|national\s+insurance|NI\s+number

Stages and Predicates

Stage 1: mql_rule

and
  any([body.current_thread.text, subject.subject])
    [body.current_thread.text, subject.subject] regex_match "NINO|national\\s+insurance|NI\\s+number"
  any([body.current_thread.text, subject.subject])
    [body.current_thread.text, subject.subject] regex_match "\\b[A-CEGHJ-PR-TW-Z][A-CEGHJ-NPR-TW-Z]\\d{6}[A-D]\\b"
  type.outbound eq "true"

Indicators

These rows show field, operator, and value matches.

FieldKindValuesSearch
type.outboundeq
  • true transforms: boolean
field:"type.outbound" kind:eq value:"true"

DLP: UK Passport Number

#
Severity
high
Type
dlp
Source
github.com/sublime-security/sublime-rules

Detects messages containing UK passport numbers.

Telemetry coverage

PlatformRecord / event type
SublimeInbound email message

Message attributes

  • body
  • body.current_thread
  • sender.email
  • subject
  • type

Rule body

type.outbound
and any([body.current_thread.text, subject.subject],
        // UK passport: 9 digits or alphanumeric
        regex.contains(., '\b\d{9}|[A-Z]{2}\d{7}\b')
)
and any([body.current_thread.text, subject.subject],
        regex.icontains(., 'passport')
)
and (
  strings.icontains(sender.email.domain.tld, "uk")
  or strings.icontains(sender.email.domain.tld, "gb")
  or strings.icontains(body.current_thread.text, "united kingdom")
  or strings.icontains(body.current_thread.text, "UK")
)

Detection logic

Scope: outbound message.

Detects messages containing UK passport numbers.

  1. outbound message
  2. any of [body.current_thread.text, subject.subject] where:
    • . matches '\\b\\d{9}|[A-Z]{2}\\d{7}\\b'
  3. any of [body.current_thread.text, subject.subject] where:
    • . matches 'passport'
  4. any of:
    • sender.email.domain.tld contains 'uk'
    • sender.email.domain.tld contains 'gb'
    • body.current_thread.text contains 'united kingdom'
    • body.current_thread.text contains 'UK'

Inspects: body.current_thread.text, sender.email.domain.tld, subject.subject, type.outbound. Sensors: regex.contains, regex.icontains, strings.icontains.

Indicators matched (6)

FieldMatchValue
regex.containsregex\b\d{9}|[A-Z]{2}\d{7}\b
regex.icontainsregexpassport
strings.icontainssubstringuk
strings.icontainssubstringgb
strings.icontainssubstringunited kingdom
strings.icontainssubstringUK

Stages and Predicates

Stage 1: mql_rule

and
  any([body.current_thread.text, subject.subject])
    [body.current_thread.text, subject.subject] regex_match "\\b\\d{9}|[A-Z]{2}\\d{7}\\b"
  any([body.current_thread.text, subject.subject])
    [body.current_thread.text, subject.subject] regex_match "passport"
  or
    body.current_thread.text contains "UK"
    body.current_thread.text contains "united kingdom"
    sender.email.domain.tld contains "gb"
    sender.email.domain.tld contains "uk"
  type.outbound eq "true"

Indicators

These rows show field, operator, and value matches.

DLP: UK SWIFT Code

#
Severity
medium
Type
dlp
Source
github.com/sublime-security/sublime-rules

Detects messages containing UK SWIFT/BIC codes for financial institutions.

Telemetry coverage

PlatformRecord / event type
SublimeInbound email message

Message attributes

  • body
  • body.current_thread
  • subject
  • type

Rule body

type.outbound
and any(ml.logo_detect(beta.message_screenshot()).brands, strings.ilike(.name, "*bank*", "*financial*"))
and any([body.current_thread.text, subject.subject],
        // SWIFT code: 4 letters (bank) + 2 letters (GB) + 2 chars (location) + optional 3 chars (branch)
        regex.contains(., '\b[A-Z]{4}GB[A-Z0-9]{2}(?:[A-Z0-9]{3})?\b')
)

Detection logic

Scope: outbound message.

Detects messages containing UK SWIFT/BIC codes for financial institutions.

  1. outbound message
  2. any of ml.logo_detect(beta.message_screenshot()).brands where:
    • .name matches any of 2 patterns
      • *bank*
      • *financial*
  3. any of [body.current_thread.text, subject.subject] where:
    • . matches '\\b[A-Z]{4}GB[A-Z0-9]{2}(?:[A-Z0-9]{3})?\\b'

Inspects: body.current_thread.text, subject.subject, type.outbound. Sensors: beta.message_screenshot, ml.logo_detect, regex.contains, strings.ilike.

Indicators matched (3)

FieldMatchValue
strings.ilikesubstring*bank*
strings.ilikesubstring*financial*
regex.containsregex\b[A-Z]{4}GB[A-Z0-9]{2}(?:[A-Z0-9]{3})?\b

Stages and Predicates

Stage 1: mql_rule

and
  any(ml.logo_detect(beta.message_screenshot()).brands)
    or
      ml.logo_detect(beta.message_screenshot()).brands.name match "bank"
      ml.logo_detect(beta.message_screenshot()).brands.name match "financial"
  any([body.current_thread.text, subject.subject])
    [body.current_thread.text, subject.subject] regex_match "\\b[A-Z]{4}GB[A-Z0-9]{2}(?:[A-Z0-9]{3})?\\b"
  type.outbound eq "true"

Indicators

These rows show field, operator, and value matches.

FieldKindValuesSearch
type.outboundeq
  • true transforms: boolean
field:"type.outbound" kind:eq value:"true"

DLP: US Bank Account Number

#
Severity
medium
Type
dlp
Source
github.com/sublime-security/sublime-rules

Detects messages containing US bank account numbers with ABA routing numbers.

Telemetry coverage

PlatformRecord / event type
SublimeInbound email message

Message attributes

  • body
  • body.current_thread
  • subject
  • type

Rule body

type.outbound
and any([body.current_thread.text, subject.subject],
        // ABA routing: 9 digits, Account: 8-17 digits
        regex.contains(., '\b\d{9}\b.*\b\d{8,17}\b|\b\d{8,17}\b.*\b\d{9}\b')
)
and any([body.current_thread.text, subject.subject],
        regex.icontains(., 'routing|ABA|bank\s+account|account\s+number')
)

Detection logic

Scope: outbound message.

Detects messages containing US bank account numbers with ABA routing numbers.

  1. outbound message
  2. any of [body.current_thread.text, subject.subject] where:
    • . matches '\\b\\d{9}\\b.*\\b\\d{8,17}\\b|\\b\\d{8,17}\\b.*\\b\\d{9}\\b'
  3. any of [body.current_thread.text, subject.subject] where:
    • . matches 'routing|ABA|bank\\s+account|account\\s+number'

Inspects: body.current_thread.text, subject.subject, type.outbound. Sensors: regex.contains, regex.icontains.

Indicators matched (2)

FieldMatchValue
regex.containsregex\b\d{9}\b.*\b\d{8,17}\b|\b\d{8,17}\b.*\b\d{9}\b
regex.icontainsregexrouting|ABA|bank\s+account|account\s+number

Stages and Predicates

Stage 1: mql_rule

and
  any([body.current_thread.text, subject.subject])
    [body.current_thread.text, subject.subject] regex_match "\\b\\d{9}\\b.*\\b\\d{8,17}\\b|\\b\\d{8,17}\\b.*\\b\\d{9}\\b"
  any([body.current_thread.text, subject.subject])
    [body.current_thread.text, subject.subject] regex_match "routing|ABA|bank\\s+account|account\\s+number"
  type.outbound eq "true"

Indicators

These rows show field, operator, and value matches.

FieldKindValuesSearch
type.outboundeq
  • true transforms: boolean
field:"type.outbound" kind:eq value:"true"

DLP: US Driver's License Number

#
Severity
medium
Type
dlp
Source
github.com/sublime-security/sublime-rules

Detects messages containing US driver's license numbers.

Telemetry coverage

PlatformRecord / event type
SublimeInbound email message

Message attributes

  • body
  • body.current_thread
  • subject
  • type

Rule body

type.outbound
and any([body.current_thread.text, subject.subject],
        // US DL varies by state, typically 7-12 alphanumeric
        regex.contains(., '\b[A-Z0-9]{7,12}\b')
)
and any([body.current_thread.text, subject.subject],
        regex.icontains(., 'driver.?s?\s+licen[cs]e|DL\s+number|DMV')
)

Detection logic

Scope: outbound message.

Detects messages containing US driver's license numbers.

  1. outbound message
  2. any of [body.current_thread.text, subject.subject] where:
    • . matches '\\b[A-Z0-9]{7,12}\\b'
  3. any of [body.current_thread.text, subject.subject] where:
    • . matches 'driver.?s?\\s+licen[cs]e|DL\\s+number|DMV'

Inspects: body.current_thread.text, subject.subject, type.outbound. Sensors: regex.contains, regex.icontains.

Indicators matched (2)

FieldMatchValue
regex.containsregex\b[A-Z0-9]{7,12}\b
regex.icontainsregexdriver.?s?\s+licen[cs]e|DL\s+number|DMV

Stages and Predicates

Stage 1: mql_rule

and
  any([body.current_thread.text, subject.subject])
    [body.current_thread.text, subject.subject] regex_match "\\b[A-Z0-9]{7,12}\\b"
  any([body.current_thread.text, subject.subject])
    [body.current_thread.text, subject.subject] regex_match "driver.?s?\\s+licen[cs]e|DL\\s+number|DMV"
  type.outbound eq "true"

Indicators

These rows show field, operator, and value matches.

FieldKindValuesSearch
type.outboundeq
  • true transforms: boolean
field:"type.outbound" kind:eq value:"true"

DLP: US ICD-10-CM Code

#
Severity
medium
Type
dlp
Source
github.com/sublime-security/sublime-rules

Detects messages containing ICD-10-CM diagnosis and procedure codes.

Telemetry coverage

PlatformRecord / event type
SublimeInbound email message

Message attributes

  • body
  • body.current_thread
  • subject
  • type

Rule body

type.outbound
and any([body.current_thread.text, subject.subject],
        // ICD-10-CM diagnosis: letter + 2 digits + optional dot + up to 4 more alphanumeric
        // ICD-10-PCS procedure: 7 alphanumeric (no I or O)
        regex.contains(., '\b[A-Z]\d{2}\.?[A-Z0-9]{0,4}\b|\b[A-HJ-NP-Z0-9]{7}\b')
)
and any([body.current_thread.text, subject.subject],
        regex.icontains(., 'ICD-?10|diagnosis\s+code|procedure\s+code')
)

Detection logic

Scope: outbound message.

Detects messages containing ICD-10-CM diagnosis and procedure codes.

  1. outbound message
  2. any of [body.current_thread.text, subject.subject] where:
    • . matches '\\b[A-Z]\\d{2}\\.?[A-Z0-9]{0,4}\\b|\\b[A-HJ-NP-Z0-9]{7}\\b'
  3. any of [body.current_thread.text, subject.subject] where:
    • . matches 'ICD-?10|diagnosis\\s+code|procedure\\s+code'

Inspects: body.current_thread.text, subject.subject, type.outbound. Sensors: regex.contains, regex.icontains.

Indicators matched (2)

FieldMatchValue
regex.containsregex\b[A-Z]\d{2}\.?[A-Z0-9]{0,4}\b|\b[A-HJ-NP-Z0-9]{7}\b
regex.icontainsregexICD-?10|diagnosis\s+code|procedure\s+code

Stages and Predicates

Stage 1: mql_rule

and
  any([body.current_thread.text, subject.subject])
    [body.current_thread.text, subject.subject] regex_match "ICD-?10|diagnosis\\s+code|procedure\\s+code"
  any([body.current_thread.text, subject.subject])
    [body.current_thread.text, subject.subject] regex_match "\\b[A-Z]\\d{2}\\.?[A-Z0-9]{0,4}\\b|\\b[A-HJ-NP-Z0-9]{7}\\b"
  type.outbound eq "true"

Indicators

These rows show field, operator, and value matches.

FieldKindValuesSearch
type.outboundeq
  • true transforms: boolean
field:"type.outbound" kind:eq value:"true"

DLP: US ICD-9-CM Code

#
Severity
medium
Type
dlp
Source
github.com/sublime-security/sublime-rules

Detects messages containing ICD-9-CM diagnosis and procedure codes.

Telemetry coverage

PlatformRecord / event type
SublimeInbound email message

Message attributes

  • body
  • body.current_thread
  • subject
  • type

Rule body

type.outbound
and any([body.current_thread.text, subject.subject],
        // ICD-9 diagnosis: 3-5 chars, starts with digit or E/V
        // ICD-9 procedure: 3-4 digits only
        regex.contains(., '\b(?:[EVev]?\d{3}\.?\d{0,2}|\d{3,4})\b')
)
and any([body.current_thread.text, subject.subject],
        regex.icontains(., 'ICD-?9|diagnosis\s+code|procedure\s+code')
)

Detection logic

Scope: outbound message.

Detects messages containing ICD-9-CM diagnosis and procedure codes.

  1. outbound message
  2. any of [body.current_thread.text, subject.subject] where:
    • . matches '\\b(?:[EVev]?\\d{3}\\.?\\d{0,2}|\\d{3,4})\\b'
  3. any of [body.current_thread.text, subject.subject] where:
    • . matches 'ICD-?9|diagnosis\\s+code|procedure\\s+code'

Inspects: body.current_thread.text, subject.subject, type.outbound. Sensors: regex.contains, regex.icontains.

Indicators matched (2)

FieldMatchValue
regex.containsregex\b(?:[EVev]?\d{3}\.?\d{0,2}|\d{3,4})\b
regex.icontainsregexICD-?9|diagnosis\s+code|procedure\s+code

Stages and Predicates

Stage 1: mql_rule

and
  any([body.current_thread.text, subject.subject])
    [body.current_thread.text, subject.subject] regex_match "ICD-?9|diagnosis\\s+code|procedure\\s+code"
  any([body.current_thread.text, subject.subject])
    [body.current_thread.text, subject.subject] regex_match "\\b(?:[EVev]?\\d{3}\\.?\\d{0,2}|\\d{3,4})\\b"
  type.outbound eq "true"

Indicators

These rows show field, operator, and value matches.

FieldKindValuesSearch
type.outboundeq
  • true transforms: boolean
field:"type.outbound" kind:eq value:"true"

DLP: US Individual Taxpayer Identification Number (ITIN)

#
Severity
high
Type
dlp
Source
github.com/sublime-security/sublime-rules

Detects messages containing US Individual Taxpayer Identification Numbers.

Telemetry coverage

PlatformRecord / event type
SublimeInbound email message

Message attributes

  • body
  • body.current_thread
  • subject
  • type

Rule body

type.outbound
and any([body.current_thread.text, subject.subject],
        // ITIN: 9XX-XX-XXXX format (starts with 9)
        regex.contains(., '\b9\d{2}[\s\-]?\d{2}[\s\-]?\d{4}\b')
)
and any([body.current_thread.text, subject.subject],
        regex.icontains(., 'ITIN|individual\s+taxpayer|tax\s+ID')
)

Detection logic

Scope: outbound message.

Detects messages containing US Individual Taxpayer Identification Numbers.

  1. outbound message
  2. any of [body.current_thread.text, subject.subject] where:
    • . matches '\\b9\\d{2}[\\s\\-]?\\d{2}[\\s\\-]?\\d{4}\\b'
  3. any of [body.current_thread.text, subject.subject] where:
    • . matches 'ITIN|individual\\s+taxpayer|tax\\s+ID'

Inspects: body.current_thread.text, subject.subject, type.outbound. Sensors: regex.contains, regex.icontains.

Indicators matched (2)

FieldMatchValue
regex.containsregex\b9\d{2}[\s\-]?\d{2}[\s\-]?\d{4}\b
regex.icontainsregexITIN|individual\s+taxpayer|tax\s+ID

Stages and Predicates

Stage 1: mql_rule

and
  any([body.current_thread.text, subject.subject])
    [body.current_thread.text, subject.subject] regex_match "ITIN|individual\\s+taxpayer|tax\\s+ID"
  any([body.current_thread.text, subject.subject])
    [body.current_thread.text, subject.subject] regex_match "\\b9\\d{2}[\\s\\-]?\\d{2}[\\s\\-]?\\d{4}\\b"
  type.outbound eq "true"

Indicators

These rows show field, operator, and value matches.

FieldKindValuesSearch
type.outboundeq
  • true transforms: boolean
field:"type.outbound" kind:eq value:"true"

DLP: US Insurance Claim Number

#
Severity
medium
Type
dlp
Source
github.com/sublime-security/sublime-rules

Detects messages containing insurance claim numbers.

Telemetry coverage

PlatformRecord / event type
SublimeInbound email message

Message attributes

  • body
  • body.current_thread
  • subject
  • type

Rule body

type.outbound
and any([body.current_thread.text, subject.subject],
        // Claim numbers are typically 10-20 alphanumeric characters
        regex.contains(., '\b[A-Z0-9]{10,20}\b')
)
and any([body.current_thread.text, subject.subject],
        regex.icontains(., 'claim\s+number|insurance\s+claim|policy\s+claim')
)

Detection logic

Scope: outbound message.

Detects messages containing insurance claim numbers.

  1. outbound message
  2. any of [body.current_thread.text, subject.subject] where:
    • . matches '\\b[A-Z0-9]{10,20}\\b'
  3. any of [body.current_thread.text, subject.subject] where:
    • . matches 'claim\\s+number|insurance\\s+claim|policy\\s+claim'

Inspects: body.current_thread.text, subject.subject, type.outbound. Sensors: regex.contains, regex.icontains.

Indicators matched (2)

FieldMatchValue
regex.containsregex\b[A-Z0-9]{10,20}\b
regex.icontainsregexclaim\s+number|insurance\s+claim|policy\s+claim

Stages and Predicates

Stage 1: mql_rule

and
  any([body.current_thread.text, subject.subject])
    [body.current_thread.text, subject.subject] regex_match "\\b[A-Z0-9]{10,20}\\b"
  any([body.current_thread.text, subject.subject])
    [body.current_thread.text, subject.subject] regex_match "claim\\s+number|insurance\\s+claim|policy\\s+claim"
  type.outbound eq "true"

Indicators

These rows show field, operator, and value matches.

FieldKindValuesSearch
type.outboundeq
  • true transforms: boolean
field:"type.outbound" kind:eq value:"true"

DLP: US Passport Number

#
Severity
high
Type
dlp
Source
github.com/sublime-security/sublime-rules

Detects messages containing US passport numbers.

Telemetry coverage

PlatformRecord / event type
SublimeInbound email message

Message attributes

  • body
  • body.current_thread
  • sender.email
  • subject
  • type

Rule body

type.outbound
and any([body.current_thread.text, subject.subject],
        // US passport: 9 digits or 1 letter + 8 digits
        regex.contains(., '\b(?:\d{9}|[A-Z]\d{8})\b')
)
and any([body.current_thread.text, subject.subject],
        regex.icontains(., 'passport|travel\s+document')
)
and (
  strings.icontains(sender.email.domain.tld, "us")
  or strings.icontains(body.current_thread.text, "united states")
  or strings.icontains(body.current_thread.text, "USA")
)

Detection logic

Scope: outbound message.

Detects messages containing US passport numbers.

  1. outbound message
  2. any of [body.current_thread.text, subject.subject] where:
    • . matches '\\b(?:\\d{9}|[A-Z]\\d{8})\\b'
  3. any of [body.current_thread.text, subject.subject] where:
    • . matches 'passport|travel\\s+document'
  4. any of:
    • sender.email.domain.tld contains 'us'
    • body.current_thread.text contains 'united states'
    • body.current_thread.text contains 'USA'

Inspects: body.current_thread.text, sender.email.domain.tld, subject.subject, type.outbound. Sensors: regex.contains, regex.icontains, strings.icontains.

Indicators matched (5)

FieldMatchValue
regex.containsregex\b(?:\d{9}|[A-Z]\d{8})\b
regex.icontainsregexpassport|travel\s+document
strings.icontainssubstringus
strings.icontainssubstringunited states
strings.icontainssubstringUSA

Stages and Predicates

Stage 1: mql_rule

and
  any([body.current_thread.text, subject.subject])
    [body.current_thread.text, subject.subject] regex_match "\\b(?:\\d{9}|[A-Z]\\d{8})\\b"
  any([body.current_thread.text, subject.subject])
    [body.current_thread.text, subject.subject] regex_match "passport|travel\\s+document"
  or
    body.current_thread.text contains "USA"
    body.current_thread.text contains "united states"
    sender.email.domain.tld contains "us"
  type.outbound eq "true"

Indicators

These rows show field, operator, and value matches.

DLP: US Social Security Number (SSN)

#
Severity
high
Type
dlp
Source
github.com/sublime-security/sublime-rules

Detects messages containing US Social Security Numbers.

Telemetry coverage

PlatformRecord / event type
SublimeInbound email message

Message attributes

  • body
  • body.current_thread
  • subject
  • type

Rule body

type.outbound
and any([body.current_thread.text, subject.subject],
        // SSN: XXX-XX-XXXX format
        regex.contains(., '\b\d{3}[\s\-]?\d{2}[\s\-]?\d{4}\b')
)
and any([body.current_thread.text, subject.subject],
        regex.icontains(., 'social\s+security|SSN')
)

Detection logic

Scope: outbound message.

Detects messages containing US Social Security Numbers.

  1. outbound message
  2. any of [body.current_thread.text, subject.subject] where:
    • . matches '\\b\\d{3}[\\s\\-]?\\d{2}[\\s\\-]?\\d{4}\\b'
  3. any of [body.current_thread.text, subject.subject] where:
    • . matches 'social\\s+security|SSN'

Inspects: body.current_thread.text, subject.subject, type.outbound. Sensors: regex.contains, regex.icontains.

Indicators matched (2)

FieldMatchValue
regex.containsregex\b\d{3}[\s\-]?\d{2}[\s\-]?\d{4}\b
regex.icontainsregexsocial\s+security|SSN

Stages and Predicates

Stage 1: mql_rule

and
  any([body.current_thread.text, subject.subject])
    [body.current_thread.text, subject.subject] regex_match "\\b\\d{3}[\\s\\-]?\\d{2}[\\s\\-]?\\d{4}\\b"
  any([body.current_thread.text, subject.subject])
    [body.current_thread.text, subject.subject] regex_match "social\\s+security|SSN"
  type.outbound eq "true"

Indicators

These rows show field, operator, and value matches.

FieldKindValuesSearch
type.outboundeq
  • true transforms: boolean
field:"type.outbound" kind:eq value:"true"

DLP: Vehicle Identification Number (VIN)

#
Severity
medium
Type
dlp
Source
github.com/sublime-security/sublime-rules

Detects messages containing Vehicle Identification Numbers.

Telemetry coverage

PlatformRecord / event type
SublimeInbound email message

Message attributes

  • body
  • body.current_thread
  • subject
  • type

Rule body

type.outbound
and any([body.current_thread.text, subject.subject],
        // VIN: 17 characters (no I, O, Q)
        regex.contains(., '\b[A-HJ-NPR-Z0-9]{17}\b')
)
and any([body.current_thread.text, subject.subject],
        regex.icontains(., 'VIN|vehicle\s+identification|chassis\s+number')
)

Detection logic

Scope: outbound message.

Detects messages containing Vehicle Identification Numbers.

  1. outbound message
  2. any of [body.current_thread.text, subject.subject] where:
    • . matches '\\b[A-HJ-NPR-Z0-9]{17}\\b'
  3. any of [body.current_thread.text, subject.subject] where:
    • . matches 'VIN|vehicle\\s+identification|chassis\\s+number'

Inspects: body.current_thread.text, subject.subject, type.outbound. Sensors: regex.contains, regex.icontains.

Indicators matched (2)

FieldMatchValue
regex.containsregex\b[A-HJ-NPR-Z0-9]{17}\b
regex.icontainsregexVIN|vehicle\s+identification|chassis\s+number

Stages and Predicates

Stage 1: mql_rule

and
  any([body.current_thread.text, subject.subject])
    [body.current_thread.text, subject.subject] regex_match "VIN|vehicle\\s+identification|chassis\\s+number"
  any([body.current_thread.text, subject.subject])
    [body.current_thread.text, subject.subject] regex_match "\\b[A-HJ-NPR-Z0-9]{17}\\b"
  type.outbound eq "true"

Indicators

These rows show field, operator, and value matches.

FieldKindValuesSearch
type.outboundeq
  • true transforms: boolean
field:"type.outbound" kind:eq value:"true"