Security Week 44: Trojan Source, или как скрыть вредоносный код в исходниках

Сегодня, 1 ноября, исследователи из Кембриджского университета в Великобритании опубликовали работу, в которой описали уязвимость в большинстве современных компиляторов. Правильнее было бы назвать разработку авторов атакой: ее суть заключается в том, что компилятор не обрабатывает специальные Unicode-идентификаторы, сообщающие, как именно ориентировать текст — для письма слева направо или справа налево. При отображении исходного кода эти идентификаторы обрабатываются. Вот показательный пример:



Здесь перед закрытием комментария вставляется символ RLI (U+2067), который требует ориентировать последующие символы с ориентацией справа налево. В результате для того, кто будет просматривать исходный код, команда return окажется внутри комментария, хотя на самом деле она находится за его пределами и будет выполнена. То есть появляется возможность «протащить» потенциально уязвимый или вовсе вредоносный код, который не будет замечен при ручной проверке.
Читать дальше →