Skip to content

Commit 76423bf

Browse files
authored
Merge pull request #604 from xp4u1/feat/unicode
feat: filter rule for detection evasion using unicode
2 parents 0e3a8fc + 54115f5 commit 76423bf

File tree

2 files changed

+78
-0
lines changed

2 files changed

+78
-0
lines changed
Lines changed: 75 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,75 @@
1+
# Ignores string contents to reduce false positives!
2+
3+
rules:
4+
- id: unicode
5+
message:
6+
This package uses uncommon unicode characters in its code, it may try to
7+
avoid detection.
8+
metadata:
9+
description: Identify suspicious unicode characters
10+
languages:
11+
- python
12+
severity: WARNING
13+
patterns:
14+
# ignore comments
15+
- pattern-not-regex: \#(.*)$
16+
17+
# ignore strings
18+
- pattern-not-regex: (["'].*?["'])
19+
- pattern-not-regex: ("""(.|\n)*?""")
20+
- pattern-not-regex: ('''(.|\n)*?''')
21+
22+
- pattern-either:
23+
- pattern-regex: ([ªᵃₐⓐa𝐚𝑎𝒂𝒶𝓪𝔞𝕒𝖆𝖺𝗮𝘢𝙖𝚊])
24+
- pattern-regex: ([ᵇⓑb𝐛𝑏𝒃𝒷𝓫𝔟𝕓𝖇𝖻𝗯𝘣𝙗𝚋])
25+
- pattern-regex: ([ᶜⅽⓒc𝐜𝑐𝒄𝒸𝓬𝔠𝕔𝖈𝖼𝗰𝘤𝙘𝚌])
26+
- pattern-regex: ([ᵈⅆⅾⓓd𝐝𝑑𝒅𝒹𝓭𝔡𝕕𝖉𝖽𝗱𝘥𝙙𝚍])
27+
- pattern-regex: ([ᵉₑℯⅇⓔe𝐞𝑒𝒆𝓮𝔢𝕖𝖊𝖾𝗲𝘦𝙚𝚎])
28+
- pattern-regex: ([ᶠⓕf𝐟𝑓𝒇𝒻𝓯𝔣𝕗𝖋𝖿𝗳𝘧𝙛𝚏])
29+
- pattern-regex: ([ᵍℊⓖg𝐠𝑔𝒈𝓰𝔤𝕘𝖌𝗀𝗴𝘨𝙜𝚐])
30+
- pattern-regex: ([ʰₕℎⓗh𝐡𝒉𝒽𝓱𝔥𝕙𝖍𝗁𝗵𝘩𝙝𝚑])
31+
- pattern-regex: ([ᵢⁱℹⅈⅰⓘi𝐢𝑖𝒊𝒾𝓲𝔦𝕚𝖎𝗂𝗶𝘪𝙞𝚒])
32+
- pattern-regex: ([ʲⅉⓙⱼj𝐣𝑗𝒋𝒿𝓳𝔧𝕛𝖏𝗃𝗷𝘫𝙟𝚓])
33+
- pattern-regex: ([ᵏₖⓚk𝐤𝑘𝒌𝓀𝓴𝔨𝕜𝖐𝗄𝗸𝘬𝙠𝚔])
34+
- pattern-regex: ([ˡₗℓⅼⓛl𝐥𝑙𝒍𝓁𝓵𝔩𝕝𝖑𝗅𝗹𝘭𝙡𝚕])
35+
- pattern-regex: ([ᵐₘⅿⓜm𝐦𝑚𝒎𝓂𝓶𝔪𝕞𝖒𝗆𝗺𝘮𝙢𝚖])
36+
- pattern-regex: ([ⁿₙⓝn𝐧𝑛𝒏𝓃𝓷𝔫𝕟𝖓𝗇𝗻𝘯𝙣𝚗])
37+
- pattern-regex: ([ºᵒₒℴⓞo𝐨𝑜𝒐𝓸𝔬𝕠𝖔𝗈𝗼𝘰𝙤𝚘])
38+
- pattern-regex: ([ᵖₚⓟp𝐩𝑝𝒑𝓅𝓹𝔭𝕡𝖕𝗉𝗽𝘱𝙥𝚙])
39+
- pattern-regex: ([ⓠq𐞥𝐪𝑞𝒒𝓆𝓺𝔮𝕢𝖖𝗊𝗾𝘲𝙦𝚚])
40+
- pattern-regex: ([ʳᵣⓡr𝐫𝑟𝒓𝓇𝓻𝔯𝕣𝖗𝗋𝗿𝘳𝙧𝚛])
41+
- pattern-regex: ([ſˢₛⓢs𝐬𝑠𝒔𝓈𝓼𝔰𝕤𝖘𝗌𝘀𝘴𝙨𝚜])
42+
- pattern-regex: ([ᵗₜⓣt𝐭𝑡𝒕𝓉𝓽𝔱𝕥𝖙𝗍𝘁𝘵𝙩𝚝])
43+
- pattern-regex: ([ᵘᵤⓤu𝐮𝑢𝒖𝓊𝓾𝔲𝕦𝖚𝗎𝘂𝘶𝙪𝚞])
44+
- pattern-regex: ([ᵛᵥⅴⓥv𝐯𝑣𝒗𝓋𝓿𝔳𝕧𝖛𝗏𝘃𝘷𝙫𝚟])
45+
- pattern-regex: ([ʷⓦw𝐰𝑤𝒘𝓌𝔀𝔴𝕨𝖜𝗐𝘄𝘸𝙬𝚠])
46+
- pattern-regex: ([ˣₓⅹⓧx𝐱𝑥𝒙𝓍𝔁𝔵𝕩𝖝𝗑𝘅𝘹𝙭𝚡])
47+
- pattern-regex: ([ʸⓨy𝐲𝑦𝒚𝓎𝔂𝔶𝕪𝖞𝗒𝘆𝘺𝙮𝚢])
48+
- pattern-regex: ([ᶻⓩz𝐳𝑧𝒛𝓏𝔃𝔷𝕫𝖟𝗓𝘇𝘻𝙯𝚣])
49+
50+
- pattern-regex: ([ᴬⒶA𝐀𝐴𝑨𝒜𝓐𝔄𝔸𝕬𝖠𝗔𝘈𝘼𝙰🄰])
51+
- pattern-regex: ([ᴮℬⒷB𝐁𝐵𝑩𝓑𝔅𝔹𝕭𝖡𝗕𝘉𝘽𝙱🄱])
52+
- pattern-regex: ([ℂℭⅭⒸꟲC𝐂𝐶𝑪𝒞𝓒𝕮𝖢𝗖𝘊𝘾𝙲🄫🄲])
53+
- pattern-regex: ([ᴰⅅⅮⒹD𝐃𝐷𝑫𝒟𝓓𝔇𝔻𝕯𝖣𝗗𝘋𝘿𝙳🄳])
54+
- pattern-regex: ([ᴱℰⒺE𝐄𝐸𝑬𝓔𝔈𝔼𝕰𝖤𝗘𝘌𝙀𝙴🄴])
55+
- pattern-regex: ([ℱⒻꟳF𝐅𝐹𝑭𝓕𝔉𝔽𝕱𝖥𝗙𝘍𝙁𝙵🄵])
56+
- pattern-regex: ([ᴳⒼG𝐆𝐺𝑮𝒢𝓖𝔊𝔾𝕲𝖦𝗚𝘎𝙂𝙶🄶])
57+
- pattern-regex: ([ᴴℋℌℍⒽH𝐇𝐻𝑯𝓗𝕳𝖧𝗛𝘏𝙃𝙷🄷])
58+
- pattern-regex: ([ᴵℐℑⅠⒾI𝐈𝐼𝑰𝓘𝕀𝕴𝖨𝗜𝘐𝙄𝙸🄸])
59+
- pattern-regex: ([ᴶⒿJ𝐉𝐽𝑱𝒥𝓙𝔍𝕁𝕵𝖩𝗝𝘑𝙅𝙹🄹])
60+
- pattern-regex: ([ᴷKⓀK𝐊𝐾𝑲𝒦𝓚𝔎𝕂𝕶𝖪𝗞𝘒𝙆𝙺🄺])
61+
- pattern-regex: ([ᴸℒⅬⓁL𝐋𝐿𝑳𝓛𝔏𝕃𝕷𝖫𝗟𝘓𝙇𝙻🄻])
62+
- pattern-regex: ([ᴹℳⅯⓂM𝐌𝑀𝑴𝓜𝔐𝕄𝕸𝖬𝗠𝘔𝙈𝙼🄼])
63+
- pattern-regex: ([ᴺℕⓃN𝐍𝑁𝑵𝒩𝓝𝔑𝕹𝖭𝗡𝘕𝙉𝙽🄽])
64+
- pattern-regex: ([ᴼⓄO𝐎𝑂𝑶𝒪𝓞𝔒𝕆𝕺𝖮𝗢𝘖𝙊𝙾🄾])
65+
- pattern-regex: ([ᴾℙⓅP𝐏𝑃𝑷𝒫𝓟𝔓𝕻𝖯𝗣𝘗𝙋𝙿🄿])
66+
- pattern-regex: ([ℚⓆꟴQ𝐐𝑄𝑸𝒬𝓠𝔔𝕼𝖰𝗤𝘘𝙌𝚀🅀])
67+
- pattern-regex: ([ᴿℛℜℝⓇR𝐑𝑅𝑹𝓡𝕽𝖱𝗥𝘙𝙍𝚁🄬🅁])
68+
- pattern-regex: ([ⓈS𝐒𝑆𝑺𝒮𝓢𝔖𝕊𝕾𝖲𝗦𝘚𝙎𝚂🅂])
69+
- pattern-regex: ([ᵀⓉT𝐓𝑇𝑻𝒯𝓣𝔗𝕋𝕿𝖳𝗧𝘛𝙏𝚃🅃])
70+
- pattern-regex: ([ᵁⓊU𝐔𝑈𝑼𝒰𝓤𝔘𝕌𝖀𝖴𝗨𝘜𝙐𝚄🅄])
71+
- pattern-regex: ([ⅤⓋⱽV𝐕𝑉𝑽𝒱𝓥𝔙𝕍𝖁𝖵𝗩𝘝𝙑𝚅🅅])
72+
- pattern-regex: ([ᵂⓌW𝐖𝑊𝑾𝒲𝓦𝔚𝕎𝖂𝖶𝗪𝘞𝙒𝚆🅆])
73+
- pattern-regex: ([ⅩⓍX𝐗𝑋𝑿𝒳𝓧𝔛𝕏𝖃𝖷𝗫𝘟𝙓𝚇🅇])
74+
- pattern-regex: ([ⓎY𝐘𝑌𝒀𝒴𝓨𝔜𝕐𝖄𝖸𝗬𝘠𝙔𝚈🅈])
75+
- pattern-regex: ([ℤℨⓏZ𝐙𝑍𝒁𝒵𝓩𝖅𝖹𝗭𝘡𝙕𝚉🅉])
Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
def f():
2+
# ruleid: unicode
3+
𝚎𝚡𝚎𝚌("import 𝚘𝚜; 𝚙𝚛𝚒𝚗𝚝(𝚘𝚜.𝚞𝚗𝚊𝚖𝚎().𝚗𝚘𝚍𝚎𝚗𝚊𝚖𝚎)")

0 commit comments

Comments
 (0)