Новая троянская техника позволяет прятать уязвимости в исходном коде
02/11/21
Специалисты Кембриджского университета Николас Боучер (Nicholas Boucher) и Росс Андерсон (Ross Anderson) обнаружили новый класс уязвимостей, позволяющих злоумышленникам внедрять визуально обманчивое вредоносное ПО способом, который является семантически допустимым, но изменяет определенную исходным кодом логику, что делает код уязвимым к самым разным киберугрозам, в том числе связанными с цепочками поставок.
Описанная специалистами техника под названием "Атака Trojan Source" базируется на использовании "неуловимых различий в стандартах кодирования символов наподобие Юникода для создания исходного кода, чьи токены логически закодированы не в том порядке, в каком они отображаются, что приводит к уязвимостям, которые рецензирующие код люди не могут увидеть".
Уязвимости, получившие идентификаторы CVE-2021-42574 и CVE-2021-42694, затрагивают компиляторы всех популярных языков программирования, такие как C, C++, C#, JavaScript, Java, Rust, Go и Python.
Проблема связана с двунаправленным алгоритмом Юникода (алгоритмом Bidi), обеспечивающим поддержку письма как слева направо (например, русский язык), так и справа налево (например, иврит). Алгоритм Bidia также поддерживает двунаправленное переопределение, позволяющее писать слова слева направо в предложении на языке с письмом справа налево и наоборот. Иначе говоря, алгоритм позволяет тексту, написанному слева направо, восприниматься как написанный справа налево.
Предполагается, что выходные данные компилятора будут корректно реализовывать исходный код, однако несоответствия, возникающие при вставке символов переопределения Юникода Bidi в комментарии и строки, позволяют создавать синтаксически допустимый исходный код, в котором порядок отображения символов представляет логику, которая расходится с реальной логикой.
"То есть, мы анаграммируем программу A в программу Б. Если изменения в логике достаточно неуловимые для того, чтобы обходить обнаружение в последующих тестированиях, злоумышленник может создать целевые уязвимости и не быть обнаруженным", - пояснили исследователи.
Подобное состязательное программирование может оказать серьезное влияние на цепочку поставок, предупреждают исследователи, когда внедренные в ПО с открытым исходным кодом уязвимости передаются конечным продуктам, затрагивая всех пользователей программного обеспечения. Хуже того, "Атака Trojan Source" может стать более серьезной, если злоумышленник использует омоглифы для переопределения ранее существовавших функций в исходном пакете и вызова их из программы-жертвы.