Skip to content

Commit e358b78

Browse files
[PR #3490] added rule: Brand impersonation: Carta
1 parent c084a35 commit e358b78

File tree

1 file changed

+88
-0
lines changed

1 file changed

+88
-0
lines changed
Lines changed: 88 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,88 @@
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

Comments
 (0)