Получи случайную криптовалюту за регистрацию!

Ученые из Кембриджского университета в Соединенном Королевстве | DevSecOps Wine

Ученые из Кембриджского университета в Соединенном Королевстве раскрыли обнаруженный еще 25 июля вектор атаки Trojan Source, позволяющий внедрять уязвимости в исходный код программного обеспечения таким образом, чтобы рецензенты не могли их обнаружить, что создает угрозу популярному ПО и цепочкам поставок.

Trojan Source использует простой прием, который не требует модификации компилятора или прочих ухищрений, затрагивая C, C ++, C #, JavaScript, Java, Rust, Go и Python. Вся фишка состоит в использовании управляющих символов Unicode для изменения порядка токенов в исходном коде на уровне кодирования.

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

Реализация Trojan Source происходит по двум сценариям: CVE-2021-42574 (или двунаправленная атака) и CVE-2021-42694 (гомоглифическая атака).

В первом случае применяются элементы управления Unicode для двунаправленного текста, чтобы определять направление, в котором отображается контент. К примеру, LRI и RLI. Двунаправленные (Bidi) элементы управления LRI и RLI являются невидимыми символами, и они не единственные. Вводя эти инструкции, компилятор может скомпилировать код, полностью отличный от того, что видит человек.

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

Второй вариант атаки основывается на применении гомоглифов, то есть разных символов, которые хоть и имеют одинаковое визуальное представление, но реализуют разный функционал. Человеческий глаз будет видеть обе функции идентичными, в то время как компилятор различает латинскую «H» и кириллическую «H» и обрабатывает код как имеющий две разные функции, поэтому результат разным.

Оказывается также, что символы Bidi сохраняются при копировании/вставке в большинстве браузеров, редакторов и операционных систем. Trojan Source работает практически во редакторах кода и веб-репозиториях (оцените сами ниже в таблице)

За свои изыскания научные деятели получили в среднем 2 246 долларов по bugbounty. На GitHub они предоставили PoC, которые демонстрируют, насколько серьезной угрозой может быть атака: тем более, что Trojan Source затрагивает почти все компьютерные языки, а патчи еще толком не выпущены, оставляя уязвимыми почти два десятка поставщиков программного обеспечения.