Detection rules › Sublime MQL
Brand impersonation: OpenAI with payment issues
Detects messages impersonating OpenAI or ChatGPT with payment-related content such as subscription cancellation, payment failures, or billing updates from non-OpenAI domains.
Threat classification
Sublime's own taxonomy (not MITRE ATT&CK).
| Category | Values |
|---|---|
| Attack types | Credential Phishing |
| Tactics and techniques | Impersonation: Brand, Social engineering |
Event coverage
| Message attribute |
|---|
| body.current_thread |
| headers.auth_summary |
| sender |
| sender.email |
| subject |
| type |
Rule body MQL
type.inbound
and (
// sender or subject contains openai or chatgpt
regex.icontains(sender.display_name, '\bchat\s*gpt\b')
or regex.icontains(sender.display_name, '\bopen\s*a[li]\b')
or regex.icontains(subject.subject, '\bchat\s*gpt\b')
or regex.icontains(subject.subject, '\bopen\s*a[li]\b')
or regex.icontains(body.current_thread.text,
'(?:regarding\s*your\s*Open\s*A[lI]\s*account|Open\s*A[lI]\s*\.\s*All\s*rights\s*reserved|the\s*open\s*ai\s*team)'
)
)
and 2 of (
// payment phrase
regex.icontains(body.current_thread.text,
'update (?:payment method|your (?:billing|payment))'
),
regex.icontains(body.current_thread.text,
'Subscription (?:has expired|(?:will be)?Cancel+ed)'
),
regex.icontains(body.current_thread.text,
'issue with (?:the transaction|payment)'
),
regex.icontains(body.current_thread.text, "you(?:'ll| will) lose access"),
regex.icontains(body.current_thread.text,
'payment (?:is not successful|error|was declined)'
),
regex.icontains(body.current_thread.text,
'unable to (?:process|automatically charge)'
),
strings.icontains(body.current_thread.text, 'bank or card issuer'),
strings.icontains(body.current_thread.text, 'issue with the transaction'),
strings.icontains(body.current_thread.text, 'could not be processed'),
strings.icontains(body.current_thread.text, 'settle the outstanding'),
strings.icontains(body.current_thread.text, 'account will be downgraded'),
strings.icontains(body.current_thread.text, 'Renew Subscription'),
strings.icontains(body.current_thread.text, 'balance is settled'),
strings.icontains(body.current_thread.text, 'will renew automatically'),
strings.icontains(body.current_thread.text, 'process your payment'),
strings.icontains(body.current_thread.text, 'keep your subscription active'),
strings.icontains(body.current_thread.text, 'avoid any interruption'),
strings.icontains(body.current_thread.text, 'charge attempt was unsuccessful'),
strings.icontains(body.current_thread.text, 'scheduled for cancellation'),
strings.icontains(body.current_thread.text, 'authorizing your payment'),
strings.icontains(body.current_thread.text, 'Declining Payment'),
strings.icontains(body.current_thread.text, 'Insufficient funds'),
strings.icontains(body.current_thread.text, 'Card has expired'),
strings.icontains(body.current_thread.text, 'exceeds your credit limit'),
strings.icontains(body.current_thread.text, 'plan features have been paused'),
strings.icontains(body.current_thread.text, 'saved payment method'),
strings.icontains(body.current_thread.text, 'active without interruption')
)
// not from openai
and not sender.email.domain.root_domain == 'openai.com'
// negate highly trusted sender domains unless they fail DMARC authentication
and not (
sender.email.domain.root_domain in $high_trust_sender_root_domains
and coalesce(headers.auth_summary.dmarc.pass, false)
)
Detection logic
Scope: inbound message.
Detects messages impersonating OpenAI or ChatGPT with payment-related content such as subscription cancellation, payment failures, or billing updates from non-OpenAI domains.
- inbound message
any of:
- sender.display_name matches '\\bchat\\s*gpt\\b'
- sender.display_name matches '\\bopen\\s*a[li]\\b'
- subject.subject matches '\\bchat\\s*gpt\\b'
- subject.subject matches '\\bopen\\s*a[li]\\b'
- body.current_thread.text matches '(?:regarding\\s*your\\s*Open\\s*A[lI]\\s*account|Open\\s*A[lI]\\s*\\.\\s*All\\s*rights\\s*reserved|the\\s*open\\s*ai\\s*team)'
at least 2 of:
- body.current_thread.text matches 'update (?:payment method|your (?:billing|payment))'
- body.current_thread.text matches 'Subscription (?:has expired|(?:will be)?Cancel+ed)'
- body.current_thread.text matches 'issue with (?:the transaction|payment)'
- body.current_thread.text matches "you(?:'ll| will) lose access"
- body.current_thread.text matches 'payment (?:is not successful|error|was declined)'
- body.current_thread.text matches 'unable to (?:process|automatically charge)'
- body.current_thread.text contains 'bank or card issuer'
- body.current_thread.text contains 'issue with the transaction'
- body.current_thread.text contains 'could not be processed'
- body.current_thread.text contains 'settle the outstanding'
- body.current_thread.text contains 'account will be downgraded'
- body.current_thread.text contains 'Renew Subscription'
- body.current_thread.text contains 'balance is settled'
- body.current_thread.text contains 'will renew automatically'
- body.current_thread.text contains 'process your payment'
- body.current_thread.text contains 'keep your subscription active'
- body.current_thread.text contains 'avoid any interruption'
- body.current_thread.text contains 'charge attempt was unsuccessful'
- body.current_thread.text contains 'scheduled for cancellation'
- body.current_thread.text contains 'authorizing your payment'
- body.current_thread.text contains 'Declining Payment'
- body.current_thread.text contains 'Insufficient funds'
- body.current_thread.text contains 'Card has expired'
- body.current_thread.text contains 'exceeds your credit limit'
- body.current_thread.text contains 'plan features have been paused'
- body.current_thread.text contains 'saved payment method'
- body.current_thread.text contains 'active without interruption'
not:
- sender.email.domain.root_domain is 'openai.com'
not:
all of:
- sender.email.domain.root_domain in $high_trust_sender_root_domains
- coalesce(headers.auth_summary.dmarc.pass)
Inspects: body.current_thread.text, headers.auth_summary.dmarc.pass, sender.display_name, sender.email.domain.root_domain, subject.subject, type.inbound. Sensors: regex.icontains, strings.icontains. Reference lists: $high_trust_sender_root_domains.
Indicators matched (31)
| Field | Match | Value |
|---|---|---|
regex.icontains | regex | \bchat\s*gpt\b |
regex.icontains | regex | \bopen\s*a[li]\b |
regex.icontains | regex | (?:regarding\s*your\s*Open\s*A[lI]\s*account|Open\s*A[lI]\s*\.\s*All\s*rights\s*reserved|the\s*open\s*ai\s*team) |
regex.icontains | regex | update (?:payment method|your (?:billing|payment)) |
regex.icontains | regex | Subscription (?:has expired|(?:will be)?Cancel+ed) |
regex.icontains | regex | issue with (?:the transaction|payment) |
regex.icontains | regex | you(?:'ll| will) lose access |
regex.icontains | regex | payment (?:is not successful|error|was declined) |
regex.icontains | regex | unable to (?:process|automatically charge) |
strings.icontains | substring | bank or card issuer |
strings.icontains | substring | issue with the transaction |
strings.icontains | substring | could not be processed |
19 more
strings.icontains | substring | settle the outstanding |
strings.icontains | substring | account will be downgraded |
strings.icontains | substring | Renew Subscription |
strings.icontains | substring | balance is settled |
strings.icontains | substring | will renew automatically |
strings.icontains | substring | process your payment |
strings.icontains | substring | keep your subscription active |
strings.icontains | substring | avoid any interruption |
strings.icontains | substring | charge attempt was unsuccessful |
strings.icontains | substring | scheduled for cancellation |
strings.icontains | substring | authorizing your payment |
strings.icontains | substring | Declining Payment |
strings.icontains | substring | Insufficient funds |
strings.icontains | substring | Card has expired |
strings.icontains | substring | exceeds your credit limit |
strings.icontains | substring | plan features have been paused |
strings.icontains | substring | saved payment method |
strings.icontains | substring | active without interruption |
sender.email.domain.root_domain | equals | openai.com |