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

Nach der Trojan Source-Angriffs-Methode, die auf der Verwendung von Unicode-Zeichen basiert, die die Anzeigereihenfolge von bidirektionalem Text Ă€ndern, wurde eine weitere Technik zur Einbettung versteckter Aktionen veröffentlicht, die fĂŒr Code in JavaScript anwendbar ist. Diese neue Methode basiert auf der Verwendung des Unicode-Zeichens â€žă…€â€œ (Code 0x3164, „HANGUL FILLER“), das zu den Buchstaben gehört, aber keinen sichtbaren Inhalt hat. Die Unicode-Kategorie, zu der dieses Zeichen gehört, ist seit der Spezifikation ECMAScript 2015 fĂŒr die Verwendung in Variablennamen von JavaScript zulĂ€ssig, was es ermöglicht, unsichtbare Variablen oder neue Variablen zu erstellen, die sich nicht von anderen Variablen in beliebten Code-Editoren wie Notepad++ und VS Code unterscheiden lassen.

Als Beispiel wird Code fĂŒr die Node.js-Plattform angegeben, in dem durch eine Variablen, die aus einem 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 ];

Auf den ersten Blick wird ĂŒber den externen Parameter nur der Wert timeout ĂŒbergeben, wĂ€hrend das Array mit den auszufĂŒhrenden Befehlen eine harmlose, feste Liste enthĂ€lt. In Wirklichkeit wird jedoch nach der Variablen timeout einem weiteren unsichtbaren Parameter mit dem Zeichencode \u3164 ein Wert zugewiesen, der ebenfalls im Array der ausfĂŒhrbaren Befehle ersetzt wird. Auf diese Weise kann ein Angreifer bei der Verwendung einer solchen Konstruktion einen Request im Format „https://host:8080/network_health?=Befehl“ senden, um ein Backdoor zu aktivieren und seinen Code auszufĂŒhren.

Als weiteres Beispiel wird das Zeichen „ǃ“ (ALVEOLAR CLICK) angefĂŒhrt, das verwendet werden kann, um die Anzeichen eines Ausrufezeichens zu erzeugen. Beispielsweise wird der Ausdruck „if(environmentǃ=ENV_PROD){“ bei AusfĂŒhrung in Node.js 14 immer wahr sein, da dabei keine UnterschiedsprĂŒfung stattfindet, sondern der Variable „environmentǃ“ der Wert ENV_PROD zugewiesen wird. Zu den irrefĂŒhrenden Unicode-Zeichen gehören auch „“, „−“, „“, „⩔“, „❹“, „⫝̸“, â€žê“żâ€œ und „∗“.

Quelle: opennet.ru

ZuverlĂ€ssiges Hosting fĂŒr Websites mit DDoS-Schutz kaufen, VPS VDS Server đŸ”„ ZuverlĂ€ssiges Hosting fĂŒr Websites mit DDoS-Schutz kaufen, VPS VDS Server - ProHoster