JavaScript кодындағы әрекеттерді жасыру үшін көрінбейтін Юникод таңбаларын пайдалану

Екі жақты мәтінді көрсету ретін өзгертетін Юникод таңбаларын пайдалануға негізделген трояндық дереккөз шабуылы әдісінен кейін JavaScript кодына қолданылатын жасырын әрекеттерді енгізудің тағы бір әдісі жарияланды. Жаңа әдіс әріптер санатына жататын, бірақ көрінетін мазмұны жоқ «ㅤ» (коды 0x3164, «HANGUL FILLER») юникод таңбасын қолдануға негізделген. Бұл таңба жататын Юникод санаты ECMAScript 2015 спецификациясынан бері JavaScript айнымалы атауларында пайдалануға рұқсат етілген, бұл Notepad++ және VS Code сияқты танымал код өңдегіштеріндегі басқа айнымалылардан айырмашылығы жоқ көрінбейтін айнымалы мәндерді немесе жаңа айнымалы мәндерді жасауға мүмкіндік береді.

Мысал ретінде Node.js платформасының коды берілген, онда «ㅤ» бір таңбасынан тұратын айнымалы мәнді пайдаланып, шабуылдаушы көрсеткен кодты орындауға мүмкіндік беретін бэкдор жасырылған: app.get('/ network_health', async (req, res) = > { const { timeout,ㅤ} = req.query; // шын мәнінде ол “const { timeout,ㅤ \u3164}” дейді const checkCommands = [ 'ping -c 1 google. com', 'curl -s http:// example.com/',ㅤ // үтірден кейін \u3164 ] таңбасы қойылады;

Бір қарағанда, сыртқы параметр арқылы тек күту уақытының мәні ғана өтеді, ал орындалатын командалары бар массив зиянсыз бекітілген тізімді қамтиды. Бірақ шын мәнінде, күту уақытының айнымалысынан кейін таңба коды \u3164 басқа көрінбейтін айнымалының мәні тағайындалады, ол да орындалатын пәрмендер массивіне ауыстырылады. Осылайша, мұндай дизайн қол жетімді болса, шабуылдаушы бэкдорды белсендіру және өз кодын орындау үшін “https://host:8080/network_health?%E3%85%A4=command” сияқты сұрау жібере алады.

Тағы бір мысал «ǃ» (ALVEOLAR CLICK) таңбасы, ол леп белгісінің көрінісін беру үшін қолданылады. Мысалы, Node.js 14 ішінде орындалған "if(environmentǃ=ENV_PROD){" өрнегі әрқашан ақиқат болады, себебі ол айырмашылықтарды тексермейді, бірақ "environmentǃ" айнымалысына ENV_PROD мәнін тағайындайды. Басқа жаңылыстыратын Юникод таңбаларына "/", "−", "+", "⩵", "❨", "⫽", "꓿" және "∗" жатады.

Ақпарат көзі: opennet.ru

пікір қалдыру