![]() |
Следом за методом атаки Trojan Source, основанном на применении Unicode-символов, меняющих порядок отображения двунаправленного текста, опубликована ещё одна техника внедрения скрытых действий, применимая для кода на языке JavaScript. Новый метод базируется на применении unicode-символа "ㅤ" (код 0x3164, "HANGUL FILLER"), который относится к разряду букв, но не имеет видимого содержимого. Unicode-категория, в которую входит данный символ, разрешена начиная со спецификации ECMAScript 2015 для использования в именах переменных JavaScript, что даёт возможность создавать невидимые переменные или новые переменные, не отличимые от других переменных в популярных редакторах кода, таких как Notepad++ и VS Code.
В качестве примера приводится код для платформы Node.js, в котором при помощи переменной, состоящей из одного символа "ㅤ", скрыт бэкдор, позволяющий выполнить указанный злоумышленником код: Код:
Code:В качестве ещё одного примера приводится символ "ǃ" (ALVEOLAR CLICK), который может использоваться для создания видимости указания восклицательного знака. Например, выражение "if(environmentǃ=ENV_PROD){" при выполнении в Node.js 14 всегда будет истинным, так как в нём осуществляется не проверка отличия, а присвоение переменной "environmentǃ" значения ENV_PROD. Среди вводящих в заблуждение unicode-символов, также отмечаются "/", "−", "+", "⩵", "❨", "⫽", "꓿" и "∗". |
| Время: 11:05 |