
Generate malicious files using recently published bidi-attack (CVE-2021-42574)
// Обновление: 05.11.2021
Теперь можно не только кодировать, но и декодировать файлы. Это означает, что теперь файлы, содержащие поддерживаемые bidi-символы, могут быть преобразованы в шаблонные файлы с bidi-заполнителями (LRO, ...).
Создавайте вредоносные файлы, используя недавно опубликованную уязвимость bidi-атаки, обнаруженную в спецификации Unicode и затрагивающую многие интерпретаторы/компиляторы.
Цитата из cve.mitre.org:
Проблема была обнаружена в двунаправленном алгоритме (Bidirectional Algorithm) в спецификации 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]
Это преобразует шаблонный файл, содержащий 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
| arg | long arg | param | description |
|---|
| -h | --help | none | показать это справочное сообщение и выйти |
| -i | --infile | INFILE | Входной файл (шаблон), содержащий unicode-заполнители |
| -o | --outfile | OUTFILE | Выходной файл для сохранения итогового кода |
| -u | --uctable | none | Поддерживаемые bidi-символы |
| -a | --about | none | Вывести текст об утилите |
| -m | --mode | MODE | Используйте e|ncode для преобразования шаблона в вредоносный код и d|ecode наоборот |