Атака Trojan Source опасна для компиляторов большинства языков программирования

Ученые из Кембриджского университета, Росс Андерсон и Николас Баучер, опубликовали информацию о концепте атаки Trojan Source (CVE-2021-42574), которую можно использовать для внедрения вредоносного кода в легитимные приложения через поля комментариев. PoC-эксплоит уже доступен на GitHub.

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

Исследователи обнаружили, что у большинства компиляторов и редакторов кода и нет протоколов для обработки символов BiDi или сигнализации об их присутствии в комментариях к исходникам.

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

«Мы убедились, что эта атака работает против C, C ++, C #, JavaScript, Java, Rust, Go и Python, и подозреваем, что она будет работать против большинства современных языков», — пишут исследователи.

Также сообщается, что помимо компиляторов проблеме подвержены несколько редакторов кода и хостиновых сервисов, перечисленные в таблице ниже.

Кроме того, по словам экспертов, компиляторы исходного кода уязвимы перед еще одной проблемой (CVE-2021-42694), связанной с омоглифами. Во время таких атак классические латинские буквы заменяются похожими символами из других алфавитов. Исследователи пишут, что вторую атаку можно использовать для создания двух разных функций, которые будут выглядеть одинаково в глазах человека, но на самом деле будут отличаться. Андерсон и Баучер заявляют, что таким способом злоумышленник может скрытно добавить вредоносный код в проект.

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

Источник 📢