@@ -16,8 +16,12 @@ source: |
1616 // the display name matches a name on the orgs vip list
1717 any($org_vips,
1818 .display_name =~ sender.display_name
19- or strings.concat(.first_name, " ", .last_name) == sender.display_name
20- or strings.concat(.last_name, ", ", .first_name) == sender.display_name
19+ or strings.concat(.last_name, ", ", .first_name) =~ sender.display_name
20+ or any(regex.extract(.display_name,
21+ '\A(?P<name>.+?)\s*[\((][^))]*[))]\s*\z'
22+ ),
23+ .named_groups["name"] =~ sender.display_name
24+ )
2125 )
2226 // or the display name starts with the name on the orgs vip list
2327 or (
@@ -26,16 +30,6 @@ source: |
2630 strings.istarts_with(sender.display_name, .display_name)
2731 and length(sender.display_name) > length(.display_name)
2832 )
29- or (
30- strings.istarts_with(sender.display_name,
31- strings.concat(.first_name, " ", .last_name)
32- )
33- and length(sender.display_name) > length(strings.concat(.first_name,
34- " ",
35- .last_name
36- )
37- )
38- )
3933 or (
4034 strings.istarts_with(sender.display_name,
4135 strings.concat(.last_name, ", ", .first_name)
@@ -46,6 +40,12 @@ source: |
4640 )
4741 )
4842 )
43+ or any(regex.extract(.display_name,
44+ '\A(?P<name>.+?)\s*[\((][^))]*[))]\s*\z'
45+ ),
46+ strings.istarts_with(sender.display_name, .named_groups["name"])
47+ and length(sender.display_name) > length(.named_groups["name"])
48+ )
4949 )
5050 // and we have confidence it's BEC
5151 and any(ml.nlu_classifier(body.current_thread.text).intents,
@@ -119,4 +119,4 @@ detection_methods:
119119id : " 83f40c96-2ae9-501e-88ca-20a711a01b89"
120120og_id : " e42c84b7-9d50-5870-9a5d-311670a14bc1"
121121testing_pr : 4513
122- testing_sha : 90a3176084fd25d367a7582d78b2cd7bb9c4b8b5
122+ testing_sha : 8edfcb14502fda5aa8241629f8b4a08bbe1eefc7
0 commit comments