
Genera archivos maliciosos usando el ataque bidi publicado recientemente (CVE-2021-42574)
// Actualización: 05.11.2021
Ahora es posible no solo codificar, sino también decodificar archivos. Esto significa que los archivos que contienen caracteres bidi compatibles ahora pueden convertirse en archivos de plantilla con marcadores de posición bidi (LRO, ...).
Genera archivos maliciosos utilizando la vulnerabilidad de ataque bidi publicada recientemente, que fue descubierta en la Especificación Unicode y afecta a muchos intérpretes / compiladores.
Cita de cve.mitre.org:
Se descubrió un problema en el Algoritmo Bidireccional de la Especificación Unicode hasta la versión 14.0. Permite el reordenamiento visual de caracteres mediante secuencias de control, lo que puede utilizarse para crear código fuente que muestre una lógica diferente al orden lógico de los tokens procesados por compiladores e intérpretes. Los adversarios pueden aprovechar esto para codificar código fuente para compiladores que aceptan Unicode, de modo que se introduzcan vulnerabilidades específicas de forma invisible para los revisores humanos.
Consulte el informe sobre el Algoritmo Bidireccional de unicode.org:
https://www.unicode.org/reports/tr9/tr9-42.html
Vea la fuente original de la Universidad de Camebridge:
https://www.trojansource.codes/trojan-source.pdf
python3 codegen.py [-h] [-m MODE] [-i INFILE] [-o OUTFILE] [-u] [-a]
Esto convertirá un archivo de plantilla que contiene marcadores de posición bidi en un archivo con caracteres bidi reales. Todos los ejemplos están tomados del PDF de referencia. Para ejecutar estos ejemplos, ejecuta codegen.py con los argumentos requeridos:
python3 codegen.py -m encode -i infile.xyz -o outfile.xyz y ejecuta/compila outfile.xyz.
Esto convertirá un archivo que contiene caracteres bidi en un archivo con los marcadores de posición bidi correspondientes. NOTA: La salida no se puede ejecutar, ya que es solo una plantilla.
python3 codegen.py -m decode -i infile.xyz -o outfile.xyz
Para crear tus propias plantillas, establece los marcadores de posición (python3 codegen.py -u) donde quieras que aparezcan los caracteres especiales. Revisa los ejemplos para hacerte una primera idea de cómo podría verse una plantilla.
La siguiente tabla (tomada del informe original de Camebridge) muestra los caracteres que actualmente son compatibles con este script.
~ https://www.trojansource.codes/trojan-source.pdf
| arg | long arg | param | description |
|---|
| -h | --help | none | muestra este mensaje de ayuda y sale |
| -i | --infile | INFILE | Archivo de entrada (plantilla) que contiene marcadores de posición unicode |
| -o | --outfile | OUTFILE | Archivo de salida para almacenar el código final |
| -u | --uctable | none | Caracteres relacionados con bidi compatibles |
| -a | --about | none | Imprime el texto de información |
| -m | --mode | MODE | Usa e|ncode para convertir la plantilla en código malicioso y d|ecode viceversa |