
Gere arquivos maliciosos usando o ataque homoglífico recentemente publicado (CVE-2021-42694)
Gere arquivos maliciosos usando a vulnerabilidade de ataque homoglifo recentemente publicada, que foi descoberta pelo menos em C, C++, C#, Go, Python, Rust, JS, ...
Citação de cve.mitre.org
Foi descoberto um problema nas definições de caracteres da Especificação Unicode até a versão 14.0. A especificação permite que um adversário produza identificadores de código-fonte, como nomes de funções, usando homoglifos que são visualmente idênticos a um identificador alvo. Os adversários podem aproveitar isso para injetar código por meio de definições de identificadores adversários em dependências de software upstream, enganosamente invocadas em software downstream.
Dados brutos para homoglifos (homoglyphs.txt) retirados de aqui e dados limpos para filtrar caracteres itálicos e dissimilares.
Veja a fonte original da Universidade de Cambridge:
https://www.trojansource.codes/trojan-source.pdf
python3 codegen.py [-h] [-i INFILE] [-o OUTFILE] [-r] [-a]
| arg | long arg | param | descrição |
|---|
| -h | --help | nenhum | mostra esta mensagem de ajuda e sai |
| -i | --infile | INFILE | Arquivo de entrada contendo placeholders de homoglifos |
| -o | --outfile | OUTFILE | Arquivo de saída para armazenar o código final |
| -r | --random | nenhum | Define a flag para escolher homoglifo aleatório; pega o primeiro se não estiver definido |
| -a | --about | nenhum | Imprime texto sobre |
Os exemplos foram criados por mim ou foram retirados do PDF referenciado. Para executar esses exemplos, execute codegen.py com os argumentos necessários:
python3 codegen.py -i infile.xyz -o outfile.xyz e execute/compile outfile.xyz.
Atualmente, apenas dígitos [0-9], bem como caracteres minúsculos e maiúsculos [a-zA-Z] são suportados. Para substituir um caractere suportado em seu modelo por um homoglifo (aleatório), basta envolver o caractere com cifrões $. Veja os exemplos para ter uma primeira impressão de como um modelo pode ser.