Kutumia herufi za unikodi zisizoonekana kuficha vitendo katika msimbo wa JavaScript

Kufuatia mbinu ya shambulio la Chanzo cha Trojan, ambayo inategemea utumiaji wa herufi za Unicode zinazobadilisha mpangilio wa onyesho wa maandishi yanayoelekeza pande mbili, mbinu nyingine ya kuanzisha vitendo vilivyofichwa imechapishwa, inayotumika kwa msimbo wa JavaScript. Mbinu mpya inatokana na matumizi ya herufi ya unicode "γ…€" (msimbo 0x3164, "HANGUL FILLER"), ambayo ni ya aina ya herufi, lakini haina maudhui yanayoonekana. Kategoria ya Unicode ambayo herufi hii inahusika imeruhusiwa tangu vipimo vya ECMAScript 2015 kutumika katika majina tofauti ya JavaScript, na hivyo kufanya iwezekane kuunda vigeu visivyoonekana au vigeu vipya ambavyo haviwezi kutofautishwa na vipengee vingine katika vihariri vya msimbo maarufu kama vile Notepad++ na VS Code.

Kwa mfano, msimbo wa jukwaa la Node.js umetolewa, ambapo, kwa kutumia kigezo chenye herufi moja β€œγ…€β€, mlango wa nyuma umefichwa ambao unaruhusu kutekeleza msimbo uliobainishwa na mshambulizi: app.get('/ network_health', async (req, res) = > { const { timeout,γ…€} = req.query; // kwa kweli inasema β€œconst { timeout,γ…€ \u3164}” const checkCommands = [ 'ping -c 1 google. com', 'curl -s http:// example.com/',γ…€ // koma inafuatwa na herufi \u3164 ];

Kwa mtazamo wa kwanza, tu thamani ya muda wa kuisha hupitishwa kupitia kigezo cha nje, na safu iliyo na amri zinazopaswa kutekelezwa ina orodha isiyo na madhara. Lakini kwa kweli, baada ya kutofautisha kwa muda, thamani ya tofauti nyingine isiyoonekana na msimbo wa tabia \u3164 imepewa, ambayo pia inabadilishwa kuwa safu ya amri zinazoweza kutekelezwa. Kwa hivyo, ikiwa muundo kama huo unapatikana, mshambuliaji anaweza kutuma ombi kama vile β€œhttps://host:8080/network_health?%E3%85%A4=command” ili kuwezesha mlango wa nyuma na kutekeleza msimbo wake.

Mfano mwingine ni mhusika "Ηƒ" (ALVEOLAR CLICK), ambayo inaweza kutumika kutoa mwonekano wa kuonyesha alama ya mshangao. Kwa mfano, usemi "if(environmentΗƒ=ENV_PROD){" unapotekelezwa katika Node.js 14 utakuwa wa kweli kila wakati, kwa kuwa hauangalii tofauti, lakini hutoa thamani ya ENV_PROD kwa kigezo "mazingiraΗƒ". Herufi zingine zinazopotosha za unicode ni pamoja na "/", "βˆ’", "οΌ‹", "β©΅", "❨", "β«½", "κ“Ώ" na "βˆ—".

Chanzo: opennet.ru

Kuongeza maoni