Применение невидимых unicode-символов для скрытия действий в JavaScript-коде
Автор
Сообщение
news_bot ®
Стаж: 6 лет 9 месяцев
Сообщений: 27286
Следом за методом атаки Trojan Source, основанном на применении Unicode-символов, меняющих порядок отображения двунаправленного текста, опубликована ещё одна техника внедрения скрытых действий, применимая для кода на языке JavaScript. Новый метод базируется на применении unicode-символа "ㅤ" (код 0x3164, "HANGUL FILLER"), который относится к разряду букв, но не имеет видимого содержимого. Unicode-категория, в которую входит данный символ, разрешена начиная со спецификации
ECMAScript 2015 для использования в именах переменных JavaScript, что даёт возможность создавать невидимые переменные или новые переменные, не отличимые от других переменных в популярных редакторах кода, таких как Notepad++ и VS Code.
В качестве примера приводится код для платформы Node.js, в котором при помощи переменной, состоящей из одного символа "ㅤ", скрыт бэкдор, позволяющий выполнить указанный злоумышленником код:
app.get('/network_health', async (req, res) => {
const { timeout,ㅤ} = req.query; // на деле указано "const { timeout,ㅤ \u3164}"
const checkCommands = [
'ping -c 1 google.com',
'curl -s http://example.com/',ㅤ // после запятой следует символ \u3164
];
На первый взгляд через внешний параметр передаётся только значение timeout, а массив с выполняемыми командами содержит безобидный фиксированный список. Но на деле после переменной timeout присваивается значение ещё одной невидимой переменной с кодом символа \u3164, которая также подставлена в массив исполняемых команд. Таким образом, при наличии подобной конструкции для активации бэкдора и выполнения своего кода атакующий может отправить запрос вида "https://host:8080/network_health?%E3%85%A4=команда".
В качестве ещё одного примера приводится символ "ǃ" (ALVEOLAR CLICK), который может использоваться для создания видимости указания восклицательного знака. Например, выражение "if(environmentǃ=ENV_PROD){" при выполнении в Node.js 14 всегда будет истинным, так как в нём осуществляется не проверка отличия, а присвоение переменной "environmentǃ" значения ENV_PROD. Среди вводящих в заблуждение unicode-символов, также отмечаются "/", "−", "+", "⩵", "❨", "⫽", "꓿" и "∗".
===========
Источник:
OpenNet.RU
===========
Похожие новости
- Главная ссылка к новости (https://certitude.consulting/b...)
- OpenNews: Атака Trojan Source для внедрения изменений в код, незаметных для разработчика
- OpenNews: Использование похожих Unicode-символов для обхода аутентификации
- OpenNews: Новый метод фишинга с использованием unicode-символов в домене
- OpenNews: Уязвимость, позволяющая отобразить иной домен в адресной строке браузера
- OpenNews: Возможность регистрации фишинговых доменов с похожими unicode-символами в имени
Похожие новости:
- Выпуск JavaScript-платформы Deno 1.16
- Атака Trojan Source для внедрения изменений в код, незаметных для разработчика
- Выпуск серверной JavaScript-платформы Node.js 17.0
- Выпуск Brython 3.10, реализации языка Python для web-браузеров
- Проект elk развивает компактный JavaScript-движок для микроконтроллеров
- [JavaScript, Карьера в IT-индустрии, VueJS, Интервью] От DBA и работы в стартапе до Vue.js Core team member и Staff Frontend Engineer в GitLab: история Натальи Теплухиной
- [Разработка веб-сайтов, JavaScript, Программирование] Redux Vs Vuex. Часть 1
- [JavaScript] @teqfw/core
- [JavaScript, WebGL] Знакомство фронтендера с WebGL: рефакторинг, анимация (часть 4)
- [JavaScript, WebGL] Знакомство фронтендера с WebGL: четкие линии (часть 3)
Теги для поиска: #_unicode, #_javascript
Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете голосовать в опросах
Вы не можете прикреплять файлы к сообщениям
Вы не можете скачивать файлы
Текущее время: 22-Ноя 08:53
Часовой пояс: UTC + 5
Автор | Сообщение |
---|---|
news_bot ®
Стаж: 6 лет 9 месяцев |
|
Следом за методом атаки Trojan Source, основанном на применении Unicode-символов, меняющих порядок отображения двунаправленного текста, опубликована ещё одна техника внедрения скрытых действий, применимая для кода на языке JavaScript. Новый метод базируется на применении unicode-символа "ㅤ" (код 0x3164, "HANGUL FILLER"), который относится к разряду букв, но не имеет видимого содержимого. Unicode-категория, в которую входит данный символ, разрешена начиная со спецификации ECMAScript 2015 для использования в именах переменных JavaScript, что даёт возможность создавать невидимые переменные или новые переменные, не отличимые от других переменных в популярных редакторах кода, таких как Notepad++ и VS Code. В качестве примера приводится код для платформы Node.js, в котором при помощи переменной, состоящей из одного символа "ㅤ", скрыт бэкдор, позволяющий выполнить указанный злоумышленником код: app.get('/network_health', async (req, res) => {
const { timeout,ㅤ} = req.query; // на деле указано "const { timeout,ㅤ \u3164}" const checkCommands = [ 'ping -c 1 google.com', 'curl -s http://example.com/',ㅤ // после запятой следует символ \u3164 ]; В качестве ещё одного примера приводится символ "ǃ" (ALVEOLAR CLICK), который может использоваться для создания видимости указания восклицательного знака. Например, выражение "if(environmentǃ=ENV_PROD){" при выполнении в Node.js 14 всегда будет истинным, так как в нём осуществляется не проверка отличия, а присвоение переменной "environmentǃ" значения ENV_PROD. Среди вводящих в заблуждение unicode-символов, также отмечаются "/", "−", "+", "⩵", "❨", "⫽", "꓿" и "∗". =========== Источник: OpenNet.RU =========== Похожие новости
|
|
Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете голосовать в опросах
Вы не можете прикреплять файлы к сообщениям
Вы не можете скачивать файлы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете голосовать в опросах
Вы не можете прикреплять файлы к сообщениям
Вы не можете скачивать файлы
Текущее время: 22-Ноя 08:53
Часовой пояс: UTC + 5