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

Атака основывается на том, как компиляторы обрабатывают Unicode-идентификаторы, используемые для определения ориентации текста (слева направо или наоборот). Слабым местом является алгоритм Unicode Bidi, который позволяет совмещать написанные справа налево и слева направо слова. Например, благодаря этому алгоритму можно сочетать слова на арабском и английском языках. Он также позволяет написанный справа налево текст считывать слева направо и наоборот.

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

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

Исследователи сделали общедоступным данные о своей работе спустя несколько месяцев после её завершения. За это время были подготовлены несколько патчей для исправления проблемы для разработчиков, использующих язык Rust. Дополнительные рекомендации по решению этой проблемы для других языков программирования будут опубликованы позднее.

Источник: 3dnews.ru