
Gere arquivos maliciosos usando o ataque bidi publicado recentemente (CVE-2021-42574)
// Atualização: 05.11.2021
Agora é possível não apenas codificar, mas também decodificar arquivos. Isso significa que arquivos contendo caracteres bidi suportados podem ser convertidos em arquivos de modelo com placeholders bidi (LRO, ...).
Gere arquivos maliciosos usando a vulnerabilidade de ataque bidi publicada recentemente, que foi descoberta na Especificação Unicode e afeta muitos interpretadores / compiladores.
Citação de cve.mitre.org:
Um problema foi descoberto no Algoritmo Bidirecional da Especificação Unicode até a versão 14.0. Ele permite a reordenação visual de caracteres por meio de sequências de controle, que podem ser usadas para criar código-fonte que renderiza uma lógica diferente da ordem lógica dos tokens consumidos por compiladores e interpretadores. Adversários podem aproveitar isso para codificar código-fonte para compiladores que aceitam Unicode, de modo que vulnerabilidades direcionadas sejam introduzidas de forma invisível para revisores humanos.
Veja o relatório sobre o Algoritmo Bidirecional em unicode.org:
https://www.unicode.org/reports/tr9/tr9-42.html
Veja a fonte original da Universidade de Cambridge:
https://www.trojansource.codes/trojan-source.pdf
python3 codegen.py [-h] [-m MODE] [-i INFILE] [-o OUTFILE] [-u] [-a]
Isso converterá um arquivo de modelo contendo placeholders bidi em um arquivo com caracteres bidi reais. Todos os exemplos foram retirados do PDF referenciado. Para executar esses exemplos, execute codegen.py com os argumentos necessários:
python3 codegen.py -m encode -i infile.xyz -o outfile.xyz e execute/compile outfile.xyz.
Isso converterá um arquivo contendo caracteres bidi em um arquivo com os placeholders bidi correspondentes. OBSERVAÇÃO: A saída não pode ser executada, pois é apenas um modelo.
python3 codegen.py -m decode -i infile.xyz -o outfile.xyz
Para criar seus próprios modelos, defina placeholders (python3 codegen.py -u) onde você deseja que os caracteres especiais apareçam. Veja os exemplos para ter uma primeira impressão de como um modelo pode parecer.
A tabela a seguir (retirada do relatório original de Cambridge) mostra os caracteres atualmente suportados por este script.
~ https://www.trojansource.codes/trojan-source.pdf
| arg | long arg | param | descrição |
|---|
| -h | --help | none | mostra esta mensagem de ajuda e sai |
| -i | --infile | INFILE | Arquivo de entrada (modelo) contendo placeholders unicode |
| -o | --outfile | OUTFILE | Arquivo de saída para armazenar o código final |
| -u | --uctable | none | Caracteres suportados relacionados a bidi |
| -a | --about | none | Exibe texto sobre a ferramenta |
| -m | --mode | MODE | Use e|ncode para converter o modelo em código malicioso e d|ecode vice-versa |