
Generate malicious files using recently published bidi-attack (CVE-2021-42574)
// 更新:2021年11月5日
现在不仅可以编码,还可以解码文件。这意味着包含支持的bidi字符的文件现在可以转换为带有bidi占位符(LRO, ...)的模板文件。
利用最近发布的bidi攻击漏洞生成恶意文件,该漏洞在Unicode规范中被发现,并影响许多解释器/编译器。
引用自 cve.mitre.org:
Unicode规范(截至14.0版)中的双向算法存在一个问题。它允许通过控制序列在视觉上重新排列字符,这可用于制作与编译器和解释器所解析的令牌逻辑顺序呈现不同逻辑的源代码。攻击者可利用此漏洞为接受Unicode的编译器编码源代码,从而在人类审查者不可见的情况下引入有针对性的漏洞。
查看unicode.org关于双向算法的报告:
https://www.unicode.org/reports/tr9/tr9-42.html
查看剑桥大学的原始资料:
https://www.trojansource.codes/trojan-source.pdf
python3 codegen.py [-h] [-m MODE] [-i INFILE] [-o OUTFILE] [-u] [-a]
| arg | long arg | param | 描述 |
|---|---|---|---|
| -h | --help | 无 | 显示此帮助信息并退出 |
| -i | --infile | INFILE | 包含Unicode占位符的输入文件(模板) |
| -o | --outfile | OUTFILE | 存储最终代码的输出文件 |
| -u | --uctable | 无 | 支持的bidi相关字符 |
| -a | --about | 无 | 打印关于信息 |
| -m | --mode | MODE | 使用 e|ncode 将模板转换为恶意代码,使用 d|ecode 则相反 |
这将把包含bidi占位符的模板文件转换为包含实际bidi字符的文件。所有示例均来自引用的PDF。要运行这些示例,请使用所需参数执行 codegen.py:
python3 codegen.py -m encode -i infile.xyz -o outfile.xyz 然后运行/编译 outfile.xyz。
这将把包含bidi字符的文件转换为包含相应bidi占位符的文件。注意:输出文件无法运行,因为它只是一个模板。
python3 codegen.py -m decode -i infile.xyz -o outfile.xyz
要创建自己的模板,请在需要出现特殊字符的位置设置占位符(python3 codegen.py -u)。查看示例可初步了解模板的样式。
下表(取自剑桥原始报告)显示了此脚本当前支持的字符。
~ https://www.trojansource.codes/trojan-source.pdf