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

Nakon metode napada Trojan Source koja se temelji na korištenju Unicode znakova koji mijenjaju redoslijed prikaza dvosmjernog teksta, objavljena je još jedna tehnika za uvođenje skrivenih radnji, primjenjiva na JavaScript kod. Nova metoda temelji se na upotrebi unicode znaka "ㅤ" (kod 0x3164, "HANGUL FILLER"), koji je slovo, ali nema vidljiv sadržaj. Kategorija Unicode kojoj ovaj znak pripada 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 je dan kod za Node.js platformu, u kojem je pomoću varijable koja se sastoji od jednog znaka "ㅤ" skriven backdoor koji vam omogućuje izvršavanje koda koji je odredio napadač: app.get( '/network_health', async (req, res) = > { const { timeout,ㅤ} = req.query; // zapravo kaže "const { timeout,ㅤ \u3164}" const checkCommands = [ 'ping -c 1 google. com', 'curl -s http:// example.com/',ㅤ // zarez iza kojeg slijedi \u3164 ];

Na prvi pogled, kroz vanjski parametar prolazi samo vrijednost timeouta, a polje s naredbama koje treba izvršiti sadrži bezopasnu fiksnu listu. Ali zapravo, nakon isteka varijable, dodjeljuje se vrijednost druge nevidljive varijable sa kodom simbola \u3164, koja je također zamijenjena u nizu izvršnih naredbi. Stoga, u prisutnosti takve strukture, napadač može poslati zahtjev poput "https://host:8080/network_health?%E3%85%A4=command" za aktiviranje stražnjih vrata i izvršenje njegovog koda.

Kao još jedan primjer, dan je znak "ǃ" (ALVEOLARNI KLIK), koji se može koristiti za dojam da označava znak uzvika. Na primjer, izraz "if(environmentǃ=ENV_PROD){" kada se izvrši u Node.js 14 uvijek će biti istinit, jer ne provjerava razlike, već postavlja varijablu "environmentǃ" na ENV_PROD. Obmanjujući unicode znakovi uključuju "/", "−", "+", "⩵", "❨", "⫽", "꓿" i "∗".

Izvor: opennet.ru

Dodajte komentar