Trojan Source вносит в исходный код невидимые уязвимости

4 ноябрь, 2021 - 10:25

Trojan Source вносит в исходный код невидимые уязвимости

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

Новая статья двух исследователей из Кембриджского университета посвящена малоизученной проблеме генерирования уязвимого кода немодифицированными компиляторами путём манипуляции кодированием вполне безобидного исходного кода.
      
В ней авторы детально описали процедуру под названием Trojan Source (троянский исходник), который можно использовать для скрытного внедрения вредоносного ПО в исходный код.

Используя стандарты кодирования текста, такие как Unicode, исследователи могли логически кодировать вредоносные токены в порядке, отличном от того, в котором они отображаются. Наблюдатели-люди и компиляторы видят в подобном исходном коде разную логику.

Этот метод был продемонстрирован на нескольких языках программирования, включая C, C ++, JavaScript, Java, Rust, Go и Python. Исследователи отмечают, что их методология может быть применена практически к любому языку программирования, который работает с программными компиляторами, использующими Unicode.

Концептуальные эксплойты, предоставленные Кембриджским университетом, по своей сути не являются вредоносными. Однако в руках преступников они действительно могут представлять серьёзную угрозу

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

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

«Хорошая новость заключается в том, что эти атаки довольно сложны для реализации и их трудно держать в секрете, – сказал Джон Бамбенек (John Bambenek), главный специалист фирмы Netenrich по поиску угроз. – Однако компании, занимающиеся разработкой программного обеспечения, должны как можно скорее обновить свои компиляторы, потому что группы, занимающиеся компрометацией цепочек поставок как раз располагают и умением управлять этим потоком атак и желанием использовать такие методы».