Невидимые символы в JavaScript-коде могут скрывать бэкдоры

Невидимые символы в JavaScript-коде могут скрывать бэкдоры

Атака, получившая название Trojan Source, позволяет скрыть вредоносный код от глаз пользователя.

Исследователи из Кембриджского университета рассказали о том, как невидимые символы в 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, для защиты от подобных атак.

Бэкап знаний создан успешно!

Храним важное в надежном месте

Синхронизируйтесь — подпишитесь