Detection rules › Sublime MQL
Link: Figma design deck with credential theft language
A single link to a Figma design deck that contains credential theft language. The message comes from either a new sender, one with previously detected malicious activity, or a known sender who has not been in contact for over 30 days and has no history of benign messages.
Threat classification
Sublime's own taxonomy (not MITRE ATT&CK).
| Category | Values |
|---|---|
| Attack types | Credential Phishing |
| Tactics and techniques | Evasion, Free file host, Social engineering |
Event coverage
| Message attribute |
|---|
| body |
| body.links (collection) |
| type |
Rule body MQL
type.inbound
// only one link to Figma
and length(distinct(filter(body.links,
.href_url.domain.root_domain in ("figma.com")
and (
strings.istarts_with(.href_url.path, "/deck")
or (
strings.istarts_with(.href_url.path, "/design")
and .href_url.query_params is not null
)
)
),
.href_url.url
)
) == 1
and any(filter(body.links,
.href_url.domain.root_domain in ("figma.com")
and (
strings.istarts_with(.href_url.path, "/deck")
or (
strings.istarts_with(.href_url.path, "/design")
and .href_url.query_params is not null
)
)
),
any(ml.nlu_classifier(beta.ocr(ml.link_analysis(.).screenshot).text).intents,
.name == "cred_theft" and .confidence in ("medium", "high")
)
or any(ml.nlu_classifier(beta.ocr(ml.link_analysis(.).screenshot).text).topics,
.name in ("E-Signature", "Secure Message")
and .confidence != "low"
)
)
and (
(
profile.by_sender().prevalence in ("new", "outlier")
and not profile.by_sender().solicited
)
or profile.by_sender().any_messages_malicious_or_spam
or profile.by_sender().days_since.last_contact > 30
// individual sender profile
or profile.by_sender_email().days_since.first_contact < 3
)
and not profile.by_sender().any_messages_benign
Detection logic
Scope: inbound message.
A single link to a Figma design deck that contains credential theft language. The message comes from either a new sender, one with previously detected malicious activity, or a known sender who has not been in contact for over 30 days and has no history of benign messages.
- inbound message
- length(distinct(filter(body.links, .href_url.domain.root_domain in ('figma.com') and strings.istarts_with(.href_url.path, '/deck') or strings.istarts_with(.href_url.path, '/design') and .href_url.query_params is not null), .href_url.url)) is 1
any of
filter(body.links)where any holds:any of
ml.nlu_classifier(beta.ocr(ml.link_analysis(.).screenshot).text).intentswhere all hold:- .name is 'cred_theft'
- .confidence in ('medium', 'high')
any of
ml.nlu_classifier(beta.ocr(ml.link_analysis(.).screenshot).text).topicswhere all hold:- .name in ('E-Signature', 'Secure Message')
- .confidence is not 'low'
any of:
all of:
- profile.by_sender().prevalence in ('new', 'outlier')
not:
- profile.by_sender().solicited
- profile.by_sender().any_messages_malicious_or_spam
- profile.by_sender().days_since.last_contact > 30
- profile.by_sender_email().days_since.first_contact < 3
not:
- profile.by_sender().any_messages_benign
Inspects: body.links, body.links[].href_url.domain.root_domain, body.links[].href_url.path, body.links[].href_url.query_params, type.inbound. Sensors: beta.ocr, ml.link_analysis, ml.nlu_classifier, profile.by_sender, profile.by_sender_email, strings.istarts_with.
Indicators matched (8)
| Field | Match | Value |
|---|---|---|
body.links[].href_url.domain.root_domain | member | figma.com |
strings.istarts_with | prefix | /deck |
strings.istarts_with | prefix | /design |
ml.nlu_classifier(beta.ocr(ml.link_analysis(filter(body.links)[]).screenshot).text).intents[].name | equals | cred_theft |
ml.nlu_classifier(beta.ocr(ml.link_analysis(filter(body.links)[]).screenshot).text).intents[].confidence | member | medium |
ml.nlu_classifier(beta.ocr(ml.link_analysis(filter(body.links)[]).screenshot).text).intents[].confidence | member | high |
ml.nlu_classifier(beta.ocr(ml.link_analysis(filter(body.links)[]).screenshot).text).topics[].name | member | E-Signature |
ml.nlu_classifier(beta.ocr(ml.link_analysis(filter(body.links)[]).screenshot).text).topics[].name | member | Secure Message |