Исследователи из Кембриджского университета рассказали о том, как невидимые символы в JavaScript-коде могут подвергать риску атак ничего не подозревающих пользователей. Ранее SecurityLab писал о том, что атака Trojan Source позволяет внедрить уязвимости в исходный код. Как теперь стало известно, с ее помощью хакеры также могут скрыть вредоносный код от глаз пользователя и внедрить бэкдор. Новый метод работает с некоторыми из наиболее широко используемых языков программирования, и злоумышленники могут использовать его для атак на цепочку поставок. В ходе атаки Trojan Source используется двусмысленность, вносимая гомоглифами, и двунаправленный механизм Unicode (Bidi) — функция, используемая для размещения наборов символов как слева направо, так и справа налево. По словам экспертов, в JavaScript-код можно внедрить определенные символы для создания невидимых бэкдоров и уязвимостей. «Сценарий атаки реализует очень простую конечную точку HTTP для проверки работоспособности сети, которая выполняет ping -c 1 google.com, а также curl -s http[:]//example.com и уведомляет, успешно ли выполнены эти команды. Необязательный параметр HTTP timeout ограничивает время выполнения команды», — пояснили исследователи. Если передается HTTP-параметр с невидимым символом, он присваивается невидимой переменной. Точно так же, когда создается массив checkCommands, эта невидимая переменная включается в массив. В зависимости от способа разработки, не все текстовые редакторы могут выделять невидимые символы. Подсветка синтаксиса не является надежным подходом, поскольку невидимые символы могут вообще не отображаться, не говоря уже о раскрашивании текстовым редактором интегрированной среды разработки. «Атака требует, чтобы текстовый редактор/интегрированная среда разработки (и используемый шрифт) правильно отображали невидимые символы. По крайней мере, Notepad++ и VS Code отображают их правильно (в VS Code невидимый символ немного шире, чем символы ASCII)», — пояснили эксперты. Однако некоторые интегрированные среды разработки, в том числе JetBrains WebStorm и PhpStorm, явно выделяют эти невидимые символы, затрудняя выполнение атаки. Команда исследователей предлагает ограничить использование символов Bidi Unicode или вовсе запретить использование любых символов, отличных от ASCII, для защиты от подобных атак.