Detection rules › Sublime MQL

Link: Figma design deck with credential theft language

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

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).

CategoryValues
Attack typesCredential Phishing
Tactics and techniquesEvasion, Free file host, Social engineering

Event coverage

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.

  1. inbound message
  2. 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
  3. any of filter(body.links) where any holds:
    • any of ml.nlu_classifier(beta.ocr(ml.link_analysis(.).screenshot).text).intents where all hold:
      • .name is 'cred_theft'
      • .confidence in ('medium', 'high')
    • any of ml.nlu_classifier(beta.ocr(ml.link_analysis(.).screenshot).text).topics where all hold:
      • .name in ('E-Signature', 'Secure Message')
      • .confidence is not 'low'
  4. 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
  5. 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)

FieldMatchValue
body.links[].href_url.domain.root_domainmemberfigma.com
strings.istarts_withprefix/deck
strings.istarts_withprefix/design
ml.nlu_classifier(beta.ocr(ml.link_analysis(filter(body.links)[]).screenshot).text).intents[].nameequalscred_theft
ml.nlu_classifier(beta.ocr(ml.link_analysis(filter(body.links)[]).screenshot).text).intents[].confidencemembermedium
ml.nlu_classifier(beta.ocr(ml.link_analysis(filter(body.links)[]).screenshot).text).intents[].confidencememberhigh
ml.nlu_classifier(beta.ocr(ml.link_analysis(filter(body.links)[]).screenshot).text).topics[].namememberE-Signature
ml.nlu_classifier(beta.ocr(ml.link_analysis(filter(body.links)[]).screenshot).text).topics[].namememberSecure Message