Skip to content

Commit 9b462ff

Browse files
[PR #3463] added rule: Spam: Website errors solicitation
1 parent 393ec03 commit 9b462ff

File tree

1 file changed

+71
-0
lines changed

1 file changed

+71
-0
lines changed
Lines changed: 71 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,71 @@
1+
name: "Spam: Website errors solicitation"
2+
description: "This rule detects messages claiming to have identified errors on a website. The messages typically offer to send pricing or information upon request."
3+
type: "rule"
4+
severity: "low"
5+
source: |
6+
type.inbound
7+
and (
8+
sender.email.email not in $recipient_emails
9+
or not profile.by_sender().solicited
10+
)
11+
and 1 of (
12+
// Single thread message groups
13+
(
14+
length(attachments) == 0
15+
and length(body.links) == 0
16+
and length(body.previous_threads) == 0
17+
and 20 < length(body.current_thread.text) < 500
18+
and regex.icontains(body.current_thread.text, "screenshot|error list|plan")
19+
and regex.icontains(body.current_thread.text, ".*(hi|hello|hey)")
20+
and regex.icontains(body.current_thread.text, ".*(error|report|issues)")
21+
and regex.icontains(body.current_thread.text, ".*(site|website)")
22+
and regex.icontains(subject.subject,
23+
".*(proposal|cost|report|error|audit|screenshot)"
24+
)
25+
),
26+
// Single thread message groups but with 1 unsubscribe link or link is recipient
27+
(
28+
length(attachments) == 0
29+
and length(body.links) == 1
30+
and (
31+
regex.icontains(body.html.raw, "mailto:*[++unsubscribe@]")
32+
or any(body.links, .href_url.domain.root_domain in~ $org_domains)
33+
)
34+
and length(body.previous_threads) == 0
35+
and 20 < length(body.current_thread.text) < 500
36+
and regex.icontains(body.current_thread.text, "screenshot|error list|plan")
37+
and regex.icontains(body.current_thread.text, ".*(hi|hello|hey)")
38+
and regex.icontains(body.current_thread.text, ".*(error|report|issues)")
39+
and regex.icontains(body.current_thread.text, ".*(site|website)")
40+
and regex.icontains(subject.subject,
41+
".*(proposal|cost|report|error|audit|screenshot)"
42+
)
43+
),
44+
// Multiple thread message groups
45+
(
46+
length(attachments) == 0
47+
and length(body.links) == 0
48+
and length(body.previous_threads) < 5
49+
and regex.icontains(subject.subject, ".*(proposal|cost|report|error|audit)")
50+
and any(body.previous_threads,
51+
length(.text) < 400
52+
and regex.icontains(.text, '.*(hey|hi|hello)')
53+
and regex.icontains(.text, '.*(\berror(?:\s+list)?\b|screenshot|report|plan)')
54+
and strings.count(.text, "?") >= 3
55+
and ml.nlu_classifier(.text).language == "english"
56+
)
57+
)
58+
)
59+
60+
tags:
61+
- "Attack surface reduction"
62+
attack_types:
63+
- "Spam"
64+
detection_methods:
65+
- "Content analysis"
66+
- "Sender analysis"
67+
- "Natural Language Understanding"
68+
id: "c2e6061d-ac16-508e-8014-c50e8080ae4b"
69+
og_id: "122ea794-f619-5f29-acb2-83261d8f81fc"
70+
testing_pr: 3463
71+
testing_sha: 287facbb7b331548169f10426a19f23a8c0bcdd0

0 commit comments

Comments
 (0)