Detection rules › Sublime MQL
Sublime MQL rules: dlp
DLP - PCI: American Express Credit Card Number
#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
| Platform | Record / event type |
|---|---|
| Sublime | Inbound email message |
Message attributes
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.
- outbound message
any of:
- body.current_thread.text matches '\\b3[47]\\d{2}[\\s-]?\\d{6}[\\s-]?\\d{5}\\b'
any of
attachmentswhere all hold:- .file_extension in ('pdf', 'doc', 'docx', 'xls', 'xlsx', 'txt', 'csv', 'eml', 'msg')
any of
file.explode(.)where:any of
.scan.strings.stringswhere:- . 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)
| Field | Match | Value |
|---|---|---|
regex.contains | regex | \b3[47]\d{2}[\s-]?\d{6}[\s-]?\d{5}\b |
attachments[].file_extension | member | pdf |
attachments[].file_extension | member | doc |
attachments[].file_extension | member | docx |
attachments[].file_extension | member | xls |
attachments[].file_extension | member | xlsx |
attachments[].file_extension | member | txt |
attachments[].file_extension | member | csv |
attachments[].file_extension | member | eml |
attachments[].file_extension | member | msg |
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.
| Field | Kind | Values | Search |
|---|---|---|---|
body.current_thread.text | regex_match |
| field:"body.current_thread.text" kind:regex_match value:"\b3[47]\d{2}[\s-]?\d{6}[\s-]?\d{5}\b" |
type.outbound | eq |
| field:"type.outbound" kind:eq value:"true" |
DLP - PCI: Discover Credit Card Number
#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
| Platform | Record / event type |
|---|---|
| Sublime | Inbound email message |
Message attributes
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.
- outbound message
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
attachmentswhere all hold:- .file_extension in ('pdf', 'doc', 'docx', 'xls', 'xlsx', 'txt', 'csv', 'eml', 'msg')
any of
file.explode(.)where:any of
.scan.strings.stringswhere 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)
| Field | Match | Value |
|---|---|---|
regex.contains | regex | \b6011[\s-]?\d{4}[\s-]?\d{4}[\s-]?\d{4}\b |
regex.contains | regex | \b65\d{2}[\s-]?\d{4}[\s-]?\d{4}[\s-]?\d{4}\b |
regex.contains | regex | \b64[4-9]\d[\s-]?\d{4}[\s-]?\d{4}[\s-]?\d{4}\b |
regex.contains | regex | \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_extension | member | pdf |
attachments[].file_extension | member | doc |
attachments[].file_extension | member | docx |
attachments[].file_extension | member | xls |
attachments[].file_extension | member | xlsx |
attachments[].file_extension | member | txt |
attachments[].file_extension | member | csv |
attachments[].file_extension | member | eml |
1 more
attachments[].file_extension | member | msg |
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.
| Field | Kind | Values | Search |
|---|---|---|---|
body.current_thread.text | regex_match |
| field:"body.current_thread.text" kind:regex_match |
type.outbound | eq |
| field:"type.outbound" kind:eq value:"true" |
DLP - PCI: Mastercard Credit Card Number
#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
| Platform | Record / event type |
|---|---|
| Sublime | Inbound email message |
Message attributes
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.
- outbound message
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
attachmentswhere all hold:- .file_extension in ('pdf', 'doc', 'docx', 'xls', 'xlsx', 'txt', 'csv', 'eml', 'msg')
any of
file.explode(.)where:any of
.scan.strings.stringswhere 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)
| Field | Match | Value |
|---|---|---|
regex.contains | regex | \b5[1-5]\d{2}[\s-]?\d{4}[\s-]?\d{4}[\s-]?\d{4}\b |
regex.contains | regex | \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_extension | member | pdf |
attachments[].file_extension | member | doc |
attachments[].file_extension | member | docx |
attachments[].file_extension | member | xls |
attachments[].file_extension | member | xlsx |
attachments[].file_extension | member | txt |
attachments[].file_extension | member | csv |
attachments[].file_extension | member | eml |
attachments[].file_extension | member | msg |
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.
| Field | Kind | Values | Search |
|---|---|---|---|
body.current_thread.text | regex_match |
| field:"body.current_thread.text" kind:regex_match |
type.outbound | eq |
| field:"type.outbound" kind:eq value:"true" |
DLP - PCI: US Credit Card Number (Any Network)
#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
| Platform | Record / event type |
|---|---|
| Sublime | Inbound email message |
Message attributes
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.
- outbound message
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
attachmentswhere all hold:- .file_extension in ('pdf', 'doc', 'docx', 'xls', 'xlsx', 'txt', 'csv', 'eml', 'msg')
any of
file.explode(.)where:any of
.scan.strings.stringswhere 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)
| Field | Match | Value |
|---|---|---|
regex.contains | regex | \b4\d{3}[\s-]?\d{4}[\s-]?\d{4}[\s-]?\d{4}\b |
regex.contains | regex | \b4\d{3}[\s-]?\d{4}[\s-]?\d{5}\b |
regex.contains | regex | \b5[1-5]\d{2}[\s-]?\d{4}[\s-]?\d{4}[\s-]?\d{4}\b |
regex.contains | regex | \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.contains | regex | \b3[47]\d{2}[\s-]?\d{6}[\s-]?\d{5}\b |
regex.contains | regex | \b6011[\s-]?\d{4}[\s-]?\d{4}[\s-]?\d{4}\b |
regex.contains | regex | \b65\d{2}[\s-]?\d{4}[\s-]?\d{4}[\s-]?\d{4}\b |
regex.contains | regex | \b64[4-9]\d[\s-]?\d{4}[\s-]?\d{4}[\s-]?\d{4}\b |
regex.contains | regex | \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_extension | member | pdf |
attachments[].file_extension | member | doc |
attachments[].file_extension | member | docx |
6 more
attachments[].file_extension | member | xls |
attachments[].file_extension | member | xlsx |
attachments[].file_extension | member | txt |
attachments[].file_extension | member | csv |
attachments[].file_extension | member | eml |
attachments[].file_extension | member | msg |
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.
| Field | Kind | Values | Search |
|---|---|---|---|
body.current_thread.text | regex_match |
| field:"body.current_thread.text" kind:regex_match |
type.outbound | eq |
| field:"type.outbound" kind:eq value:"true" |
DLP - PCI: Visa Credit Card Number
#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
| Platform | Record / event type |
|---|---|
| Sublime | Inbound email message |
Message attributes
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.
- outbound message
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
attachmentswhere all hold:- .file_extension in ('pdf', 'doc', 'docx', 'xls', 'xlsx', 'txt', 'csv', 'eml', 'msg')
any of
file.explode(.)where:any of
.scan.strings.stringswhere 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)
| Field | Match | Value |
|---|---|---|
regex.contains | regex | \b4\d{3}[\s-]?\d{4}[\s-]?\d{4}[\s-]?\d{4}\b |
regex.contains | regex | \b4\d{3}[\s-]?\d{4}[\s-]?\d{5}\b |
attachments[].file_extension | member | pdf |
attachments[].file_extension | member | doc |
attachments[].file_extension | member | docx |
attachments[].file_extension | member | xls |
attachments[].file_extension | member | xlsx |
attachments[].file_extension | member | txt |
attachments[].file_extension | member | csv |
attachments[].file_extension | member | eml |
attachments[].file_extension | member | msg |
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.
| Field | Kind | Values | Search |
|---|---|---|---|
body.current_thread.text | regex_match |
| field:"body.current_thread.text" kind:regex_match |
type.outbound | eq |
| field:"type.outbound" kind:eq value:"true" |
DLP: Argentina DNI Number
#Detects messages containing Argentine National Identity Card (DNI) numbers.
Telemetry coverage
| Platform | Record / event type |
|---|---|
| Sublime | Inbound email message |
Message attributes
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.
- outbound message
any of
[body.current_thread.text, subject.subject]where:- . matches '\\b\\d{7,8}\\b'
any of
[body.current_thread.text, subject.subject]where:- . matches 'DNI|documento\\s+nacional|identity\\s+card'
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)
| Field | Match | Value |
|---|---|---|
regex.contains | regex | \b\d{7,8}\b |
regex.icontains | regex | DNI|documento\s+nacional|identity\s+card |
strings.icontains | substring | ar |
strings.icontains | substring | argentina |
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
#Detects messages containing Australian bank account numbers with BSB codes.
Telemetry coverage
| Platform | Record / event type |
|---|---|
| Sublime | Inbound email message |
Message attributes
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.
- outbound message
any of
[body.current_thread.text, subject.subject]where:- . matches '\\b\\d{3}-\\d{3}\\b'
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)
| Field | Match | Value |
|---|---|---|
regex.contains | regex | \b\d{3}-\d{3}\b |
regex.icontains | regex | BSB|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.
| Field | Kind | Values | Search |
|---|---|---|---|
type.outbound | eq |
| field:"type.outbound" kind:eq value:"true" |
DLP: Australia Credit Card Number
#Detects messages containing credit card numbers.
Telemetry coverage
| Platform | Record / event type |
|---|---|
| Sublime | Inbound email message |
Message attributes
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.
- outbound message
any of
attachmentswhere 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)
| Field | Match | Value |
|---|---|---|
attachments[].file_extension | member | .csv |
attachments[].file_extension | member | .txt |
attachments[].file_extension | member | .xlsx |
attachments[].file_extension | member | .xls |
regex.contains | regex | \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.
| Field | Kind | Values | Search |
|---|---|---|---|
type.outbound | eq |
| field:"type.outbound" kind:eq value:"true" |
DLP: Australia Driver's License Number
#Detects messages containing Australian driver's license numbers.
Telemetry coverage
| Platform | Record / event type |
|---|---|
| Sublime | Inbound email message |
Message attributes
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.
- outbound message
any of
[body.current_thread.text, subject.subject]where:- . matches '\\b[A-Z0-9]{6,10}\\b'
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)
| Field | Match | Value |
|---|---|---|
regex.contains | regex | \b[A-Z0-9]{6,10}\b |
regex.icontains | regex | driver.?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.
| Field | Kind | Values | Search |
|---|---|---|---|
type.outbound | eq |
| field:"type.outbound" kind:eq value:"true" |
DLP: Australia Medical Account Number
#Detects messages containing Australian Medicare numbers.
Telemetry coverage
| Platform | Record / event type |
|---|---|
| Sublime | Inbound email message |
Message attributes
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.
- outbound message
any of
[body.current_thread.text, subject.subject]where:- . matches '\\b\\d{4}\\s?\\d{5}\\s?\\d\\b'
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)
| Field | Match | Value |
|---|---|---|
regex.contains | regex | \b\d{4}\s?\d{5}\s?\d\b |
regex.icontains | regex | medicare|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.
| Field | Kind | Values | Search |
|---|---|---|---|
type.outbound | eq |
| field:"type.outbound" kind:eq value:"true" |
DLP: Australia Passport Number
#Detects messages containing Australian passport numbers.
Telemetry coverage
| Platform | Record / event type |
|---|---|
| Sublime | Inbound email message |
Message attributes
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.
- outbound message
any of
[body.current_thread.text, subject.subject]where:- . matches '\\b[A-Z]\\d{7}\\b'
any of
[body.current_thread.text, subject.subject]where:- . matches 'passport|travel\\s+document'
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)
| Field | Match | Value |
|---|---|---|
regex.contains | regex | \b[A-Z]\d{7}\b |
regex.icontains | regex | passport|travel\s+document |
strings.icontains | substring | au |
strings.icontains | substring | australia |
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
#Detects messages containing Australian SWIFT/BIC codes for financial institutions.
Telemetry coverage
| Platform | Record / event type |
|---|---|
| Sublime | Inbound email message |
Message attributes
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.
- outbound message
any of
ml.logo_detect(beta.message_screenshot()).brandswhere:.name matches any of 2 patterns
*bank**financial*
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)
| Field | Match | Value |
|---|---|---|
strings.ilike | substring | *bank* |
strings.ilike | substring | *financial* |
regex.contains | regex | \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.
| Field | Kind | Values | Search |
|---|---|---|---|
type.outbound | eq |
| field:"type.outbound" kind:eq value:"true" |
DLP: Australia Tax File Number
#Detects messages containing Australian Tax File Numbers (TFN).
Telemetry coverage
| Platform | Record / event type |
|---|---|
| Sublime | Inbound email message |
Message attributes
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).
- outbound message
any of
[body.current_thread.text, subject.subject]where:- . matches '\\b\\d{3}[\\s\\-]?\\d{3}[\\s\\-]?\\d{3}\\b'
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)
| Field | Match | Value |
|---|---|---|
regex.contains | regex | \b\d{3}[\s\-]?\d{3}[\s\-]?\d{3}\b |
regex.icontains | regex | tax\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.
| Field | Kind | Values | Search |
|---|---|---|---|
type.outbound | eq |
| field:"type.outbound" kind:eq value:"true" |
DLP: Austria Identity Card
#Detects messages containing Austrian Identity Card numbers (Personalausweis).
Telemetry coverage
| Platform | Record / event type |
|---|---|
| Sublime | Inbound email message |
Message attributes
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).
- outbound message
any of
[body.current_thread.text, subject.subject]where:- . matches '\\b\\d{7,8}\\b'
any of
[body.current_thread.text, subject.subject]where:- . matches 'personalausweis|identity\\s+card|Ausweis'
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)
| Field | Match | Value |
|---|---|---|
regex.contains | regex | \b\d{7,8}\b |
regex.icontains | regex | personalausweis|identity\s+card|Ausweis |
strings.icontains | substring | at |
strings.icontains | substring | austria |
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 Tax Identification Number
#Detects messages containing Austrian Tax Identification Numbers (Steuernummer).
Telemetry coverage
| Platform | Record / event type |
|---|---|
| Sublime | Inbound email message |
Message attributes
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).
- outbound message
any of
[body.current_thread.text, subject.subject]where:- . matches '\\b\\d{2}[\\s\\-]?\\d{3}[\\s\\-]?\\d{4}\\b'
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)
| Field | Match | Value |
|---|---|---|
regex.contains | regex | \b\d{2}[\s\-]?\d{3}[\s\-]?\d{4}\b |
regex.icontains | regex | steuernummer|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.
| Field | Kind | Values | Search |
|---|---|---|---|
type.outbound | eq |
| field:"type.outbound" kind:eq value:"true" |
DLP: AWS Credentials
#Detects messages containing AWS access keys and secret keys.
Telemetry coverage
| Platform | Record / event type |
|---|---|
| Sublime | Inbound email message |
Message attributes
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.
- outbound message
any of
[body.current_thread.text, subject.subject]where:- . matches '\\bAKIA[0-9A-Z]{16}\\b'
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)
| Field | Match | Value |
|---|---|---|
regex.contains | regex | \bAKIA[0-9A-Z]{16}\b |
regex.icontains | regex | aws|amazon|access\s+key|secret\s+key |
regex.contains | regex | \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.
| Field | Kind | Values | Search |
|---|---|---|---|
type.outbound | eq |
| field:"type.outbound" kind:eq value:"true" |
DLP: Azure Authentication Token
#Detects messages containing Azure authentication tokens and credentials.
Telemetry coverage
| Platform | Record / event type |
|---|---|
| Sublime | Inbound email message |
Message attributes
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.
- outbound message
any of
[body.current_thread.text, subject.subject]where:- . matches 'azure|microsoft\\s+cloud'
any of
[body.current_thread.text, subject.subject]where:- . matches 'auth|token|credential|secret|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)
| Field | Match | Value |
|---|---|---|
regex.icontains | regex | azure|microsoft\s+cloud |
regex.icontains | regex | auth|token|credential|secret|key |
regex.contains | regex | \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.
| Field | Kind | Values | Search |
|---|---|---|---|
type.outbound | eq |
| field:"type.outbound" kind:eq value:"true" |
DLP: Basic Authentication Header
#Detects messages containing HTTP Basic Authentication headers.
Telemetry coverage
| Platform | Record / event type |
|---|---|
| Sublime | Inbound email message |
Message attributes
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.
- outbound message
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)
| Field | Match | Value |
|---|---|---|
regex.contains | regex | \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.
| Field | Kind | Values | Search |
|---|---|---|---|
type.outbound | eq |
| field:"type.outbound" kind:eq value:"true" |
DLP: Belgium National Number
#Detects messages containing Belgian National Numbers (Rijksregisternummer).
Telemetry coverage
| Platform | Record / event type |
|---|---|
| Sublime | Inbound email message |
Message attributes
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).
- outbound message
any of
[body.current_thread.text, subject.subject]where:- . matches '\\b\\d{2}\\.?\\d{2}\\.?\\d{2}[\\s\\-]?\\d{3}\\.?\\d{2}\\b'
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)
| Field | Match | Value |
|---|---|---|
regex.contains | regex | \b\d{2}\.?\d{2}\.?\d{2}[\s\-]?\d{3}\.?\d{2}\b |
regex.icontains | regex | rijksregister|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.
| Field | Kind | Values | Search |
|---|---|---|---|
type.outbound | eq |
| field:"type.outbound" kind:eq value:"true" |
DLP: Brazil CPF Number
#Detects messages containing Brazilian Natural Persons Register (CPF) numbers.
Telemetry coverage
| Platform | Record / event type |
|---|---|
| Sublime | Inbound email message |
Message attributes
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.
- outbound message
any of
[body.current_thread.text, subject.subject]where:- . matches '\\b\\d{3}\\.?\\d{3}\\.?\\d{3}-?\\d{2}\\b'
any of
[body.current_thread.text, subject.subject]where:- . matches 'CPF|cadastro\\s+de\\s+pessoas|tax\\s+ID'
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)
| Field | Match | Value |
|---|---|---|
regex.contains | regex | \b\d{3}\.?\d{3}\.?\d{3}-?\d{2}\b |
regex.icontains | regex | CPF|cadastro\s+de\s+pessoas|tax\s+ID |
strings.icontains | substring | br |
strings.icontains | substring | brazil |
strings.icontains | substring | brasil |
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.
| Field | Kind | Values | Search |
|---|---|---|---|
body.current_thread.text | contains |
| field:"body.current_thread.text" kind:contains |
sender.email.domain.tld | contains |
| field:"sender.email.domain.tld" kind:contains value:"br" |
type.outbound | eq |
| field:"type.outbound" kind:eq value:"true" |
DLP: Brazil RG Number
#Detects messages containing Brazilian General Registry (RG) numbers.
Telemetry coverage
| Platform | Record / event type |
|---|---|
| Sublime | Inbound email message |
Message attributes
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.
- outbound message
any of
[body.current_thread.text, subject.subject]where:- . matches '\\b\\d{1,2}\\.?\\d{3}\\.?\\d{3}-?[0-9X]\\b'
any of
[body.current_thread.text, subject.subject]where:- . matches 'RG|registro\\s+geral|identity\\s+card'
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)
| Field | Match | Value |
|---|---|---|
regex.contains | regex | \b\d{1,2}\.?\d{3}\.?\d{3}-?[0-9X]\b |
regex.icontains | regex | RG|registro\s+geral|identity\s+card |
strings.icontains | substring | br |
strings.icontains | substring | brazil |
strings.icontains | substring | brasil |
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.
| Field | Kind | Values | Search |
|---|---|---|---|
body.current_thread.text | contains |
| field:"body.current_thread.text" kind:contains |
sender.email.domain.tld | contains |
| field:"sender.email.domain.tld" kind:contains value:"br" |
type.outbound | eq |
| field:"type.outbound" kind:eq value:"true" |
DLP: Bulgaria Uniform Civil Number
#Detects messages containing Bulgarian Uniform Civil Numbers (ЕГН).
Telemetry coverage
| Platform | Record / event type |
|---|---|
| Sublime | Inbound email message |
Message attributes
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 (ЕГН).
- outbound message
any of
[body.current_thread.text, subject.subject]where:- . matches '\\b\\d{10}\\b'
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)
| Field | Match | Value |
|---|---|---|
regex.contains | regex | \b\d{10}\b |
regex.icontains | regex | ЕГН|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.
| Field | Kind | Values | Search |
|---|---|---|---|
type.outbound | eq |
| field:"type.outbound" kind:eq value:"true" |
DLP: Canada Bank Account Number
#Detects messages containing Canadian bank account numbers with institution and transit numbers.
Telemetry coverage
| Platform | Record / event type |
|---|---|
| Sublime | Inbound email message |
Message attributes
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.
- outbound message
any of
[body.current_thread.text, subject.subject]where:- . matches '\\b\\d{3}[\\s\\-]?\\d{5}[\\s\\-]?\\d{7,12}\\b'
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)
| Field | Match | Value |
|---|---|---|
regex.contains | regex | \b\d{3}[\s\-]?\d{5}[\s\-]?\d{7,12}\b |
regex.icontains | regex | bank\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.
| Field | Kind | Values | Search |
|---|---|---|---|
type.outbound | eq |
| field:"type.outbound" kind:eq value:"true" |
DLP: Canada Credit Card Number
#Detects messages containing credit card numbers.
Telemetry coverage
| Platform | Record / event type |
|---|---|
| Sublime | Inbound email message |
Message attributes
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.
- outbound message
any of
attachmentswhere 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'
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)
| Field | Match | Value |
|---|---|---|
attachments[].file_extension | member | .csv |
attachments[].file_extension | member | .txt |
attachments[].file_extension | member | .xlsx |
attachments[].file_extension | member | .xls |
regex.contains | regex | \b(?:\d{4}[\s\-]?){3}\d{1,7}\b |
strings.icontains | substring | ca |
strings.icontains | substring | canada |
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
#Detects messages containing Canadian driver's license numbers.
Telemetry coverage
| Platform | Record / event type |
|---|---|
| Sublime | Inbound email message |
Message attributes
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.
- outbound message
any of
[body.current_thread.text, subject.subject]where:- . matches '\\b[A-Z0-9]{15,16}\\b'
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)
| Field | Match | Value |
|---|---|---|
regex.contains | regex | \b[A-Z0-9]{15,16}\b |
regex.icontains | regex | driver.?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.
| Field | Kind | Values | Search |
|---|---|---|---|
type.outbound | eq |
| field:"type.outbound" kind:eq value:"true" |
DLP: Canada Health Service Number
#Detects messages containing Canadian provincial health service numbers.
Telemetry coverage
| Platform | Record / event type |
|---|---|
| Sublime | Inbound email message |
Message attributes
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.
- outbound message
any of
[body.current_thread.text, subject.subject]where:- . matches '\\b\\d{10,12}\\b'
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)
| Field | Match | Value |
|---|---|---|
regex.contains | regex | \b\d{10,12}\b |
regex.icontains | regex | health\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.
| Field | Kind | Values | Search |
|---|---|---|---|
type.outbound | eq |
| field:"type.outbound" kind:eq value:"true" |
DLP: Canada Passport Number
#Detects messages containing Canadian passport numbers.
Telemetry coverage
| Platform | Record / event type |
|---|---|
| Sublime | Inbound email message |
Message attributes
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.
- outbound message
any of
[body.current_thread.text, subject.subject]where:- . matches '\\b[A-Z]{2}\\d{6}\\b'
any of
[body.current_thread.text, subject.subject]where:- . matches 'passport|travel\\s+document'
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)
| Field | Match | Value |
|---|---|---|
regex.contains | regex | \b[A-Z]{2}\d{6}\b |
regex.icontains | regex | passport|travel\s+document |
strings.icontains | substring | ca |
strings.icontains | substring | canada |
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)
#Detects messages containing Canadian Personal Health Identification Numbers.
Telemetry coverage
| Platform | Record / event type |
|---|---|
| Sublime | Inbound email message |
Message attributes
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.
- outbound message
any of
[body.current_thread.text, subject.subject]where:- . matches '\\b[A-Z0-9]{9,12}\\b'
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)
| Field | Match | Value |
|---|---|---|
regex.contains | regex | \b[A-Z0-9]{9,12}\b |
regex.icontains | regex | PHIN|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.
| Field | Kind | Values | Search |
|---|---|---|---|
type.outbound | eq |
| field:"type.outbound" kind:eq value:"true" |
DLP: Canada Social Insurance Number (SIN)
#Detects messages containing Canadian Social Insurance Numbers.
Telemetry coverage
| Platform | Record / event type |
|---|---|
| Sublime | Inbound email message |
Message attributes
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.
- outbound message
any of
[body.current_thread.text, subject.subject]where:- . matches '\\b\\d{3}[\\s\\-]?\\d{3}[\\s\\-]?\\d{3}\\b'
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)
| Field | Match | Value |
|---|---|---|
regex.contains | regex | \b\d{3}[\s\-]?\d{3}[\s\-]?\d{3}\b |
regex.icontains | regex | social\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.
| Field | Kind | Values | Search |
|---|---|---|---|
type.outbound | eq |
| field:"type.outbound" kind:eq value:"true" |
DLP: Chile Identity Card Number
#Detects messages containing Chilean Identity Card (CDI) numbers.
Telemetry coverage
| Platform | Record / event type |
|---|---|
| Sublime | Inbound email message |
Message attributes
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.
- outbound message
any of
[body.current_thread.text, subject.subject]where:- . matches '\\b\\d{1,2}\\.\\d{3}\\.\\d{3}-[0-9Kk]\\b'
any of
[body.current_thread.text, subject.subject]where:- . matches 'RUT|cédula|identity\\s+card|CDI'
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)
| Field | Match | Value |
|---|---|---|
regex.contains | regex | \b\d{1,2}\.\d{3}\.\d{3}-[0-9Kk]\b |
regex.icontains | regex | RUT|cédula|identity\s+card|CDI |
strings.icontains | substring | cl |
strings.icontains | substring | chile |
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
#Detects messages containing Chinese Resident Identity Card numbers.
Telemetry coverage
| Platform | Record / event type |
|---|---|
| Sublime | Inbound email message |
Message attributes
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.
- outbound message
any of
[body.current_thread.text, subject.subject]where any holds:- . matches '\\b\\d{17}[0-9Xx]\\b'
- . matches '\\b\\d{15}\\b'
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)
| Field | Match | Value |
|---|---|---|
regex.contains | regex | \b\d{17}[0-9Xx]\b |
regex.contains | regex | \b\d{15}\b |
regex.icontains | regex | resident\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.
| Field | Kind | Values | Search |
|---|---|---|---|
type.outbound | eq |
| field:"type.outbound" kind:eq value:"true" |
DLP: Colombia Citizenship Card Number
#Detects messages containing Colombian Citizenship Card (CDC) numbers.
Telemetry coverage
| Platform | Record / event type |
|---|---|
| Sublime | Inbound email message |
Message attributes
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.
- outbound message
any of
[body.current_thread.text, subject.subject]where:- . matches '\\b\\d{8,10}\\b'
any of
[body.current_thread.text, subject.subject]where:- . matches 'cédula|citizenship\\s+card|CDC|ciudadanía'
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)
| Field | Match | Value |
|---|---|---|
regex.contains | regex | \b\d{8,10}\b |
regex.icontains | regex | cédula|citizenship\s+card|CDC|ciudadanía |
strings.icontains | substring | co |
strings.icontains | substring | colombia |
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)
#Detects messages containing Croatian Personal Identification Numbers (OIB).
Telemetry coverage
| Platform | Record / event type |
|---|---|
| Sublime | Inbound email message |
Message attributes
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).
- outbound message
any of
[body.current_thread.text, subject.subject]where:- . matches '\\b\\d{11}\\b'
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)
| Field | Match | Value |
|---|---|---|
regex.contains | regex | \b\d{11}\b |
regex.icontains | regex | OIB|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.
| Field | Kind | Values | Search |
|---|---|---|---|
type.outbound | eq |
| field:"type.outbound" kind:eq value:"true" |
DLP: Cyprus Identity Card
#Detects messages containing Cypriot Identity Card numbers.
Telemetry coverage
| Platform | Record / event type |
|---|---|
| Sublime | Inbound email message |
Message attributes
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.
- outbound message
any of
[body.current_thread.text, subject.subject]where:- . matches '\\b[A-Z0-9]{8}\\b'
any of
[body.current_thread.text, subject.subject]where:- . matches 'identity\\s+card|ταυτότητα|kimlik'
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)
| Field | Match | Value |
|---|---|---|
regex.contains | regex | \b[A-Z0-9]{8}\b |
regex.icontains | regex | identity\s+card|ταυτότητα|kimlik |
strings.icontains | substring | cy |
strings.icontains | substring | cyprus |
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
#Detects messages containing Czech Personal Identity Numbers (rodné číslo).
Telemetry coverage
| Platform | Record / event type |
|---|---|
| Sublime | Inbound email message |
Message attributes
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).
- outbound message
any of
[body.current_thread.text, subject.subject]where:- . matches '\\b\\d{6}[\\s/]?\\d{4}\\b'
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)
| Field | Match | Value |
|---|---|---|
regex.contains | regex | \b\d{6}[\s/]?\d{4}\b |
regex.icontains | regex | rodné\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.
| Field | Kind | Values | Search |
|---|---|---|---|
type.outbound | eq |
| field:"type.outbound" kind:eq value:"true" |
DLP: Denmark Personal Identification Number
#Detects messages containing Danish Personal Identification Numbers (CPR-nummer).
Telemetry coverage
| Platform | Record / event type |
|---|---|
| Sublime | Inbound email message |
Message attributes
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).
- outbound message
any of
[body.current_thread.text, subject.subject]where:- . matches '\\b\\d{6}[\\s\\-]?\\d{4}\\b'
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)
| Field | Match | Value |
|---|---|---|
regex.contains | regex | \b\d{6}[\s\-]?\d{4}\b |
regex.icontains | regex | CPR|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.
| Field | Kind | Values | Search |
|---|---|---|---|
type.outbound | eq |
| field:"type.outbound" kind:eq value:"true" |
DLP: Estonia Personal Identification Code
#Detects messages containing Estonian Personal Identification Codes (isikukood).
Telemetry coverage
| Platform | Record / event type |
|---|---|
| Sublime | Inbound email message |
Message attributes
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).
- outbound message
any of
[body.current_thread.text, subject.subject]where:- . matches '\\b[1-6]\\d{10}\\b'
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)
| Field | Match | Value |
|---|---|---|
regex.contains | regex | \b[1-6]\d{10}\b |
regex.icontains | regex | isikukood|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.
| Field | Kind | Values | Search |
|---|---|---|---|
type.outbound | eq |
| field:"type.outbound" kind:eq value:"true" |
DLP: EU Debit Card Number
#Detects messages containing European debit card numbers.
Telemetry coverage
| Platform | Record / event type |
|---|---|
| Sublime | Inbound email message |
Message attributes
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.
- outbound message
any of
attachmentswhere 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'
sender.email.domain.tld contains any of 28 patterns
atbebghrcyczdkeefifrdegrhuieitlvltlumtnlplptrosksiesseeu
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)
| Field | Match | Value |
|---|---|---|
attachments[].file_extension | member | .csv |
attachments[].file_extension | member | .txt |
attachments[].file_extension | member | .xlsx |
attachments[].file_extension | member | .xls |
regex.contains | regex | \b(?:\d{4}[\s\-]?){3}\d{1,7}\b |
strings.icontains | substring | at |
strings.icontains | substring | be |
strings.icontains | substring | bg |
strings.icontains | substring | hr |
strings.icontains | substring | cy |
strings.icontains | substring | cz |
strings.icontains | substring | dk |
21 more
strings.icontains | substring | ee |
strings.icontains | substring | fi |
strings.icontains | substring | fr |
strings.icontains | substring | de |
strings.icontains | substring | gr |
strings.icontains | substring | hu |
strings.icontains | substring | ie |
strings.icontains | substring | it |
strings.icontains | substring | lv |
strings.icontains | substring | lt |
strings.icontains | substring | lu |
strings.icontains | substring | mt |
strings.icontains | substring | nl |
strings.icontains | substring | pl |
strings.icontains | substring | pt |
strings.icontains | substring | ro |
strings.icontains | substring | sk |
strings.icontains | substring | si |
strings.icontains | substring | es |
strings.icontains | substring | se |
strings.icontains | substring | eu |
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.
| Field | Kind | Values | Search |
|---|---|---|---|
sender.email.domain.tld | contains |
| field:"sender.email.domain.tld" kind:contains |
type.outbound | eq |
| field:"type.outbound" kind:eq value:"true" |
DLP: Finland National ID
#Detects messages containing Finnish National ID numbers (henkilötunnus).
Telemetry coverage
| Platform | Record / event type |
|---|---|
| Sublime | Inbound email message |
Message attributes
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).
- outbound message
any of
[body.current_thread.text, subject.subject]where:- . matches '\\b\\d{6}[\\-\\+A]\\d{3}[A-Z0-9]\\b'
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)
| Field | Match | Value |
|---|---|---|
regex.contains | regex | \b\d{6}[\-\+A]\d{3}[A-Z0-9]\b |
regex.icontains | regex | henkilö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.
| Field | Kind | Values | Search |
|---|---|---|---|
type.outbound | eq |
| field:"type.outbound" kind:eq value:"true" |
DLP: France Bank Account Number
#Detects messages containing French bank account numbers (IBAN).
Telemetry coverage
| Platform | Record / event type |
|---|---|
| Sublime | Inbound email message |
Message attributes
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).
- outbound message
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'
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)
| Field | Match | Value |
|---|---|---|
regex.contains | regex | \bFR\d{2}[\s]?\d{4}[\s]?\d{4}[\s]?\d{4}[\s]?\d{4}[\s]?\d{4}[\s]?\d{3}\b |
regex.icontains | regex | IBAN|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.
| Field | Kind | Values | Search |
|---|---|---|---|
type.outbound | eq |
| field:"type.outbound" kind:eq value:"true" |
DLP: France Credit Card Number
#Detects messages containing credit card numbers.
Telemetry coverage
| Platform | Record / event type |
|---|---|
| Sublime | Inbound email message |
Message attributes
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.
- outbound message
any of
attachmentswhere 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'
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)
| Field | Match | Value |
|---|---|---|
attachments[].file_extension | member | .csv |
attachments[].file_extension | member | .txt |
attachments[].file_extension | member | .xlsx |
attachments[].file_extension | member | .xls |
regex.contains | regex | \b(?:\d{4}[\s\-]?){3}\d{1,7}\b |
strings.icontains | substring | fr |
strings.icontains | substring | france |
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
#Detects messages containing debit card numbers.
Telemetry coverage
| Platform | Record / event type |
|---|---|
| Sublime | Inbound email message |
Message attributes
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.
- outbound message
any of
attachmentswhere 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'
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)
| Field | Match | Value |
|---|---|---|
attachments[].file_extension | member | .csv |
attachments[].file_extension | member | .txt |
attachments[].file_extension | member | .xlsx |
attachments[].file_extension | member | .xls |
regex.contains | regex | \b(?:\d{4}[\s\-]?){3}\d{1,7}\b |
strings.icontains | substring | fr |
strings.icontains | substring | france |
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
#Detects messages containing French driver's license numbers (Permis de conduire).
Telemetry coverage
| Platform | Record / event type |
|---|---|
| Sublime | Inbound email message |
Message attributes
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).
- outbound message
any of
[body.current_thread.text, subject.subject]where:- . matches '\\b\\d{12}\\b'
any of
[body.current_thread.text, subject.subject]where:- . matches 'permis\\s+de\\s+conduire|driver.?s?\\s+licen[cs]e'
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)
| Field | Match | Value |
|---|---|---|
regex.contains | regex | \b\d{12}\b |
regex.icontains | regex | permis\s+de\s+conduire|driver.?s?\s+licen[cs]e |
strings.icontains | substring | fr |
strings.icontains | substring | france |
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)
#Detects messages containing French National ID Card numbers (Carte Nationale d'Identité).
Telemetry coverage
| Platform | Record / event type |
|---|---|
| Sublime | Inbound email message |
Message attributes
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é).
- outbound message
any of
[body.current_thread.text, subject.subject]where:- . matches '\\b[A-Z0-9]{12}\\b'
any of
[body.current_thread.text, subject.subject]where:- . matches 'CNI|carte\\s+nationale|national\\s+ID'
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)
| Field | Match | Value |
|---|---|---|
regex.contains | regex | \b[A-Z0-9]{12}\b |
regex.icontains | regex | CNI|carte\s+nationale|national\s+ID |
strings.icontains | substring | fr |
strings.icontains | substring | france |
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
#Detects messages containing French passport numbers.
Telemetry coverage
| Platform | Record / event type |
|---|---|
| Sublime | Inbound email message |
Message attributes
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.
- outbound message
any of
[body.current_thread.text, subject.subject]where:- . matches '\\b\\d{2}[A-Z]{2}\\d{5}\\b'
any of
[body.current_thread.text, subject.subject]where:- . matches 'passeport|passport'
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)
| Field | Match | Value |
|---|---|---|
regex.contains | regex | \b\d{2}[A-Z]{2}\d{5}\b |
regex.icontains | regex | passeport|passport |
strings.icontains | substring | fr |
strings.icontains | substring | france |
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)
#Detects messages containing French Social Security Numbers (Numéro de sécurité sociale).
Telemetry coverage
| Platform | Record / event type |
|---|---|
| Sublime | Inbound email message |
Message attributes
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).
- outbound message
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'
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)
| Field | Match | Value |
|---|---|---|
regex.contains | regex | \b[1-378]\s?\d{2}\s?\d{2}\s?\d{2}\s?\d{3}\s?\d{3}\s?\d{2}\b |
regex.icontains | regex | sé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.
| Field | Kind | Values | Search |
|---|---|---|---|
type.outbound | eq |
| field:"type.outbound" kind:eq value:"true" |
DLP: France Tax Identification Number (SPI)
#Detects messages containing French Tax Identification Numbers (Numéro SPI).
Telemetry coverage
| Platform | Record / event type |
|---|---|
| Sublime | Inbound email message |
Message attributes
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).
- outbound message
any of
[body.current_thread.text, subject.subject]where:- . matches '\\b\\d{13}\\b'
any of
[body.current_thread.text, subject.subject]where:- . matches 'numéro\\s+fiscal|SPI|tax\\s+identification'
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)
| Field | Match | Value |
|---|---|---|
regex.contains | regex | \b\d{13}\b |
regex.icontains | regex | numéro\s+fiscal|SPI|tax\s+identification |
strings.icontains | substring | fr |
strings.icontains | substring | france |
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
#Detects messages containing Google Cloud Platform API keys.
Telemetry coverage
| Platform | Record / event type |
|---|---|
| Sublime | Inbound email message |
Message attributes
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.
- outbound message
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)
| Field | Match | Value |
|---|---|---|
regex.contains | regex | \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.
| Field | Kind | Values | Search |
|---|---|---|---|
type.outbound | eq |
| field:"type.outbound" kind:eq value:"true" |
DLP: Germany Bank Account Number (IBAN)
#Detects messages containing German bank account numbers (IBAN).
Telemetry coverage
| Platform | Record / event type |
|---|---|
| Sublime | Inbound email message |
Message attributes
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).
- outbound message
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'
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)
| Field | Match | Value |
|---|---|---|
regex.contains | regex | \bDE\d{2}[\s]?\d{4}[\s]?\d{4}[\s]?\d{4}[\s]?\d{4}[\s]?\d{2}\b |
regex.icontains | regex | IBAN|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.
| Field | Kind | Values | Search |
|---|---|---|---|
type.outbound | eq |
| field:"type.outbound" kind:eq value:"true" |
DLP: Germany Driver's License Number
#Detects messages containing German driver's license numbers (Führerschein).
Telemetry coverage
| Platform | Record / event type |
|---|---|
| Sublime | Inbound email message |
Message attributes
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).
- outbound message
any of
[body.current_thread.text, subject.subject]where:- . matches '\\b[A-Z0-9]{11}\\b'
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)
| Field | Match | Value |
|---|---|---|
regex.contains | regex | \b[A-Z0-9]{11}\b |
regex.icontains | regex | fü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.
| Field | Kind | Values | Search |
|---|---|---|---|
type.outbound | eq |
| field:"type.outbound" kind:eq value:"true" |
DLP: Germany Identity Card Number (Personalausweisnummer)
#Detects messages containing German Identity Card numbers.
Telemetry coverage
| Platform | Record / event type |
|---|---|
| Sublime | Inbound email message |
Message attributes
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.
- outbound message
any of
[body.current_thread.text, subject.subject]where:- . matches '\\b[A-Z]\\d{9}|\\d[A-Z0-9]{8}\\d\\b'
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)
| Field | Match | Value |
|---|---|---|
regex.contains | regex | \b[A-Z]\d{9}|\d[A-Z0-9]{8}\d\b |
regex.icontains | regex | personalausweis|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.
| Field | Kind | Values | Search |
|---|---|---|---|
type.outbound | eq |
| field:"type.outbound" kind:eq value:"true" |
DLP: Germany Passport Number
#Detects messages containing German passport numbers (Reisepass).
Telemetry coverage
| Platform | Record / event type |
|---|---|
| Sublime | Inbound email message |
Message attributes
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).
- outbound message
any of
[body.current_thread.text, subject.subject]where:- . matches '\\b[CFGHJK]\\d{8}|[CFGHJK][A-Z0-9]{8}\\b'
any of
[body.current_thread.text, subject.subject]where:- . matches 'reisepass|passport'
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)
| Field | Match | Value |
|---|---|---|
regex.contains | regex | \b[CFGHJK]\d{8}|[CFGHJK][A-Z0-9]{8}\b |
regex.icontains | regex | reisepass|passport |
strings.icontains | substring | de |
strings.icontains | substring | germany |
strings.icontains | substring | deutschland |
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.
| Field | Kind | Values | Search |
|---|---|---|---|
body.current_thread.text | contains |
| field:"body.current_thread.text" kind:contains |
sender.email.domain.tld | contains |
| field:"sender.email.domain.tld" kind:contains value:"de" |
type.outbound | eq |
| field:"type.outbound" kind:eq value:"true" |
DLP: Germany Tax Identification Number
#Detects messages containing German Tax Identification Numbers (Steueridentifikationsnummer).
Telemetry coverage
| Platform | Record / event type |
|---|---|
| Sublime | Inbound email message |
Message attributes
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).
- outbound message
any of
[body.current_thread.text, subject.subject]where:- . matches '\\b\\d{11}\\b'
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)
| Field | Match | Value |
|---|---|---|
regex.contains | regex | \b\d{11}\b |
regex.icontains | regex | steueridentifikationsnummer|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.
| Field | Kind | Values | Search |
|---|---|---|---|
type.outbound | eq |
| field:"type.outbound" kind:eq value:"true" |
DLP: GitHub Token
#Detects messages containing GitHub personal access tokens and OAuth tokens.
Telemetry coverage
| Platform | Record / event type |
|---|---|
| Sublime | Inbound email message |
Message attributes
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.
- outbound message
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)
| Field | Match | Value |
|---|---|---|
regex.contains | regex | \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.
| Field | Kind | Values | Search |
|---|---|---|---|
type.outbound | eq |
| field:"type.outbound" kind:eq value:"true" |
DLP: Greece National ID Card
#Detects messages containing Greek National ID Card numbers.
Telemetry coverage
| Platform | Record / event type |
|---|---|
| Sublime | Inbound email message |
Message attributes
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.
- outbound message
any of
[body.current_thread.text, subject.subject]where:- . matches '\\b[A-Z]{1,2}\\d{6}\\b'
any of
[body.current_thread.text, subject.subject]where:- . matches 'ταυτότητα|national\\s+ID|identity\\s+card'
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)
| Field | Match | Value |
|---|---|---|
regex.contains | regex | \b[A-Z]{1,2}\d{6}\b |
regex.icontains | regex | ταυτότητα|national\s+ID|identity\s+card |
strings.icontains | substring | gr |
strings.icontains | substring | greece |
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)
#Detects messages containing Greek Social Security Numbers (AMKA).
Telemetry coverage
| Platform | Record / event type |
|---|---|
| Sublime | Inbound email message |
Message attributes
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).
- outbound message
any of
[body.current_thread.text, subject.subject]where:- . matches '\\b\\d{11}\\b'
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)
| Field | Match | Value |
|---|---|---|
regex.contains | regex | \b\d{11}\b |
regex.icontains | regex | AMKA|ΑΜΚΑ|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.
| Field | Kind | Values | Search |
|---|---|---|---|
type.outbound | eq |
| field:"type.outbound" kind:eq value:"true" |
DLP: Greece Tax Identification Number
#Detects messages containing Greek Tax Identification Numbers (ΑΦΜ).
Telemetry coverage
| Platform | Record / event type |
|---|---|
| Sublime | Inbound email message |
Message attributes
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 (ΑΦΜ).
- outbound message
any of
[body.current_thread.text, subject.subject]where:- . matches '\\b\\d{9}\\b'
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)
| Field | Match | Value |
|---|---|---|
regex.contains | regex | \b\d{9}\b |
regex.icontains | regex | ΑΦΜ|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.
| Field | Kind | Values | Search |
|---|---|---|---|
type.outbound | eq |
| field:"type.outbound" kind:eq value:"true" |
DLP: Hungary Personal Identification Number
#Detects messages containing Hungarian Personal Identification Numbers.
Telemetry coverage
| Platform | Record / event type |
|---|---|
| Sublime | Inbound email message |
Message attributes
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.
- outbound message
any of
[body.current_thread.text, subject.subject]where:- . matches '\\b[1-8]\\d{10}\\b'
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)
| Field | Match | Value |
|---|---|---|
regex.contains | regex | \b[1-8]\d{10}\b |
regex.icontains | regex | szemé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.
| Field | Kind | Values | Search |
|---|---|---|---|
type.outbound | eq |
| field:"type.outbound" kind:eq value:"true" |
DLP: Hungary Social Security Number (TAJ)
#Detects messages containing Hungarian Social Security Numbers (TAJ).
Telemetry coverage
| Platform | Record / event type |
|---|---|
| Sublime | Inbound email message |
Message attributes
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).
- outbound message
any of
[body.current_thread.text, subject.subject]where:- . matches '\\b\\d{3}[\\s]?\\d{3}[\\s]?\\d{3}\\b'
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)
| Field | Match | Value |
|---|---|---|
regex.contains | regex | \b\d{3}[\s]?\d{3}[\s]?\d{3}\b |
regex.icontains | regex | TAJ|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.
| Field | Kind | Values | Search |
|---|---|---|---|
type.outbound | eq |
| field:"type.outbound" kind:eq value:"true" |
DLP: Hungary Tax Identification Number
#Detects messages containing Hungarian Tax Identification Numbers.
Telemetry coverage
| Platform | Record / event type |
|---|---|
| Sublime | Inbound email message |
Message attributes
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.
- outbound message
any of
[body.current_thread.text, subject.subject]where:- . matches '\\b\\d{10}\\b'
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)
| Field | Match | Value |
|---|---|---|
regex.contains | regex | \b\d{10}\b |
regex.icontains | regex | adó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.
| Field | Kind | Values | Search |
|---|---|---|---|
type.outbound | eq |
| field:"type.outbound" kind:eq value:"true" |
DLP: IMEI Number
#Detects messages containing International Mobile Equipment Identity (IMEI) numbers.
Telemetry coverage
| Platform | Record / event type |
|---|---|
| Sublime | Inbound email message |
Message attributes
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.
- outbound message
any of
[body.current_thread.text, subject.subject]where:- . matches '\\b\\d{15}\\b'
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)
| Field | Match | Value |
|---|---|---|
regex.contains | regex | \b\d{15}\b |
regex.icontains | regex | IMEI|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.
| Field | Kind | Values | Search |
|---|---|---|---|
type.outbound | eq |
| field:"type.outbound" kind:eq value:"true" |
DLP: IMSI Number
#Detects messages containing International Mobile Subscriber Identity (IMSI) numbers.
Telemetry coverage
| Platform | Record / event type |
|---|---|
| Sublime | Inbound email message |
Message attributes
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.
- outbound message
any of
[body.current_thread.text, subject.subject]where:- . matches '\\b\\d{14,15}\\b'
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)
| Field | Match | Value |
|---|---|---|
regex.contains | regex | \b\d{14,15}\b |
regex.icontains | regex | IMSI|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.
| Field | Kind | Values | Search |
|---|---|---|---|
type.outbound | eq |
| field:"type.outbound" kind:eq value:"true" |
DLP: India Aadhaar Number
#Detects messages containing Indian Aadhaar identification numbers.
Telemetry coverage
| Platform | Record / event type |
|---|---|
| Sublime | Inbound email message |
Message attributes
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.
- outbound message
any of
[body.current_thread.text, subject.subject]where:- . matches '\\b\\d{4}[\\s\\-]?\\d{4}[\\s\\-]?\\d{4}\\b'
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)
| Field | Match | Value |
|---|---|---|
regex.contains | regex | \b\d{4}[\s\-]?\d{4}[\s\-]?\d{4}\b |
regex.icontains | regex | aadhaar|आधार|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.
| Field | Kind | Values | Search |
|---|---|---|---|
type.outbound | eq |
| field:"type.outbound" kind:eq value:"true" |
DLP: India Bank Account Number
#Detects messages containing Indian bank account numbers with IFSC codes.
Telemetry coverage
| Platform | Record / event type |
|---|---|
| Sublime | Inbound email message |
Message attributes
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.
- outbound message
any of
[body.current_thread.text, subject.subject]where:- . matches '\\b[A-Z]{4}0[A-Z0-9]{6}\\b'
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)
| Field | Match | Value |
|---|---|---|
regex.contains | regex | \b[A-Z]{4}0[A-Z0-9]{6}\b |
regex.icontains | regex | IFSC|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.
| Field | Kind | Values | Search |
|---|---|---|---|
type.outbound | eq |
| field:"type.outbound" kind:eq value:"true" |
DLP: India PAN Number
#Detects messages containing Indian Permanent Account Numbers (PAN).
Telemetry coverage
| Platform | Record / event type |
|---|---|
| Sublime | Inbound email message |
Message attributes
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).
- outbound message
any of
[body.current_thread.text, subject.subject]where:- . matches '\\b[A-Z]{5}\\d{4}[A-Z]\\b'
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)
| Field | Match | Value |
|---|---|---|
regex.contains | regex | \b[A-Z]{5}\d{4}[A-Z]\b |
regex.icontains | regex | PAN|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.
| Field | Kind | Values | Search |
|---|---|---|---|
type.outbound | eq |
| field:"type.outbound" kind:eq value:"true" |
DLP: India Passport Number
#Detects messages containing Indian passport numbers.
Telemetry coverage
| Platform | Record / event type |
|---|---|
| Sublime | Inbound email message |
Message attributes
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.
- outbound message
any of
[body.current_thread.text, subject.subject]where:- . matches '\\b[A-Z]\\d{7}\\b'
any of
[body.current_thread.text, subject.subject]where:- . matches 'passport|पासपोर्ट|travel\\s+document'
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)
| Field | Match | Value |
|---|---|---|
regex.contains | regex | \b[A-Z]\d{7}\b |
regex.icontains | regex | passport|पासपोर्ट|travel\s+document |
strings.icontains | substring | in |
strings.icontains | substring | india |
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
#Detects messages containing IP addresses (IPv4 and IPv6).
Telemetry coverage
| Platform | Record / event type |
|---|---|
| Sublime | Inbound email message |
Message attributes
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).
- outbound message
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'
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)
| Field | Match | Value |
|---|---|---|
regex.contains | regex | \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.contains | regex | \b(?:[0-9a-fA-F]{1,4}:){7}[0-9a-fA-F]{1,4}\b |
regex.icontains | regex | ip\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.
| Field | Kind | Values | Search |
|---|---|---|---|
type.outbound | eq |
| field:"type.outbound" kind:eq value:"true" |
DLP: Ireland Personal Public Service (PPS) Number
#Detects messages containing Irish Personal Public Service Numbers.
Telemetry coverage
| Platform | Record / event type |
|---|---|
| Sublime | Inbound email message |
Message attributes
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.
- outbound message
any of
[body.current_thread.text, subject.subject]where:- . matches '\\b\\d{7}[A-Z]{1,2}\\b'
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)
| Field | Match | Value |
|---|---|---|
regex.contains | regex | \b\d{7}[A-Z]{1,2}\b |
regex.icontains | regex | PPS|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.
| Field | Kind | Values | Search |
|---|---|---|---|
type.outbound | eq |
| field:"type.outbound" kind:eq value:"true" |
DLP: Israel Bank Account Number
#Detects messages containing Israeli bank account numbers.
Telemetry coverage
| Platform | Record / event type |
|---|---|
| Sublime | Inbound email message |
Message attributes
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.
- outbound message
any of
[body.current_thread.text, subject.subject]where:- . matches '\\b\\d{6,9}\\b'
any of
[body.current_thread.text, subject.subject]where:- . matches 'bank\\s+account|account\\s+number|חשבון\\s+בנק'
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)
| Field | Match | Value |
|---|---|---|
regex.contains | regex | \b\d{6,9}\b |
regex.icontains | regex | bank\s+account|account\s+number|חשבון\s+בנק |
strings.icontains | substring | il |
strings.icontains | substring | israel |
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
#Detects messages containing credit card numbers.
Telemetry coverage
| Platform | Record / event type |
|---|---|
| Sublime | Inbound email message |
Message attributes
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.
- outbound message
any of
attachmentswhere 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'
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)
| Field | Match | Value |
|---|---|---|
attachments[].file_extension | member | .csv |
attachments[].file_extension | member | .txt |
attachments[].file_extension | member | .xlsx |
attachments[].file_extension | member | .xls |
regex.contains | regex | \b(?:\d{4}[\s\-]?){3}\d{1,7}\b |
strings.icontains | substring | il |
strings.icontains | substring | israel |
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
#Detects messages containing Israeli National ID numbers (Teudat Zehut).
Telemetry coverage
| Platform | Record / event type |
|---|---|
| Sublime | Inbound email message |
Message attributes
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).
- outbound message
any of
[body.current_thread.text, subject.subject]where:- . matches '\\b\\d{9}\\b'
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)
| Field | Match | Value |
|---|---|---|
regex.contains | regex | \b\d{9}\b |
regex.icontains | regex | teudat\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.
| Field | Kind | Values | Search |
|---|---|---|---|
type.outbound | eq |
| field:"type.outbound" kind:eq value:"true" |
DLP: Israel SWIFT Code
#Detects messages containing Israeli SWIFT/BIC codes for financial institutions.
Telemetry coverage
| Platform | Record / event type |
|---|---|
| Sublime | Inbound email message |
Message attributes
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.
- outbound message
any of
ml.logo_detect(beta.message_screenshot()).brandswhere:.name matches any of 2 patterns
*bank**financial*
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)
| Field | Match | Value |
|---|---|---|
strings.ilike | substring | *bank* |
strings.ilike | substring | *financial* |
regex.contains | regex | \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.
| Field | Kind | Values | Search |
|---|---|---|---|
type.outbound | eq |
| field:"type.outbound" kind:eq value:"true" |
DLP: Italy Fiscal Code
#Detects messages containing Italian Fiscal Codes (Codice Fiscale).
Telemetry coverage
| Platform | Record / event type |
|---|---|
| Sublime | Inbound email message |
Message attributes
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).
- outbound message
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'
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)
| Field | Match | Value |
|---|---|---|
regex.contains | regex | \b[A-Z]{6}\d{2}[A-Z]\d{2}[A-Z]\d{3}[A-Z]\b |
regex.icontains | regex | codice\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.
| Field | Kind | Values | Search |
|---|---|---|---|
type.outbound | eq |
| field:"type.outbound" kind:eq value:"true" |
DLP: Japan Bank Account Number
#Detects messages containing Japanese bank account numbers.
Telemetry coverage
| Platform | Record / event type |
|---|---|
| Sublime | Inbound email message |
Message attributes
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.
- outbound message
any of
[body.current_thread.text, subject.subject]where:- . matches '\\b\\d{7}\\b'
any of
[body.current_thread.text, subject.subject]where:- . matches 'bank\\s+account|口座番号|銀行口座|account\\s+number'
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)
| Field | Match | Value |
|---|---|---|
regex.contains | regex | \b\d{7}\b |
regex.icontains | regex | bank\s+account|口座番号|銀行口座|account\s+number |
strings.icontains | substring | jp |
strings.icontains | substring | japan |
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
#Detects messages containing credit card numbers.
Telemetry coverage
| Platform | Record / event type |
|---|---|
| Sublime | Inbound email message |
Message attributes
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.
- outbound message
any of
attachmentswhere 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'
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)
| Field | Match | Value |
|---|---|---|
attachments[].file_extension | member | .csv |
attachments[].file_extension | member | .txt |
attachments[].file_extension | member | .xlsx |
attachments[].file_extension | member | .xls |
regex.contains | regex | \b(?:\d{4}[\s\-]?){3}\d{1,7}\b |
strings.icontains | substring | jp |
strings.icontains | substring | japan |
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
#Detects messages containing Japanese driver's license numbers.
Telemetry coverage
| Platform | Record / event type |
|---|---|
| Sublime | Inbound email message |
Message attributes
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.
- outbound message
any of
[body.current_thread.text, subject.subject]where:- . matches '\\b\\d{12}\\b'
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)
| Field | Match | Value |
|---|---|---|
regex.contains | regex | \b\d{12}\b |
regex.icontains | regex | 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\\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.
| Field | Kind | Values | Search |
|---|---|---|---|
type.outbound | eq |
| field:"type.outbound" kind:eq value:"true" |
DLP: Japan MyNumber ID
#Detects messages containing Japanese MyNumber identification numbers.
Telemetry coverage
| Platform | Record / event type |
|---|---|
| Sublime | Inbound email message |
Message attributes
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.
- outbound message
any of
[body.current_thread.text, subject.subject]where:- . matches '\\b\\d{4}[\\s\\-]?\\d{4}[\\s\\-]?\\d{4}\\b'
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)
| Field | Match | Value |
|---|---|---|
regex.contains | regex | \b\d{4}[\s\-]?\d{4}[\s\-]?\d{4}\b |
regex.icontains | regex | MyNumber|マイナンバー|個人番号 |
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.
| Field | Kind | Values | Search |
|---|---|---|---|
type.outbound | eq |
| field:"type.outbound" kind:eq value:"true" |
DLP: Japan Passport Number
#Detects messages containing Japanese passport numbers.
Telemetry coverage
| Platform | Record / event type |
|---|---|
| Sublime | Inbound email message |
Message attributes
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.
- outbound message
any of
[body.current_thread.text, subject.subject]where:- . matches '\\b[A-Z]{2}\\d{7}\\b'
any of
[body.current_thread.text, subject.subject]where:- . matches 'passport|パスポート|旅券'
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)
| Field | Match | Value |
|---|---|---|
regex.contains | regex | \b[A-Z]{2}\d{7}\b |
regex.icontains | regex | passport|パスポート|旅券 |
strings.icontains | substring | jp |
strings.icontains | substring | japan |
strings.icontains | substring | 日本 |
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.
| Field | Kind | Values | Search |
|---|---|---|---|
body.current_thread.text | contains |
| field:"body.current_thread.text" kind:contains |
sender.email.domain.tld | contains |
| field:"sender.email.domain.tld" kind:contains value:"jp" |
type.outbound | eq |
| field:"type.outbound" kind:eq value:"true" |
DLP: Japan Social Insurance Number
#Detects messages containing Japanese Social Insurance Numbers.
Telemetry coverage
| Platform | Record / event type |
|---|---|
| Sublime | Inbound email message |
Message attributes
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.
- outbound message
any of
[body.current_thread.text, subject.subject]where:- . matches '\\b\\d{4}[\\s\\-]?\\d{6}\\b'
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)
| Field | Match | Value |
|---|---|---|
regex.contains | regex | \b\d{4}[\s\-]?\d{6}\b |
regex.icontains | regex | social\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.
| Field | Kind | Values | Search |
|---|---|---|---|
type.outbound | eq |
| field:"type.outbound" kind:eq value:"true" |
DLP: JSON Web Token (JWT)
#Detects messages containing JSON Web Tokens.
Telemetry coverage
| Platform | Record / event type |
|---|---|
| Sublime | Inbound email message |
Message attributes
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.
- outbound message
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)
| Field | Match | Value |
|---|---|---|
regex.contains | regex | \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.
| Field | Kind | Values | Search |
|---|---|---|---|
type.outbound | eq |
| field:"type.outbound" kind:eq value:"true" |
DLP: Latvia Personal Code
#Detects messages containing Latvian Personal Codes (personas kods).
Telemetry coverage
| Platform | Record / event type |
|---|---|
| Sublime | Inbound email message |
Message attributes
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).
- outbound message
any of
[body.current_thread.text, subject.subject]where:- . matches '\\b\\d{6}[\\s\\-]?\\d{5}\\b'
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)
| Field | Match | Value |
|---|---|---|
regex.contains | regex | \b\d{6}[\s\-]?\d{5}\b |
regex.icontains | regex | personas\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.
| Field | Kind | Values | Search |
|---|---|---|---|
type.outbound | eq |
| field:"type.outbound" kind:eq value:"true" |
DLP: Lithuania Personal Code
#Detects messages containing Lithuanian Personal Codes (asmens kodas).
Telemetry coverage
| Platform | Record / event type |
|---|---|
| Sublime | Inbound email message |
Message attributes
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).
- outbound message
any of
[body.current_thread.text, subject.subject]where:- . matches '\\b[1-6]\\d{10}\\b'
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)
| Field | Match | Value |
|---|---|---|
regex.contains | regex | \b[1-6]\d{10}\b |
regex.icontains | regex | asmens\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.
| Field | Kind | Values | Search |
|---|---|---|---|
type.outbound | eq |
| field:"type.outbound" kind:eq value:"true" |
DLP: Luxembourg National ID (Natural Persons)
#Detects messages containing Luxembourg National Identification Numbers for natural persons.
Telemetry coverage
| Platform | Record / event type |
|---|---|
| Sublime | Inbound email message |
Message attributes
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.
- outbound message
any of
[body.current_thread.text, subject.subject]where:- . matches '\\b\\d{13}\\b'
any of
[body.current_thread.text, subject.subject]where:- . matches 'matricule|national\\s+identification'
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)
| Field | Match | Value |
|---|---|---|
regex.contains | regex | \b\d{13}\b |
regex.icontains | regex | matricule|national\s+identification |
strings.icontains | substring | lu |
strings.icontains | substring | luxembourg |
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.
| Field | Kind | Values | Search |
|---|---|---|---|
body.current_thread.text | contains |
| field:"body.current_thread.text" kind:contains value:"luxembourg" |
sender.email.domain.tld | contains |
| field:"sender.email.domain.tld" kind:contains value:"lu" |
type.outbound | eq |
| field:"type.outbound" kind:eq value:"true" |
DLP: Luxembourg National ID (Non-Natural Persons)
#Detects messages containing Luxembourg National Identification Numbers for non-natural persons.
Telemetry coverage
| Platform | Record / event type |
|---|---|
| Sublime | Inbound email message |
Message attributes
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.
- outbound message
any of
[body.current_thread.text, subject.subject]where:- . matches '\\b\\d{11}\\b'
any of
[body.current_thread.text, subject.subject]where:- . matches 'matricule|company\\s+ID|identification'
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)
| Field | Match | Value |
|---|---|---|
regex.contains | regex | \b\d{11}\b |
regex.icontains | regex | matricule|company\s+ID|identification |
strings.icontains | substring | lu |
strings.icontains | substring | luxembourg |
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.
| Field | Kind | Values | Search |
|---|---|---|---|
body.current_thread.text | contains |
| field:"body.current_thread.text" kind:contains value:"luxembourg" |
sender.email.domain.tld | contains |
| field:"sender.email.domain.tld" kind:contains value:"lu" |
type.outbound | eq |
| field:"type.outbound" kind:eq value:"true" |
DLP: MAC Address
#Detects messages containing MAC addresses.
Telemetry coverage
| Platform | Record / event type |
|---|---|
| Sublime | Inbound email message |
Message attributes
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.
- outbound message
any of
[body.current_thread.text, subject.subject]where:- . matches '\\b(?:[0-9A-Fa-f]{2}[:-]){5}[0-9A-Fa-f]{2}\\b'
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)
| Field | Match | Value |
|---|---|---|
regex.contains | regex | \b(?:[0-9A-Fa-f]{2}[:-]){5}[0-9A-Fa-f]{2}\b |
regex.icontains | regex | mac\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.
| Field | Kind | Values | Search |
|---|---|---|---|
type.outbound | eq |
| field:"type.outbound" kind:eq value:"true" |
DLP: Malta Identity Card Number
#Detects messages containing Maltese Identity Card numbers.
Telemetry coverage
| Platform | Record / event type |
|---|---|
| Sublime | Inbound email message |
Message attributes
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.
- outbound message
any of
[body.current_thread.text, subject.subject]where:- . matches '\\b\\d{7,8}[A-Z]\\b'
any of
[body.current_thread.text, subject.subject]where:- . matches 'identity\\s+card|ID\\s+card|karta\\s+tal-identità'
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)
| Field | Match | Value |
|---|---|---|
regex.contains | regex | \b\d{7,8}[A-Z]\b |
regex.icontains | regex | identity\s+card|ID\s+card|karta\s+tal-identità |
strings.icontains | substring | mt |
strings.icontains | substring | malta |
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
#Detects messages containing Maltese Tax Identification Numbers.
Telemetry coverage
| Platform | Record / event type |
|---|---|
| Sublime | Inbound email message |
Message attributes
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.
- outbound message
any of
[body.current_thread.text, subject.subject]where:- . matches '\\b\\d{8}\\b'
any of
[body.current_thread.text, subject.subject]where:- . matches 'tax\\s+ID|TIN|numru\\s+tat-taxxa'
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)
| Field | Match | Value |
|---|---|---|
regex.contains | regex | \b\d{8}\b |
regex.icontains | regex | tax\s+ID|TIN|numru\s+tat-taxxa |
strings.icontains | substring | mt |
strings.icontains | substring | malta |
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
#Detects messages containing Mexican Unique Population Registry Code (CURP).
Telemetry coverage
| Platform | Record / event type |
|---|---|
| Sublime | Inbound email message |
Message attributes
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).
- outbound message
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'
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)
| Field | Match | Value |
|---|---|---|
regex.contains | regex | \b[A-Z]{4}\d{6}[HM][A-Z]{5}[0-9A-Z]\d\b |
regex.icontains | regex | CURP|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.
| Field | Kind | Values | Search |
|---|---|---|---|
type.outbound | eq |
| field:"type.outbound" kind:eq value:"true" |
DLP: Mexico Passport Number
#Detects messages containing Mexican passport numbers.
Telemetry coverage
| Platform | Record / event type |
|---|---|
| Sublime | Inbound email message |
Message attributes
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.
- outbound message
any of
[body.current_thread.text, subject.subject]where:- . matches '\\b[A-Z0-9]{9,10}\\b'
any of
[body.current_thread.text, subject.subject]where:- . matches 'passport|pasaporte|méxico|mexico'
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)
| Field | Match | Value |
|---|---|---|
regex.contains | regex | \b[A-Z0-9]{9,10}\b |
regex.icontains | regex | passport|pasaporte|méxico|mexico |
strings.icontains | substring | mx |
strings.icontains | substring | mexico |
strings.icontains | substring | mé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.
| Field | Kind | Values | Search |
|---|---|---|---|
body.current_thread.text | contains |
| field:"body.current_thread.text" kind:contains |
sender.email.domain.tld | contains |
| field:"sender.email.domain.tld" kind:contains value:"mx" |
type.outbound | eq |
| field:"type.outbound" kind:eq value:"true" |
DLP: Netherlands Citizen's Service (BSN) Number
#Detects messages containing Dutch Citizen's Service Numbers (Burgerservicenummer).
Telemetry coverage
| Platform | Record / event type |
|---|---|
| Sublime | Inbound email message |
Message attributes
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).
- outbound message
any of
[body.current_thread.text, subject.subject]where:- . matches '\\b\\d{8,9}\\b'
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)
| Field | Match | Value |
|---|---|---|
regex.contains | regex | \b\d{8,9}\b |
regex.icontains | regex | BSN|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.
| Field | Kind | Values | Search |
|---|---|---|---|
type.outbound | eq |
| field:"type.outbound" kind:eq value:"true" |
DLP: Netherlands Tax Identification Number
#Detects messages containing Dutch Tax Identification Numbers.
Telemetry coverage
| Platform | Record / event type |
|---|---|
| Sublime | Inbound email message |
Message attributes
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.
- outbound message
any of
[body.current_thread.text, subject.subject]where:- . matches '\\b\\d{9}\\b'
any of
[body.current_thread.text, subject.subject]where:- . matches 'tax\\s+identification|belastingnummer|TIN'
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)
| Field | Match | Value |
|---|---|---|
regex.contains | regex | \b\d{9}\b |
regex.icontains | regex | tax\s+identification|belastingnummer|TIN |
strings.icontains | substring | nl |
strings.icontains | substring | netherlands |
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.
| Field | Kind | Values | Search |
|---|---|---|---|
body.current_thread.text | contains |
| field:"body.current_thread.text" kind:contains value:"netherlands" |
sender.email.domain.tld | contains |
| field:"sender.email.domain.tld" kind:contains value:"nl" |
type.outbound | eq |
| field:"type.outbound" kind:eq value:"true" |
DLP: OAuth Client Secret
#Detects messages containing OAuth client secrets.
Telemetry coverage
| Platform | Record / event type |
|---|---|
| Sublime | Inbound email message |
Message attributes
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.
- outbound message
any of
[body.current_thread.text, subject.subject]where:- . matches 'oauth|client[_\\s]secret|client[_\\s]id'
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)
| Field | Match | Value |
|---|---|---|
regex.icontains | regex | oauth|client[_\s]secret|client[_\s]id |
regex.contains | regex | \b[a-f0-9]{32,}\b |
regex.contains | regex | \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.
| Field | Kind | Values | Search |
|---|---|---|---|
type.outbound | eq |
| field:"type.outbound" kind:eq value:"true" |
DLP: Poland Identity Card
#Detects messages containing Polish Identity Card numbers (Dowód osobisty).
Telemetry coverage
| Platform | Record / event type |
|---|---|
| Sublime | Inbound email message |
Message attributes
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).
- outbound message
any of
[body.current_thread.text, subject.subject]where:- . matches '\\b[A-Z]{3}\\d{6}\\b'
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)
| Field | Match | Value |
|---|---|---|
regex.contains | regex | \b[A-Z]{3}\d{6}\b |
regex.icontains | regex | dowó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.
| Field | Kind | Values | Search |
|---|---|---|---|
type.outbound | eq |
| field:"type.outbound" kind:eq value:"true" |
DLP: Poland Tax Identification Number
#Detects messages containing Polish Tax Identification Numbers (NIP).
Telemetry coverage
| Platform | Record / event type |
|---|---|
| Sublime | Inbound email message |
Message attributes
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).
- outbound message
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'
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)
| Field | Match | Value |
|---|---|---|
regex.contains | regex | \b\d{3}[\s\-]?\d{3}[\s\-]?\d{2}[\s\-]?\d{2}\b|\b\d{10}\b |
regex.icontains | regex | NIP|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.
| Field | Kind | Values | Search |
|---|---|---|---|
type.outbound | eq |
| field:"type.outbound" kind:eq value:"true" |
DLP: Portugal Citizen Card Number
#Detects messages containing Portuguese Citizen Card Numbers (Cartão de Cidadão).
Telemetry coverage
| Platform | Record / event type |
|---|---|
| Sublime | Inbound email message |
Message attributes
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).
- outbound message
any of
[body.current_thread.text, subject.subject]where:- . matches '\\b\\d{8}[\\s\\-]?\\d\\s?[A-Z]{2}\\d\\b'
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)
| Field | Match | Value |
|---|---|---|
regex.contains | regex | \b\d{8}[\s\-]?\d\s?[A-Z]{2}\d\b |
regex.icontains | regex | cartã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.
| Field | Kind | Values | Search |
|---|---|---|---|
type.outbound | eq |
| field:"type.outbound" kind:eq value:"true" |
DLP: Portugal Tax Identification Number
#Detects messages containing Portuguese Tax Identification Numbers (NIF).
Telemetry coverage
| Platform | Record / event type |
|---|---|
| Sublime | Inbound email message |
Message attributes
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).
- outbound message
any of
[body.current_thread.text, subject.subject]where:- . matches '\\b[1-3,5,6,8]\\d{8}\\b'
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)
| Field | Match | Value |
|---|---|---|
regex.contains | regex | \b[1-3,5,6,8]\d{8}\b |
regex.icontains | regex | NIF|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.
| Field | Kind | Values | Search |
|---|---|---|---|
type.outbound | eq |
| field:"type.outbound" kind:eq value:"true" |
DLP: Private Key
#Detects messages containing private keys (RSA, SSH, PGP).
Telemetry coverage
| Platform | Record / event type |
|---|---|
| Sublime | Inbound email message |
Message attributes
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).
- outbound message
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)
| Field | Match | Value |
|---|---|---|
regex.contains | regex | -----BEGIN\s+(?:RSA\s+)?PRIVATE\s+KEY----- |
regex.contains | regex | -----BEGIN\s+OPENSSH\s+PRIVATE\s+KEY----- |
regex.contains | regex | -----BEGIN\s+PGP\s+PRIVATE\s+KEY\s+BLOCK----- |
regex.contains | regex | -----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.
| Field | Kind | Values | Search |
|---|---|---|---|
type.outbound | eq |
| field:"type.outbound" kind:eq value:"true" |
DLP: Romania Personal Numerical Code
#Detects messages containing Romanian Personal Numerical Codes (CNP).
Telemetry coverage
| Platform | Record / event type |
|---|---|
| Sublime | Inbound email message |
Message attributes
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).
- outbound message
any of
[body.current_thread.text, subject.subject]where:- . matches '\\b[1-8]\\d{12}\\b'
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)
| Field | Match | Value |
|---|---|---|
regex.contains | regex | \b[1-8]\d{12}\b |
regex.icontains | regex | CNP|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.
| Field | Kind | Values | Search |
|---|---|---|---|
type.outbound | eq |
| field:"type.outbound" kind:eq value:"true" |
DLP: Saudi Arabia IBAN
#Detects messages containing Saudi Arabian International Bank Account Numbers (IBAN).
Telemetry coverage
| Platform | Record / event type |
|---|---|
| Sublime | Inbound email message |
Message attributes
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).
- outbound message
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'
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)
| Field | Match | Value |
|---|---|---|
regex.contains | regex | \bSA\d{2}[\s]?\d{4}[\s]?\d{4}[\s]?\d{4}[\s]?\d{4}[\s]?\d{4}[\s]?\d{2}\b |
regex.icontains | regex | IBAN|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.
| Field | Kind | Values | Search |
|---|---|---|---|
type.outbound | eq |
| field:"type.outbound" kind:eq value:"true" |
DLP: Saudi Arabia National ID
#Detects messages containing Saudi Arabian National ID numbers.
Telemetry coverage
| Platform | Record / event type |
|---|---|
| Sublime | Inbound email message |
Message attributes
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.
- outbound message
any of
[body.current_thread.text, subject.subject]where:- . matches '\\b[12]\\d{9}\\b'
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)
| Field | Match | Value |
|---|---|---|
regex.contains | regex | \b[12]\d{9}\b |
regex.icontains | regex | national\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.
| Field | Kind | Values | Search |
|---|---|---|---|
type.outbound | eq |
| field:"type.outbound" kind:eq value:"true" |
DLP: Saudi Arabia SWIFT Code
#Detects messages containing Saudi Arabian SWIFT/BIC codes for financial institutions.
Telemetry coverage
| Platform | Record / event type |
|---|---|
| Sublime | Inbound email message |
Message attributes
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.
- outbound message
any of
ml.logo_detect(beta.message_screenshot()).brandswhere:.name matches any of 2 patterns
*bank**financial*
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)
| Field | Match | Value |
|---|---|---|
strings.ilike | substring | *bank* |
strings.ilike | substring | *financial* |
regex.contains | regex | \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.
| Field | Kind | Values | Search |
|---|---|---|---|
type.outbound | eq |
| field:"type.outbound" kind:eq value:"true" |
DLP: Slack Token
#Detects messages containing Slack API tokens and webhooks.
Telemetry coverage
| Platform | Record / event type |
|---|---|
| Sublime | Inbound email message |
Message attributes
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.
- outbound message
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)
| Field | Match | Value |
|---|---|---|
regex.contains | regex | \bxox[bpar]-[0-9]{10,13}-[0-9]{10,13}-[A-Za-z0-9]{24,}\b |
regex.contains | regex | hooks\.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.
| Field | Kind | Values | Search |
|---|---|---|---|
type.outbound | eq |
| field:"type.outbound" kind:eq value:"true" |
DLP: Slovakia Personal Number
#Detects messages containing Slovak Personal Numbers (rodné číslo).
Telemetry coverage
| Platform | Record / event type |
|---|---|
| Sublime | Inbound email message |
Message attributes
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).
- outbound message
any of
[body.current_thread.text, subject.subject]where:- . matches '\\b\\d{6}[\\s/]?\\d{4}\\b'
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)
| Field | Match | Value |
|---|---|---|
regex.contains | regex | \b\d{6}[\s/]?\d{4}\b |
regex.icontains | regex | rodné\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.
| Field | Kind | Values | Search |
|---|---|---|---|
type.outbound | eq |
| field:"type.outbound" kind:eq value:"true" |
DLP: Slovenia Tax Identification Number
#Detects messages containing Slovenian Tax Identification Numbers.
Telemetry coverage
| Platform | Record / event type |
|---|---|
| Sublime | Inbound email message |
Message attributes
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.
- outbound message
any of
[body.current_thread.text, subject.subject]where:- . matches '\\b\\d{8}\\b'
any of
[body.current_thread.text, subject.subject]where:- . matches 'davčna\\s+številka|tax\\s+ID|TIN'
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)
| Field | Match | Value |
|---|---|---|
regex.contains | regex | \b\d{8}\b |
regex.icontains | regex | davčna\s+številka|tax\s+ID|TIN |
strings.icontains | substring | si |
strings.icontains | substring | slovenia |
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
#Detects messages containing Slovenian Unique Master Citizen Numbers (EMŠO).
Telemetry coverage
| Platform | Record / event type |
|---|---|
| Sublime | Inbound email message |
Message attributes
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).
- outbound message
any of
[body.current_thread.text, subject.subject]where:- . matches '\\b\\d{13}\\b'
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)
| Field | Match | Value |
|---|---|---|
regex.contains | regex | \b\d{13}\b |
regex.icontains | regex | EMŠ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.
| Field | Kind | Values | Search |
|---|---|---|---|
type.outbound | eq |
| field:"type.outbound" kind:eq value:"true" |
DLP: South Korea Resident Registration Number (RRN)
#Detects messages containing South Korean Resident Registration Numbers.
Telemetry coverage
| Platform | Record / event type |
|---|---|
| Sublime | Inbound email message |
Message attributes
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.
- outbound message
any of
[body.current_thread.text, subject.subject]where:- . matches '\\b\\d{6}-?[1-4]\\d{6}\\b'
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)
| Field | Match | Value |
|---|---|---|
regex.contains | regex | \b\d{6}-?[1-4]\d{6}\b |
regex.icontains | regex | RRN|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.
| Field | Kind | Values | Search |
|---|---|---|---|
type.outbound | eq |
| field:"type.outbound" kind:eq value:"true" |
DLP: Spain Bank Account Number
#Detects messages containing Spanish bank account numbers (IBAN).
Telemetry coverage
| Platform | Record / event type |
|---|---|
| Sublime | Inbound email message |
Message attributes
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).
- outbound message
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'
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)
| Field | Match | Value |
|---|---|---|
regex.contains | regex | \bES\d{2}[\s]?\d{4}[\s]?\d{4}[\s]?\d{4}[\s]?\d{4}[\s]?\d{4}\b |
regex.icontains | regex | IBAN|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.
| Field | Kind | Values | Search |
|---|---|---|---|
type.outbound | eq |
| field:"type.outbound" kind:eq value:"true" |
DLP: Spain DNI/NIE
#Detects messages containing Spanish DNI (National Identity Document) or NIE (Foreigner Identity Number).
Telemetry coverage
| Platform | Record / event type |
|---|---|
| Sublime | Inbound email message |
Message attributes
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).
- outbound message
any of
[body.current_thread.text, subject.subject]where:- . matches '\\b(?:[XYZ]\\d{7}|[\\d]{8})[A-Z]\\b'
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)
| Field | Match | Value |
|---|---|---|
regex.contains | regex | \b(?:[XYZ]\d{7}|[\d]{8})[A-Z]\b |
regex.icontains | regex | DNI|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.
| Field | Kind | Values | Search |
|---|---|---|---|
type.outbound | eq |
| field:"type.outbound" kind:eq value:"true" |
DLP: Spain Passport Number
#Detects messages containing Spanish passport numbers.
Telemetry coverage
| Platform | Record / event type |
|---|---|
| Sublime | Inbound email message |
Message attributes
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.
- outbound message
any of
[body.current_thread.text, subject.subject]where:- . matches '\\b[A-Z]{3}\\d{6}\\b'
any of
[body.current_thread.text, subject.subject]where:- . matches 'pasaporte|passport'
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)
| Field | Match | Value |
|---|---|---|
regex.contains | regex | \b[A-Z]{3}\d{6}\b |
regex.icontains | regex | pasaporte|passport |
strings.icontains | substring | es |
strings.icontains | substring | spain |
strings.icontains | substring | españ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.
| Field | Kind | Values | Search |
|---|---|---|---|
body.current_thread.text | contains |
| field:"body.current_thread.text" kind:contains |
sender.email.domain.tld | contains |
| field:"sender.email.domain.tld" kind:contains value:"es" |
type.outbound | eq |
| field:"type.outbound" kind:eq value:"true" |
DLP: Spain Social Security Number
#Detects messages containing Spanish Social Security Numbers (Número de la Seguridad Social).
Telemetry coverage
| Platform | Record / event type |
|---|---|
| Sublime | Inbound email message |
Message attributes
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).
- outbound message
any of
[body.current_thread.text, subject.subject]where:- . matches '\\b\\d{2}[\\s/]?\\d{8}[\\s/]?\\d{2}\\b'
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)
| Field | Match | Value |
|---|---|---|
regex.contains | regex | \b\d{2}[\s/]?\d{8}[\s/]?\d{2}\b |
regex.icontains | regex | seguridad\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.
| Field | Kind | Values | Search |
|---|---|---|---|
type.outbound | eq |
| field:"type.outbound" kind:eq value:"true" |
DLP: Spain Tax Identification Number
#Detects messages containing Spanish Tax Identification Numbers (NIF).
Telemetry coverage
| Platform | Record / event type |
|---|---|
| Sublime | Inbound email message |
Message attributes
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).
- outbound message
any of
[body.current_thread.text, subject.subject]where:- . matches '\\b(?:[A-Z]?\\d{7,8}[A-Z])\\b'
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)
| Field | Match | Value |
|---|---|---|
regex.contains | regex | \b(?:[A-Z]?\d{7,8}[A-Z])\b |
regex.icontains | regex | NIF|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.
| Field | Kind | Values | Search |
|---|---|---|---|
type.outbound | eq |
| field:"type.outbound" kind:eq value:"true" |
DLP: SSL Certificate
#Detects messages containing SSL/TLS certificates.
Telemetry coverage
| Platform | Record / event type |
|---|---|
| Sublime | Inbound email message |
Message attributes
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.
- outbound message
any of
[body.current_thread.text, subject.subject]where:- . matches '-----BEGIN\\s+CERTIFICATE-----'
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)
| Field | Match | Value |
|---|---|---|
regex.contains | regex | -----BEGIN\s+CERTIFICATE----- |
regex.contains | regex | -----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.
| Field | Kind | Values | Search |
|---|---|---|---|
type.outbound | eq |
| field:"type.outbound" kind:eq value:"true" |
DLP: Sweden National ID
#Detects messages containing Swedish National ID numbers (personnummer).
Telemetry coverage
| Platform | Record / event type |
|---|---|
| Sublime | Inbound email message |
Message attributes
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).
- outbound message
any of
[body.current_thread.text, subject.subject]where:- . matches '\\b(?:\\d{8}|\\d{6})[\\s\\-]\\d{4}\\b'
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)
| Field | Match | Value |
|---|---|---|
regex.contains | regex | \b(?:\d{8}|\d{6})[\s\-]\d{4}\b |
regex.icontains | regex | personnummer|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.
| Field | Kind | Values | Search |
|---|---|---|---|
type.outbound | eq |
| field:"type.outbound" kind:eq value:"true" |
DLP: Sweden Tax Identification Number
#Detects messages containing Swedish Tax Identification Numbers.
Telemetry coverage
| Platform | Record / event type |
|---|---|
| Sublime | Inbound email message |
Message attributes
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.
- outbound message
any of
[body.current_thread.text, subject.subject]where:- . matches '\\b\\d{12}\\b'
any of
[body.current_thread.text, subject.subject]where:- . matches 'skatteregistrering|tax\\s+ID|TIN'
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)
| Field | Match | Value |
|---|---|---|
regex.contains | regex | \b\d{12}\b |
regex.icontains | regex | skatteregistrering|tax\s+ID|TIN |
strings.icontains | substring | se |
strings.icontains | substring | sweden |
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
#Detects messages containing Taiwan National Identification Card numbers.
Telemetry coverage
| Platform | Record / event type |
|---|---|
| Sublime | Inbound email message |
Message attributes
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.
- outbound message
any of
[body.current_thread.text, subject.subject]where:- . matches '\\b[A-Z]\\d{9}\\b'
any of
[body.current_thread.text, subject.subject]where:- . matches 'taiwan|national\\s+ID|身分證'
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)
| Field | Match | Value |
|---|---|---|
regex.contains | regex | \b[A-Z]\d{9}\b |
regex.icontains | regex | taiwan|national\s+ID|身分證 |
strings.icontains | substring | tw |
strings.icontains | substring | taiwan |
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
#Detects messages containing Turkish National Identification Numbers.
Telemetry coverage
| Platform | Record / event type |
|---|---|
| Sublime | Inbound email message |
Message attributes
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.
- outbound message
any of
[body.current_thread.text, subject.subject]where:- . matches '\\b[1-9]\\d{10}\\b'
any of
[body.current_thread.text, subject.subject]where:- . matches 'TC\\s+kimlik|turkish\\s+ID|türkiye|turkey'
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)
| Field | Match | Value |
|---|---|---|
regex.contains | regex | \b[1-9]\d{10}\b |
regex.icontains | regex | TC\s+kimlik|turkish\s+ID|türkiye|turkey |
strings.icontains | substring | tr |
strings.icontains | substring | turkey |
strings.icontains | substring | tü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.
| Field | Kind | Values | Search |
|---|---|---|---|
body.current_thread.text | contains |
| field:"body.current_thread.text" kind:contains |
sender.email.domain.tld | contains |
| field:"sender.email.domain.tld" kind:contains value:"tr" |
type.outbound | eq |
| field:"type.outbound" kind:eq value:"true" |
DLP: UK National Health Service Number
#Detects messages containing UK NHS numbers.
Telemetry coverage
| Platform | Record / event type |
|---|---|
| Sublime | Inbound email message |
Message attributes
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.
- outbound message
any of
[body.current_thread.text, subject.subject]where:- . matches '\\b\\d{3}[\\s]?\\d{3}[\\s]?\\d{4}\\b'
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)
| Field | Match | Value |
|---|---|---|
regex.contains | regex | \b\d{3}[\s]?\d{3}[\s]?\d{4}\b |
regex.icontains | regex | NHS|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.
| Field | Kind | Values | Search |
|---|---|---|---|
type.outbound | eq |
| field:"type.outbound" kind:eq value:"true" |
DLP: UK National Insurance Number (NINO)
#Detects messages containing UK National Insurance Numbers.
Telemetry coverage
| Platform | Record / event type |
|---|---|
| Sublime | Inbound email message |
Message attributes
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.
- outbound message
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'
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)
| Field | Match | Value |
|---|---|---|
regex.contains | regex | \b[A-CEGHJ-PR-TW-Z][A-CEGHJ-NPR-TW-Z]\d{6}[A-D]\b |
regex.icontains | regex | NINO|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.
| Field | Kind | Values | Search |
|---|---|---|---|
type.outbound | eq |
| field:"type.outbound" kind:eq value:"true" |
DLP: UK Passport Number
#Detects messages containing UK passport numbers.
Telemetry coverage
| Platform | Record / event type |
|---|---|
| Sublime | Inbound email message |
Message attributes
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.
- outbound message
any of
[body.current_thread.text, subject.subject]where:- . matches '\\b\\d{9}|[A-Z]{2}\\d{7}\\b'
any of
[body.current_thread.text, subject.subject]where:- . matches 'passport'
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)
| Field | Match | Value |
|---|---|---|
regex.contains | regex | \b\d{9}|[A-Z]{2}\d{7}\b |
regex.icontains | regex | passport |
strings.icontains | substring | uk |
strings.icontains | substring | gb |
strings.icontains | substring | united kingdom |
strings.icontains | substring | UK |
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.
| Field | Kind | Values | Search |
|---|---|---|---|
body.current_thread.text | contains |
| field:"body.current_thread.text" kind:contains |
sender.email.domain.tld | contains |
| field:"sender.email.domain.tld" kind:contains |
type.outbound | eq |
| field:"type.outbound" kind:eq value:"true" |
DLP: UK SWIFT Code
#Detects messages containing UK SWIFT/BIC codes for financial institutions.
Telemetry coverage
| Platform | Record / event type |
|---|---|
| Sublime | Inbound email message |
Message attributes
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.
- outbound message
any of
ml.logo_detect(beta.message_screenshot()).brandswhere:.name matches any of 2 patterns
*bank**financial*
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)
| Field | Match | Value |
|---|---|---|
strings.ilike | substring | *bank* |
strings.ilike | substring | *financial* |
regex.contains | regex | \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.
| Field | Kind | Values | Search |
|---|---|---|---|
type.outbound | eq |
| field:"type.outbound" kind:eq value:"true" |
DLP: US Bank Account Number
#Detects messages containing US bank account numbers with ABA routing numbers.
Telemetry coverage
| Platform | Record / event type |
|---|---|
| Sublime | Inbound email message |
Message attributes
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.
- outbound message
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'
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)
| Field | Match | Value |
|---|---|---|
regex.contains | regex | \b\d{9}\b.*\b\d{8,17}\b|\b\d{8,17}\b.*\b\d{9}\b |
regex.icontains | regex | routing|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.
| Field | Kind | Values | Search |
|---|---|---|---|
type.outbound | eq |
| field:"type.outbound" kind:eq value:"true" |
DLP: US Driver's License Number
#Detects messages containing US driver's license numbers.
Telemetry coverage
| Platform | Record / event type |
|---|---|
| Sublime | Inbound email message |
Message attributes
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.
- outbound message
any of
[body.current_thread.text, subject.subject]where:- . matches '\\b[A-Z0-9]{7,12}\\b'
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)
| Field | Match | Value |
|---|---|---|
regex.contains | regex | \b[A-Z0-9]{7,12}\b |
regex.icontains | regex | driver.?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.
| Field | Kind | Values | Search |
|---|---|---|---|
type.outbound | eq |
| field:"type.outbound" kind:eq value:"true" |
DLP: US ICD-10-CM Code
#Detects messages containing ICD-10-CM diagnosis and procedure codes.
Telemetry coverage
| Platform | Record / event type |
|---|---|
| Sublime | Inbound email message |
Message attributes
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.
- outbound message
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'
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)
| Field | Match | Value |
|---|---|---|
regex.contains | regex | \b[A-Z]\d{2}\.?[A-Z0-9]{0,4}\b|\b[A-HJ-NP-Z0-9]{7}\b |
regex.icontains | regex | ICD-?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.
| Field | Kind | Values | Search |
|---|---|---|---|
type.outbound | eq |
| field:"type.outbound" kind:eq value:"true" |
DLP: US ICD-9-CM Code
#Detects messages containing ICD-9-CM diagnosis and procedure codes.
Telemetry coverage
| Platform | Record / event type |
|---|---|
| Sublime | Inbound email message |
Message attributes
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.
- outbound message
any of
[body.current_thread.text, subject.subject]where:- . matches '\\b(?:[EVev]?\\d{3}\\.?\\d{0,2}|\\d{3,4})\\b'
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)
| Field | Match | Value |
|---|---|---|
regex.contains | regex | \b(?:[EVev]?\d{3}\.?\d{0,2}|\d{3,4})\b |
regex.icontains | regex | ICD-?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.
| Field | Kind | Values | Search |
|---|---|---|---|
type.outbound | eq |
| field:"type.outbound" kind:eq value:"true" |
DLP: US Individual Taxpayer Identification Number (ITIN)
#Detects messages containing US Individual Taxpayer Identification Numbers.
Telemetry coverage
| Platform | Record / event type |
|---|---|
| Sublime | Inbound email message |
Message attributes
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.
- outbound message
any of
[body.current_thread.text, subject.subject]where:- . matches '\\b9\\d{2}[\\s\\-]?\\d{2}[\\s\\-]?\\d{4}\\b'
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)
| Field | Match | Value |
|---|---|---|
regex.contains | regex | \b9\d{2}[\s\-]?\d{2}[\s\-]?\d{4}\b |
regex.icontains | regex | ITIN|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.
| Field | Kind | Values | Search |
|---|---|---|---|
type.outbound | eq |
| field:"type.outbound" kind:eq value:"true" |
DLP: US Insurance Claim Number
#Detects messages containing insurance claim numbers.
Telemetry coverage
| Platform | Record / event type |
|---|---|
| Sublime | Inbound email message |
Message attributes
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.
- outbound message
any of
[body.current_thread.text, subject.subject]where:- . matches '\\b[A-Z0-9]{10,20}\\b'
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)
| Field | Match | Value |
|---|---|---|
regex.contains | regex | \b[A-Z0-9]{10,20}\b |
regex.icontains | regex | claim\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.
| Field | Kind | Values | Search |
|---|---|---|---|
type.outbound | eq |
| field:"type.outbound" kind:eq value:"true" |
DLP: US Passport Number
#Detects messages containing US passport numbers.
Telemetry coverage
| Platform | Record / event type |
|---|---|
| Sublime | Inbound email message |
Message attributes
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.
- outbound message
any of
[body.current_thread.text, subject.subject]where:- . matches '\\b(?:\\d{9}|[A-Z]\\d{8})\\b'
any of
[body.current_thread.text, subject.subject]where:- . matches 'passport|travel\\s+document'
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)
| Field | Match | Value |
|---|---|---|
regex.contains | regex | \b(?:\d{9}|[A-Z]\d{8})\b |
regex.icontains | regex | passport|travel\s+document |
strings.icontains | substring | us |
strings.icontains | substring | united states |
strings.icontains | substring | USA |
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.
| Field | Kind | Values | Search |
|---|---|---|---|
body.current_thread.text | contains |
| field:"body.current_thread.text" kind:contains |
sender.email.domain.tld | contains |
| field:"sender.email.domain.tld" kind:contains value:"us" |
type.outbound | eq |
| field:"type.outbound" kind:eq value:"true" |
DLP: US Social Security Number (SSN)
#Detects messages containing US Social Security Numbers.
Telemetry coverage
| Platform | Record / event type |
|---|---|
| Sublime | Inbound email message |
Message attributes
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.
- outbound message
any of
[body.current_thread.text, subject.subject]where:- . matches '\\b\\d{3}[\\s\\-]?\\d{2}[\\s\\-]?\\d{4}\\b'
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)
| Field | Match | Value |
|---|---|---|
regex.contains | regex | \b\d{3}[\s\-]?\d{2}[\s\-]?\d{4}\b |
regex.icontains | regex | social\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.
| Field | Kind | Values | Search |
|---|---|---|---|
type.outbound | eq |
| field:"type.outbound" kind:eq value:"true" |
DLP: Vehicle Identification Number (VIN)
#Detects messages containing Vehicle Identification Numbers.
Telemetry coverage
| Platform | Record / event type |
|---|---|
| Sublime | Inbound email message |
Message attributes
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.
- outbound message
any of
[body.current_thread.text, subject.subject]where:- . matches '\\b[A-HJ-NPR-Z0-9]{17}\\b'
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)
| Field | Match | Value |
|---|---|---|
regex.contains | regex | \b[A-HJ-NPR-Z0-9]{17}\b |
regex.icontains | regex | VIN|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.
| Field | Kind | Values | Search |
|---|---|---|---|
type.outbound | eq |
| field:"type.outbound" kind:eq value:"true" |