UtilizΓ  caratteri Unicode invisibili per ammucciΓ  l'azzioni in u codice JavaScript

Π‘Π»Π΅Π΄ΠΎΠΌ Π·Π° ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠΌ Π°Ρ‚Π°ΠΊΠΈ Trojan Source, основанном Π½Π° ΠΏΡ€ΠΈΠΌΠ΅Π½Π΅Π½ΠΈΠΈ Unicode-символов, ΠΌΠ΅Π½ΡΡŽΡ‰ΠΈΡ… порядок отобраТСния Π΄Π²ΡƒΠ½Π°ΠΏΡ€Π°Π²Π»Π΅Π½Π½ΠΎΠ³ΠΎ тСкста, ΠΎΠΏΡƒΠ±Π»ΠΈΠΊΠΎΠ²Π°Π½Π° Π΅Ρ‰Ρ‘ ΠΎΠ΄Π½Π° Ρ‚Π΅Ρ…Π½ΠΈΠΊΠ° внСдрСния скрытых дСйствий, примСнимая для ΠΊΠΎΠ΄Π° Π½Π° языкС JavaScript. Новый ΠΌΠ΅Ρ‚ΠΎΠ΄ базируСтся Π½Π° ΠΏΡ€ΠΈΠΌΠ΅Π½Π΅Π½ΠΈΠΈ unicode-символа Β«γ…€Β» (ΠΊΠΎΠ΄ 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 ];

На ΠΏΠ΅Ρ€Π²Ρ‹ΠΉ взгляд Ρ‡Π΅Ρ€Π΅Π· внСшний ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ пСрСдаётся Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ timeout, Π° массив с выполняСмыми ΠΊΠΎΠΌΠ°Π½Π΄Π°ΠΌΠΈ содСрТит Π±Π΅Π·ΠΎΠ±ΠΈΠ΄Π½Ρ‹ΠΉ фиксированный список. Но Π½Π° Π΄Π΅Π»Π΅ послС ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ timeout присваиваСтся Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ Π΅Ρ‰Ρ‘ ΠΎΠ΄Π½ΠΎΠΉ Π½Π΅Π²ΠΈΠ΄ΠΈΠΌΠΎΠΉ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ с ΠΊΠΎΠ΄ΠΎΠΌ символа \u3164, которая Ρ‚Π°ΠΊΠΆΠ΅ подставлСна Π² массив исполняСмых ΠΊΠΎΠΌΠ°Π½Π΄. Π’Π°ΠΊΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ, ΠΏΡ€ΠΈ Π½Π°Π»ΠΈΡ‡ΠΈΠΈ ΠΏΠΎΠ΄ΠΎΠ±Π½ΠΎΠΉ конструкции для Π°ΠΊΡ‚ΠΈΠ²Π°Ρ†ΠΈΠΈ бэкдора ΠΈ выполнСния своСго ΠΊΠΎΠ΄Π° Π°Ρ‚Π°ΠΊΡƒΡŽΡ‰ΠΈΠΉ ΠΌΠΎΠΆΠ΅Ρ‚ ΠΎΡ‚ΠΏΡ€Π°Π²ΠΈΡ‚ΡŒ запрос Π²ΠΈΠ΄Π° Β«https://host:8080/network_health?%E3%85%A4=ΠΊΠΎΠΌΠ°Π½Π΄Π°Β».

Π’ качСствС Π΅Ρ‰Ρ‘ ΠΎΠ΄Π½ΠΎΠ³ΠΎ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π° приводится символ Β«ΗƒΒ» (ALVEOLAR CLICK), ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΌΠΎΠΆΠ΅Ρ‚ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒΡΡ для создания видимости указания Π²ΠΎΡΠΊΠ»ΠΈΡ†Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΠ³ΠΎ Π·Π½Π°ΠΊΠ°. НапримСр, Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅ Β«if(environmentΗƒ=ENV_PROD){Β» ΠΏΡ€ΠΈ Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠΈ Π² Node.js 14 всСгда Π±ΡƒΠ΄Π΅Ρ‚ истинным, Ρ‚Π°ΠΊ ΠΊΠ°ΠΊ Π² Π½Ρ‘ΠΌ осущСствляСтся Π½Π΅ ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠ° отличия, Π° присвоСниС ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ Β«environmentΗƒΒ» значСния ENV_PROD. Π‘Ρ€Π΅Π΄ΠΈ вводящих Π² Π·Π°Π±Π»ΡƒΠΆΠ΄Π΅Π½ΠΈΠ΅ unicode-символов, Ρ‚Π°ΠΊΠΆΠ΅ ΠΎΡ‚ΠΌΠ΅Ρ‡Π°ΡŽΡ‚ΡΡ «/», Β«βˆ’Β», Β«οΌ‹Β», Β«β©΅Β», «❨», Β«β«½Β», Β«κ“ΏΒ» ΠΈ Β«βˆ—Β».

Source: opennet.ru

Add a comment