1+ name : " Brand impersonation: Carta"
2+ description : " Detects messages impersonating Carta, a cap table management platform, by analyzing sender display names, subject lines containing equity-related terms, and body content for Carta-specific language. Excludes legitimate Carta domains with valid DMARC authentication and benign newsletters."
3+ type : " rule"
4+ severity : " high"
5+ source : |
6+ type.inbound
7+ and (
8+ strings.ilike(strings.replace_confusables(sender.display_name), "Carta")
9+ or strings.ilike(sender.display_name, "*via Carta*")
10+ // or any(ml.logo_detect(file.message_screenshot()).brands,
11+ // .name == "Carta"
12+ // )
13+ or (
14+ (
15+ any([subject.subject, sender.display_name],
16+ strings.ilike(.,
17+ "*Investor Relations*",
18+ "*Capital Contribution*",
19+ "*Option Grant*"
20+ )
21+ )
22+ or (
23+ regex.icontains(subject.subject,
24+ 'newly (created|vested|issued|provided).*(option|grant|equit(y|ies))'
25+ )
26+ )
27+ )
28+ and (
29+ strings.icontains(body.current_thread.text, "carta")
30+ // terms present in Carta email footers
31+ or strings.icontains(body.current_thread.text, "Equity Education Center")
32+ or strings.icontains(body.current_thread.text, "Visit our Knowledge Base")
33+ or strings.icontains(body.current_thread.text, "eShares")
34+ or any(file.explode(file.message_screenshot()),
35+ strings.icontains(.scan.ocr.raw, "carta")
36+ // terms present in Carta email footers
37+ or strings.icontains(.scan.ocr.raw, "Equity Education Center")
38+ or strings.icontains(.scan.ocr.raw, "Visit our Knowledge Base")
39+ or strings.icontains(.scan.ocr.raw, "eShares")
40+ )
41+ )
42+ )
43+ )
44+ and not (
45+ (
46+ sender.email.domain.root_domain in~ (
47+ "carta.com",
48+ "connectedcommunity.org" // Carta Community Forum
49+ )
50+ and headers.auth_summary.dmarc.pass
51+ )
52+ // negate benign newsletters
53+ or (
54+ any(ml.nlu_classifier(body.current_thread.text).topics,
55+ .name == "Newsletters and Digests" and .confidence == "high"
56+ )
57+ and any(ml.nlu_classifier(body.current_thread.text).intents,
58+ .name == "benign"
59+ )
60+ )
61+ // negate spanish language messages
62+ or ml.nlu_classifier(body.current_thread.text).language in~ ("spanish")
63+ )
64+
65+ // negate highly trusted sender domains unless they fail DMARC authentication
66+ and (
67+ (
68+ sender.email.domain.root_domain in $high_trust_sender_root_domains
69+ and not headers.auth_summary.dmarc.pass
70+ )
71+ or sender.email.domain.root_domain not in $high_trust_sender_root_domains
72+ )
73+
74+ attack_types :
75+ - " Credential Phishing"
76+ tactics_and_techniques :
77+ - " Impersonation: Brand"
78+ - " Social engineering"
79+ detection_methods :
80+ - " Content analysis"
81+ - " Natural Language Understanding"
82+ - " Header analysis"
83+ - " Sender analysis"
84+ - " Optical Character Recognition"
85+ id : " 42223709-8832-56d5-87ea-149d3bf5f7b9"
86+ og_id : " a19f890b-2155-50f3-92f8-af0730f9f6ee"
87+ testing_pr : 3490
88+ testing_sha : 002d972bc18ba842ce1d4b0ffcc4fa597724a727
0 commit comments