Nggunakake karakter unicode sing ora katon kanggo ndhelikake tumindak ing kode JavaScript

Sawise metode serangan Sumber Trojan, sing adhedhasar panggunaan karakter Unicode sing ngganti urutan tampilan teks bidirectional, teknik liya kanggo ngenalake tumindak sing didhelikake wis diterbitake, ditrapake kanggo kode JavaScript. Cara anyar iki adhedhasar panggunaan karakter unicode "γ…€" (kode 0x3164, "HANGUL FILLER"), sing kalebu ing kategori huruf, nanging ora ana konten sing katon. Kategori Unicode sing nduweni karakter iki wis diidini wiwit spesifikasi ECMAScript 2015 kanggo digunakake ing jeneng variabel JavaScript, saengga bisa nggawe variabel sing ora katon utawa variabel anyar sing ora bisa dibedakake karo variabel liyane ing editor kode populer kayata Notepad ++ lan VS Code.

Contone, kode kanggo platform Node.js diwenehi, sing nggunakake variabel sing dumadi saka karakter siji "γ…€", lawang mburi didhelikake sing ngidini nglakokake kode sing ditemtokake dening panyerang: app.get('/ network_health', async (req, res) => {const {timeout,γ…€} = req.query; // nyatane ngandika "const {timeout,γ…€ \u3164}" const checkCommands = [ 'ping -c 1 google. com', 'curl -s http:// example.com/',γ…€ // koma diterusake karakter \u3164 ];

Sepisanan, mung nilai wektu entek sing dilewati liwat parameter eksternal, lan larik kanthi printah sing bakal ditindakake ngemot dhaptar tetep sing ora mbebayani. Nanging nyatane, sawise variabel wektu entek, nilai variabel liyane sing ora katon kanthi kode karakter \u3164 ditugasake, sing uga diganti dadi array perintah sing bisa dieksekusi. Dadi, yen desain kasebut kasedhiya, panyerang bisa ngirim panjaluk kaya "https://host:8080/network_health?%E3%85%A4=command" kanggo ngaktifake lawang mburi lan nglakokake kode kasebut.

Conto liyane yaiku karakter "Ηƒ" (ALVEOLAR KLIK), sing bisa digunakake kanggo menehi tampilan sing nuduhake tanda seru. Contone, ekspresi "yen (environmentΗƒ=ENV_PROD){" nalika dieksekusi ing Node.js 14 mesthi bener, amarga ora mriksa bedane, nanging menehi nilai ENV_PROD menyang variabel "environmentΗƒ". Karakter unicode liyane sing nyasabake kalebu "/", "βˆ’", "οΌ‹", "β©΅", "❨", "β«½", "κ“Ώ" lan "βˆ—".

Source: opennet.ru

Add a comment