Большинство компиляторов компьютерного кода подвержены риску атак "троянских источников", при которых злоумышленники могут внедрить целевые уязвимости в любое программное обеспечение, не будучи обнаруженными, заявили исследователи из Кембриджского университета.
В документе «Троянский источник: невидимые уязвимости» подробно описано, как можно использовать слабые места в стандартах кодирования текста, таких как Unicode, «для создания исходного кода, токены которого логически закодированы в порядке, отличном от того, в котором они отображаются». Это приводит к тому, что во время инспекции кода очень сложно обнаружить уязвимости, так как визуализированный исходный код выглядит вполне приемлемым.
В частности, слабость наблюдалась в двунаправленном алгоритме Unicode (Bidi), который обрабатывает отображение текста, включающего смешанные скрипты с разным порядком отображения, например арабский, который читается справа налево, и английский (слева направо). В настоящее время Unicode определяет более 143 000 символов в 154 различных языковых сценариях.
Исследователи отметили, что в некоторых случаях Bidi переопределяет управляющие символы, позволяя переключать порядок отображения групп символов.
Большинство языков программирования позволяют помещать эти переопределения Bidi в комментарии и строки, которые разработчики в основном игнорируют. Это позволяет вставлять целевые уязвимости в исходный код без обнаружения.
Авторы Николас Баучер и Росс Андерсон объяснили: «Таким образом, помещая символы переопределения Bidi исключительно в комментарии и строки, мы можем переправить их в исходный код способом, который приемлем для большинства компиляторов. Наше ключевое понимание состоит в том, что мы можем переупорядочить символы исходного кода таким образом, чтобы результирующий порядок отображения также представлял синтаксически действительный исходный код».
«Объединив все это вместе, мы приходим к новой атаке цепочки поставок на исходный код. Внедряя символы переопределения Unicode Bidi в комментарии и строки, злоумышленник может создать синтаксически корректный исходный код на большинстве современных языков, для которых порядок отображения символов представляет собой логику, отличающуюся от реальной логики. Фактически, мы преобразовываем программу A в программу B».
Исследователи добавили, что Bidi переопределяет символы с помощью функций копирования и вставки в большинстве современных браузеров, редакторов и операционных систем. Следовательно, «любой разработчик, копирующий код из ненадежного источника в защищенную базу кода, может непреднамеренно ввести невидимую уязвимость».
Хотя в настоящее время нет доказательств того, что злоумышленники использовали эти типы атак, авторы предупредили о необходимости новых мер безопасности для противодействия этой опасности. Они заявили: «Поскольку мощные атаки на цепочку поставок могут быть легко запущены с использованием этих методов, для организаций, которые участвуют в цепочке поставок программного обеспечения, важно реализовать средства защиты».
Нажимая на кнопку, я даю Согласие на обработку персональных данных в соответствии с Политикой обработки.