Большинство компиляторов компьютерного кода уязвимы для новых атак

03.11.2021
Большинство компиляторов компьютерного кода уязвимы для новых атак

Большинство компиляторов компьютерного кода подвержены риску атак "троянских источников", при которых злоумышленники могут внедрить целевые уязвимости в любое программное обеспечение, не будучи обнаруженными, заявили исследователи из Кембриджского университета.

В документе «Троянский источник: невидимые уязвимости» подробно описано, как можно использовать слабые места в стандартах кодирования текста, таких как Unicode, «для создания исходного кода, токены которого логически закодированы в порядке, отличном от того, в котором они отображаются». Это приводит к тому, что во время инспекции кода очень сложно обнаружить уязвимости, так как визуализированный исходный код выглядит вполне приемлемым.

В частности, слабость наблюдалась в двунаправленном алгоритме Unicode (Bidi), который обрабатывает отображение текста, включающего смешанные скрипты с разным порядком отображения, например арабский, который читается справа налево, и английский (слева направо). В настоящее время Unicode определяет более 143 000 символов в 154 различных языковых сценариях.

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

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

Авторы Николас Баучер и Росс Андерсон объяснили: «Таким образом, помещая символы переопределения Bidi исключительно в комментарии и строки, мы можем переправить их в исходный код способом, который приемлем для большинства компиляторов. Наше ключевое понимание состоит в том, что мы можем переупорядочить символы исходного кода таким образом, чтобы результирующий порядок отображения также представлял синтаксически действительный исходный код».

«Объединив все это вместе, мы приходим к новой атаке цепочки поставок на исходный код. Внедряя символы переопределения Unicode Bidi в комментарии и строки, злоумышленник может создать синтаксически корректный исходный код на большинстве современных языков, для которых порядок отображения символов представляет собой логику, отличающуюся от реальной логики. Фактически, мы преобразовываем программу A в программу B».

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

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


Популярные материалы