Как стать автором
Обновить

Атака Trojan Source

Время на прочтение2 мин
Количество просмотров3.7K

Британские ученые из кембриджского университета Росс Андерсон и Николас Баучер, опубликовали документ, в котором подробно описали концепт атаки Trojan Source с индексом CVE-2021-42574. Она заключается в инъекции вредоносного кода в листинг программы с помощью полей комментариев. Сам эксплойт уже можно найти на GitHub.

Атака заключается в следующем: хакер использует двунаправленные символы Unicode в полях комментариев к листингу исходного кода. Эти символы Unicode обычно (BiDi - bidirectional) используют для перехода режима внутри текстовой строки, LTR (слева направо) к режиму RTL (справа налево). Например, для вставки текста с обратным способом чтения на арабском или иврите.

Используя спецсимволы встроенные в комментарии, можно изменить порядок строк кода и соответственно его логики, перемещая код в комментарии и наоборот. Выявить подобные трюки, как пишут исследователи, довольно таки сложно, поскольку спецсимволы перемещающие код будут использоваться на этапе компиляции и не видны человеку, тем самым открывая в ПО уязвимость.

Несколько способов переупорядочивания блоков исходного кода. Early Returns вызывает замыкание функции из-за оператора return который визуально кажется в строке комментария. Оператор Commenting-Out заставляет комментарий выглядеть как код, который не выполняется. Stretched Strings считывается языком как код, но фактически эффект такой же, как и комментирование и поэтому сравнение строк пройдет с ошибкой (комментарии за код не считаются).

Авторы в своем исследовании представили рабочие примеры на языках C, C ++, C #, JavaScript, Java, Rust, Go и Python, очевидно и в других ЯП подобная уязвимость тоже работает. Пока что данной проблемой озаботились создатели Rust, выпустив обновление.

Кроме компиляторов, уязвимости подвержены несколько операционных систем и IDE.

Похожая проблема, (CVE-2021-42694) заключается в использовании гомоглифов или символов которые кажутся почти идентичными. Вот пример кода:

Две одинаково выглядящие в глазах человека функции, но не для компилятора. Злоумышленник подобным образом, может внедрить собственный вредоносный код.

Авторы резюмируют, что компиляторы, интерпретаторы, IDE, должны выдавать ошибки или предупреждения при использовании двунаправленных управляющих символов и гомоглифов. Спецификации языка должны формально запрещать незавершённые двунаправленные управляющие символы Unicode в комментариях и строковых литералах.

Теги:
Хабы:
Всего голосов 8: ↑7 и ↓1+11
Комментарии7

Другие новости

Истории

Ближайшие события

27 августа – 7 октября
Премия digital-кейсов «Проксима»
МоскваОнлайн
11 сентября
Митап по BigData от Честного ЗНАКа
Санкт-ПетербургОнлайн
14 сентября
Конференция Practical ML Conf
МоскваОнлайн
19 сентября
CDI Conf 2024
Москва
20 – 22 сентября
BCI Hack Moscow
Москва
24 сентября
Конференция Fin.Bot 2024
МоскваОнлайн
25 сентября
Конференция Yandex Scale 2024
МоскваОнлайн
28 – 29 сентября
Конференция E-CODE
МоскваОнлайн
28 сентября – 5 октября
О! Хакатон
Онлайн
30 сентября – 1 октября
Конференция фронтенд-разработчиков FrontendConf 2024
МоскваОнлайн