
Générez des fichiers malveillants à l'aide de l'attaque bidi récemment publiée (CVE-2021-42574)
// Mise à jour : 05.11.2021
Il est désormais possible non seulement d'encoder, mais aussi de décoder les fichiers. Cela signifie que les fichiers contenant des caractères bidi pris en charge peuvent désormais être traduits en fichiers modèles avec des espaces réservés bidi (LRO, ...).
Générez des fichiers malveillants en utilisant la vulnérabilité d'attaque bidi récemment publiée, qui a été découverte dans la spécification Unicode et affecte de nombreux interpréteurs / compilateurs.
Citation de cve.mitre.org :
Un problème a été découvert dans l'algorithme bidirectionnel de la spécification Unicode jusqu'à la version 14.0. Il permet le réordonnancement visuel des caractères via des séquences de contrôle, qui peuvent être utilisées pour créer du code source qui affiche une logique différente de l'ordre logique des jetons ingérés par les compilateurs et les interpréteurs. Les adversaires peuvent exploiter cela pour encoder du code source destiné à des compilateurs acceptant Unicode, de sorte que des vulnérabilités ciblées soient introduites de manière invisible pour les relecteurs humains.
Voir le rapport sur l'algorithme bidirectionnel d'unicode.org :
https://www.unicode.org/reports/tr9/tr9-42.html
Voir la source originale de l'université de Camebridge :
https://www.trojansource.codes/trojan-source.pdf
python3 codegen.py [-h] [-m MODE] [-i INFILE] [-o OUTFILE] [-u] [-a]
Cela traduira un fichier modèle contenant des espaces réservés bidi en un fichier avec de véritables caractères bidi. Tous les exemples sont tirés du PDF référencé. Pour exécuter ces exemples, lancez codegen.py avec les arguments requis :
python3 codegen.py -m encode -i infile.xyz -o outfile.xyz et exécutez/compilez outfile.xyz.
Cela traduira un fichier contenant des caractères bidi en un fichier avec les espaces réservés bidi correspondants. REMARQUE : la sortie ne peut pas être exécutée, car il s'agit uniquement d'un modèle.
python3 codegen.py -m decode -i infile.xyz -o outfile.xyz
Pour créer vos propres modèles, définissez des espaces réservés (python3 codegen.py -u) là où vous souhaitez que les caractères spéciaux apparaissent. Consultez les exemples pour avoir une première idée de ce à quoi un modèle pourrait ressembler.
Le tableau suivant (tiré du rapport original de Camebridge) montre les caractères actuellement pris en charge par ce script.
~ https://www.trojansource.codes/trojan-source.pdf
| argument | argument long | paramètre | description |
|---|
| -h | --help | aucun | afficher ce message d'aide et quitter |
| -i | --infile | INFILE | Fichier d'entrée (modèle) contenant des espaces réservés unicode |
| -o | --outfile | OUTFILE | Fichier de sortie pour stocker le code final |
| -u | --uctable | aucun | Caractères liés au bidi pris en charge |
| -a | --about | aucun | Afficher le texte d'information |
| -m | --mode | MODE | Utiliser e|ncode pour convertir le modèle en code malveillant et d|ecode pour l'inverse |